Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
f0a37123
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
f0a37123
编写于
8月 03, 2021
作者:
H
Haojun Liao
提交者:
GitHub
8月 03, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #7106 from taosdata/fix/TD-5618
Fix/td 5618
上级
86329ad1
86a6a876
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
19 addition
and
11 deletion
+19
-11
src/inc/tsdb.h
src/inc/tsdb.h
+1
-1
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+4
-3
src/tsdb/inc/tsdbint.h
src/tsdb/inc/tsdbint.h
+2
-1
src/tsdb/src/tsdbCompact.c
src/tsdb/src/tsdbCompact.c
+9
-3
src/tsdb/src/tsdbMain.c
src/tsdb/src/tsdbMain.c
+2
-2
src/vnode/src/vnodeMgmt.c
src/vnode/src/vnodeMgmt.c
+1
-1
未找到文件。
src/inc/tsdb.h
浏览文件 @
f0a37123
...
...
@@ -94,7 +94,7 @@ STsdbRepo *tsdbOpenRepo(STsdbCfg *pCfg, STsdbAppH *pAppH);
int
tsdbCloseRepo
(
STsdbRepo
*
repo
,
int
toCommit
);
int32_t
tsdbConfigRepo
(
STsdbRepo
*
repo
,
STsdbCfg
*
pCfg
);
int
tsdbGetState
(
STsdbRepo
*
repo
);
bool
tsdbInCompact
(
STsdbRepo
*
repo
);
int8_t
tsdbGetCompactState
(
STsdbRepo
*
repo
);
// --------- TSDB TABLE DEFINITION
typedef
struct
{
uint64_t
uid
;
// the unique table ID
...
...
src/query/src/qExecutor.c
浏览文件 @
f0a37123
...
...
@@ -6661,19 +6661,20 @@ static SSDataBlock* hashDistinct(void* param, bool* newgroup) {
if
(
isNull
(
val
,
type
))
{
continue
;
}
char
*
p
=
val
;
size_t
keyLen
=
0
;
if
(
IS_VAR_DATA_TYPE
(
pOperator
->
pExpr
->
base
.
colType
))
{
tstr
*
var
=
(
tstr
*
)(
val
);
p
=
var
->
data
;
keyLen
=
varDataLen
(
var
);
}
else
{
keyLen
=
bytes
;
}
int
dummy
;
void
*
res
=
taosHashGet
(
pInfo
->
pSet
,
val
,
keyLen
);
void
*
res
=
taosHashGet
(
pInfo
->
pSet
,
p
,
keyLen
);
if
(
res
==
NULL
)
{
taosHashPut
(
pInfo
->
pSet
,
val
,
keyLen
,
&
dummy
,
sizeof
(
dummy
));
taosHashPut
(
pInfo
->
pSet
,
p
,
keyLen
,
&
dummy
,
sizeof
(
dummy
));
char
*
start
=
pResultColInfoData
->
pData
+
bytes
*
pInfo
->
pRes
->
info
.
rows
;
memcpy
(
start
,
val
,
bytes
);
pRes
->
info
.
rows
+=
1
;
...
...
src/tsdb/inc/tsdbint.h
浏览文件 @
f0a37123
...
...
@@ -94,8 +94,9 @@ struct STsdbRepo {
pthread_mutex_t
mutex
;
bool
repoLocked
;
int32_t
code
;
// Commit code
SMergeBuf
mergeBuf
;
//used when update=2
bool
inCompact
;
// is in compact process
?
int8_t
compactState
;
// compact state: inCompact/noCompact/waitingCompact
?
};
#define REPO_ID(r) (r)->config.tsdbId
...
...
src/tsdb/src/tsdbCompact.c
浏览文件 @
f0a37123
...
...
@@ -58,6 +58,7 @@ static int tsdbCompactFSetImpl(SCompactH *pComph);
static
int
tsdbWriteBlockToRightFile
(
SCompactH
*
pComph
,
STable
*
pTable
,
SDataCols
*
pDataCols
,
void
**
ppBuf
,
void
**
ppCBuf
);
enum
{
TSDB_NO_COMPACT
,
TSDB_IN_COMPACT
,
TSDB_WAITING_COMPACT
};
int
tsdbCompact
(
STsdbRepo
*
pRepo
)
{
return
tsdbAsyncCompact
(
pRepo
);
}
void
*
tsdbCompactImpl
(
STsdbRepo
*
pRepo
)
{
...
...
@@ -89,16 +90,21 @@ _err:
}
static
int
tsdbAsyncCompact
(
STsdbRepo
*
pRepo
)
{
if
(
pRepo
->
compactState
!=
TSDB_NO_COMPACT
)
{
tsdbInfo
(
"vgId:%d not compact tsdb again "
,
REPO_ID
(
pRepo
));
return
0
;
}
pRepo
->
compactState
=
TSDB_WAITING_COMPACT
;
tsem_wait
(
&
(
pRepo
->
readyToCommit
));
return
tsdbScheduleCommit
(
pRepo
,
COMPACT_REQ
);
}
static
void
tsdbStartCompact
(
STsdbRepo
*
pRepo
)
{
ASSERT
(
!
pRepo
->
inCompact
);
assert
(
pRepo
->
compactState
!=
TSDB_IN_COMPACT
);
tsdbInfo
(
"vgId:%d start to compact!"
,
REPO_ID
(
pRepo
));
tsdbStartFSTxn
(
pRepo
,
0
,
0
);
pRepo
->
code
=
TSDB_CODE_SUCCESS
;
pRepo
->
inCompact
=
true
;
pRepo
->
compactState
=
TSDB_IN_COMPACT
;
}
static
void
tsdbEndCompact
(
STsdbRepo
*
pRepo
,
int
eno
)
{
...
...
@@ -107,7 +113,7 @@ static void tsdbEndCompact(STsdbRepo *pRepo, int eno) {
}
else
{
tsdbEndFSTxn
(
pRepo
);
}
pRepo
->
inCompact
=
false
;
pRepo
->
compactState
=
TSDB_NO_COMPACT
;
tsdbInfo
(
"vgId:%d compact over, %s"
,
REPO_ID
(
pRepo
),
(
eno
==
TSDB_CODE_SUCCESS
)
?
"succeed"
:
"failed"
);
tsem_post
(
&
(
pRepo
->
readyToCommit
));
}
...
...
src/tsdb/src/tsdbMain.c
浏览文件 @
f0a37123
...
...
@@ -200,7 +200,7 @@ STsdbRepoInfo *tsdbGetStatus(STsdbRepo *pRepo) { return NULL; }
int
tsdbGetState
(
STsdbRepo
*
repo
)
{
return
repo
->
state
;
}
bool
tsdbInCompact
(
STsdbRepo
*
repo
)
{
return
repo
->
inCompact
;
}
int8_t
tsdbGetCompactState
(
STsdbRepo
*
repo
)
{
return
(
int8_t
)(
repo
->
compactState
)
;
}
void
tsdbReportStat
(
void
*
repo
,
int64_t
*
totalPoints
,
int64_t
*
totalStorage
,
int64_t
*
compStorage
)
{
ASSERT
(
repo
!=
NULL
);
...
...
@@ -541,7 +541,7 @@ static STsdbRepo *tsdbNewRepo(STsdbCfg *pCfg, STsdbAppH *pAppH) {
pRepo
->
state
=
TSDB_STATE_OK
;
pRepo
->
code
=
TSDB_CODE_SUCCESS
;
pRepo
->
inCompact
=
false
;
pRepo
->
compactState
=
0
;
pRepo
->
config
=
*
pCfg
;
if
(
pAppH
)
{
pRepo
->
appH
=
*
pAppH
;
...
...
src/vnode/src/vnodeMgmt.c
浏览文件 @
f0a37123
...
...
@@ -162,7 +162,7 @@ static void vnodeBuildVloadMsg(SVnodeObj *pVnode, SStatusMsg *pStatus) {
pLoad
->
status
=
pVnode
->
status
;
pLoad
->
role
=
pVnode
->
role
;
pLoad
->
replica
=
pVnode
->
syncCfg
.
replica
;
pLoad
->
compact
=
(
pVnode
->
tsdb
!=
NULL
)
&&
tsdbInCompact
(
pVnode
->
tsdb
)
?
1
:
0
;
pLoad
->
compact
=
(
pVnode
->
tsdb
!=
NULL
)
?
tsdbGetCompactState
(
pVnode
->
tsdb
)
:
0
;
}
int32_t
vnodeGetVnodeList
(
int32_t
vnodeList
[],
int32_t
*
numOfVnodes
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录