Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
555a99bf
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
555a99bf
编写于
9月 26, 2022
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: dump sdb info from mnode
上级
1cbd1f4c
变更
9
显示空白变更内容
内联
并排
Showing
9 changed file
with
692 addition
and
31 deletion
+692
-31
include/dnode/mnode/mnode.h
include/dnode/mnode/mnode.h
+2
-0
source/dnode/mgmt/exe/dmMain.c
source/dnode/mgmt/exe/dmMain.c
+12
-0
source/dnode/mnode/impl/inc/mndStb.h
source/dnode/mnode/impl/inc/mndStb.h
+2
-0
source/dnode/mnode/impl/src/mndConsumer.c
source/dnode/mnode/impl/src/mndConsumer.c
+9
-7
source/dnode/mnode/impl/src/mndDump.c
source/dnode/mnode/impl/src/mndDump.c
+645
-0
source/dnode/mnode/impl/src/mndFunc.c
source/dnode/mnode/impl/src/mndFunc.c
+9
-7
source/dnode/mnode/impl/src/mndStb.c
source/dnode/mnode/impl/src/mndStb.c
+11
-0
source/dnode/mnode/sdb/src/sdbHash.c
source/dnode/mnode/sdb/src/sdbHash.c
+2
-0
utils/test/c/CMakeLists.txt
utils/test/c/CMakeLists.txt
+0
-17
未找到文件。
include/dnode/mnode/mnode.h
浏览文件 @
555a99bf
...
...
@@ -106,6 +106,8 @@ void mndPostProcessQueryMsg(SRpcMsg *pMsg);
*/
void
mndGenerateMachineCode
();
void
mndDumpSdb
();
#ifdef __cplusplus
}
#endif
...
...
source/dnode/mgmt/exe/dmMain.c
浏览文件 @
555a99bf
...
...
@@ -16,6 +16,7 @@
#define _DEFAULT_SOURCE
#include "dmMgmt.h"
#include "tconfig.h"
#include "mnode.h"
#define DM_APOLLO_URL "The apollo string to use when configuring the server, such as: -a 'jsonFile:./tests/cfg.json', cfg.json text can be '{\"fqdn\":\"td1\"}'."
#define DM_CFG_DIR "Configuration directory."
...
...
@@ -31,6 +32,7 @@ static struct {
bool
winServiceMode
;
#endif
bool
dumpConfig
;
bool
dumpSdb
;
bool
generateGrant
;
bool
printAuth
;
bool
printVersion
;
...
...
@@ -82,6 +84,8 @@ static int32_t dmParseArgs(int32_t argc, char const *argv[]) {
}
}
else
if
(
strcmp
(
argv
[
i
],
"-a"
)
==
0
)
{
tstrncpy
(
global
.
apolloUrl
,
argv
[
++
i
],
PATH_MAX
);
}
else
if
(
strcmp
(
argv
[
i
],
"-s"
)
==
0
)
{
global
.
dumpSdb
=
true
;
}
else
if
(
strcmp
(
argv
[
i
],
"-E"
)
==
0
)
{
tstrncpy
(
global
.
envFile
,
argv
[
++
i
],
PATH_MAX
);
}
else
if
(
strcmp
(
argv
[
i
],
"-n"
)
==
0
)
{
...
...
@@ -229,6 +233,14 @@ int mainWindows(int argc,char** argv) {
return
0
;
}
if
(
global
.
dumpSdb
)
{
mndDumpSdb
();
taosCleanupCfg
();
taosCloseLog
();
taosCleanupArgs
();
return
0
;
}
dmSetProcInfo
(
argc
,
(
char
**
)
argv
);
taosCleanupArgs
();
...
...
source/dnode/mnode/impl/inc/mndStb.h
浏览文件 @
555a99bf
...
...
@@ -40,6 +40,8 @@ int32_t mndBuildSMCreateStbRsp(SMnode *pMnode, char* dbFName, char* stbFName, vo
void
mndExtractDbNameFromStbFullName
(
const
char
*
stbFullName
,
char
*
dst
);
void
mndExtractTbNameFromStbFullName
(
const
char
*
stbFullName
,
char
*
dst
,
int32_t
dstSize
);
const
char
*
mndGetStbStr
(
const
char
*
src
);
#ifdef __cplusplus
}
#endif
...
...
source/dnode/mnode/impl/src/mndConsumer.c
浏览文件 @
555a99bf
...
...
@@ -54,13 +54,15 @@ static int32_t mndProcessConsumerLostMsg(SRpcMsg *pMsg);
static
int32_t
mndProcessConsumerRecoverMsg
(
SRpcMsg
*
pMsg
);
int32_t
mndInitConsumer
(
SMnode
*
pMnode
)
{
SSdbTable
table
=
{.
sdbType
=
SDB_CONSUMER
,
SSdbTable
table
=
{
.
sdbType
=
SDB_CONSUMER
,
.
keyType
=
SDB_KEY_INT64
,
.
encodeFp
=
(
SdbEncodeFp
)
mndConsumerActionEncode
,
.
decodeFp
=
(
SdbDecodeFp
)
mndConsumerActionDecode
,
.
insertFp
=
(
SdbInsertFp
)
mndConsumerActionInsert
,
.
updateFp
=
(
SdbUpdateFp
)
mndConsumerActionUpdate
,
.
deleteFp
=
(
SdbDeleteFp
)
mndConsumerActionDelete
};
.
deleteFp
=
(
SdbDeleteFp
)
mndConsumerActionDelete
,
};
mndSetMsgHandle
(
pMnode
,
TDMT_MND_SUBSCRIBE
,
mndProcessSubscribeReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_MND_MQ_HB
,
mndProcessMqHbReq
);
...
...
utils/test/c/sdb
Dump.c
→
source/dnode/mnode/impl/src/mnd
Dump.c
浏览文件 @
555a99bf
...
...
@@ -14,26 +14,18 @@
*/
#define _DEFAULT_SOURCE
#include "
dmMgmt
.h"
#include "
mndDb
.h"
#include "mndInt.h"
#include "mndStb.h"
#include "sdb.h"
#include "tconfig.h"
#include "tjson.h"
#include "ttypes.h"
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-result"
#define TMP_DNODE_DIR TD_TMP_DIR_PATH "dumpsdb"
#define TMP_MNODE_DIR TD_TMP_DIR_PATH "dumpsdb" TD_DIRSEP "mnode"
#define TMP_SDB_DATA_DIR TD_TMP_DIR_PATH "dumpsdb" TD_DIRSEP "mnode" TD_DIRSEP "data"
#define TMP_SDB_SYNC_DIR TD_TMP_DIR_PATH "dumpsdb" TD_DIRSEP "mnode" TD_DIRSEP "sync"
#define TMP_SDB_MNODE_JSON TD_TMP_DIR_PATH "dumpsdb" TD_DIRSEP "mnode" TD_DIRSEP "mnode.json"
#define TMP_SDB_DATA_FILE TD_TMP_DIR_PATH "dumpsdb" TD_DIRSEP "mnode" TD_DIRSEP "data" TD_DIRSEP "sdb.data"
#define TMP_SDB_RAFT_CFG_FILE TD_TMP_DIR_PATH "dumpsdb" TD_DIRSEP "mnode" TD_DIRSEP "sync" TD_DIRSEP "raft_config.json"
#define TMP_SDB_RAFT_STORE_FILE TD_TMP_DIR_PATH "dumpsdb" TD_DIRSEP "mnode" TD_DIRSEP "sync" TD_DIRSEP "raft_store.json"
void
reportStartup
(
const
char
*
name
,
const
char
*
desc
)
{}
void
sendRsp
(
SRpcMsg
*
pMsg
)
{
rpcFreeCont
(
pMsg
->
pCont
);
}
int32_t
sendReq
(
const
SEpSet
*
pEpSet
,
SRpcMsg
*
pMsg
)
{
...
...
@@ -47,7 +39,31 @@ char *i642str(int64_t val) {
return
str
;
}
void
dumpFunc
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
void
dumpFunc
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"funcs"
);
while
(
1
)
{
SFuncObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_FUNC
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"name"
,
pObj
->
name
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddIntegerToObject
(
item
,
"funcType"
,
pObj
->
funcType
);
tjsonAddIntegerToObject
(
item
,
"scriptType"
,
pObj
->
scriptType
);
tjsonAddIntegerToObject
(
item
,
"align"
,
pObj
->
align
);
tjsonAddIntegerToObject
(
item
,
"outputType"
,
pObj
->
outputType
);
tjsonAddIntegerToObject
(
item
,
"outputLen"
,
pObj
->
outputLen
);
tjsonAddIntegerToObject
(
item
,
"bufSize"
,
pObj
->
bufSize
);
tjsonAddStringToObject
(
item
,
"signature"
,
i642str
(
pObj
->
signature
));
tjsonAddIntegerToObject
(
item
,
"commentSize"
,
pObj
->
commentSize
);
tjsonAddIntegerToObject
(
item
,
"codeSize"
,
pObj
->
codeSize
);
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpDb
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
...
...
@@ -62,7 +78,7 @@ void dumpDb(SSdb *pSdb, SJson *json) {
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToObject
(
items
,
"db"
,
item
);
tjsonAddStringToObject
(
item
,
"name"
,
pObj
->
name
);
tjsonAddStringToObject
(
item
,
"name"
,
mndGetDbStr
(
pObj
->
name
)
);
tjsonAddStringToObject
(
item
,
"acct"
,
pObj
->
acct
);
tjsonAddStringToObject
(
item
,
"createUser"
,
pObj
->
createUser
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
...
...
@@ -88,7 +104,10 @@ void dumpDb(SSdb *pSdb, SJson *json) {
tjsonAddIntegerToObject
(
item
,
"strict"
,
pObj
->
cfg
.
strict
);
tjsonAddIntegerToObject
(
item
,
"cacheLast"
,
pObj
->
cfg
.
cacheLast
);
tjsonAddIntegerToObject
(
item
,
"hashMethod"
,
pObj
->
cfg
.
hashMethod
);
tjsonAddIntegerToObject
(
item
,
"numOfRetensions"
,
pObj
->
cfg
.
numOfRetensions
);
tjsonAddIntegerToObject
(
item
,
"hashPrefix"
,
pObj
->
cfg
.
hashPrefix
);
tjsonAddIntegerToObject
(
item
,
"hashSuffix"
,
pObj
->
cfg
.
hashSuffix
);
tjsonAddIntegerToObject
(
item
,
"sstTrigger"
,
pObj
->
cfg
.
sstTrigger
);
tjsonAddIntegerToObject
(
item
,
"tsdbPageSize"
,
pObj
->
cfg
.
tsdbPageSize
);
tjsonAddIntegerToObject
(
item
,
"schemaless"
,
pObj
->
cfg
.
schemaless
);
tjsonAddIntegerToObject
(
item
,
"walLevel"
,
pObj
->
cfg
.
walLevel
);
tjsonAddIntegerToObject
(
item
,
"walFsyncPeriod"
,
pObj
->
cfg
.
walFsyncPeriod
);
...
...
@@ -97,14 +116,26 @@ void dumpDb(SSdb *pSdb, SJson *json) {
tjsonAddIntegerToObject
(
item
,
"walRollPeriod"
,
pObj
->
cfg
.
walRollPeriod
);
tjsonAddIntegerToObject
(
item
,
"walSegmentSize"
,
pObj
->
cfg
.
walSegmentSize
);
tjsonAddIntegerToObject
(
item
,
"numOfRetensions"
,
pObj
->
cfg
.
numOfRetensions
);
for
(
int32_t
i
=
0
;
i
<
pObj
->
cfg
.
numOfRetensions
;
++
i
)
{
SJson
*
rentensions
=
tjsonAddArrayToObject
(
item
,
"rentensions"
);
SJson
*
rentension
=
tjsonCreateObject
();
tjsonAddItemToArray
(
rentensions
,
rentension
);
SRetention
*
pRetension
=
taosArrayGet
(
pObj
->
cfg
.
pRetensions
,
i
);
tjsonAddStringToObject
(
item
,
"freq"
,
i642str
(
pRetension
->
freq
));
tjsonAddIntegerToObject
(
item
,
"freqUnit"
,
pRetension
->
freqUnit
);
tjsonAddStringToObject
(
item
,
"keep"
,
i642str
(
pRetension
->
keep
));
tjsonAddIntegerToObject
(
item
,
"keepUnit"
,
pRetension
->
keepUnit
);
}
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpStb
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonCreateObject
();
tjsonAddItemToObject
(
json
,
"stbs"
,
items
);
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"stbs"
);
while
(
1
)
{
SStbObj
*
pObj
=
NULL
;
...
...
@@ -112,50 +143,247 @@ void dumpStb(SSdb *pSdb, SJson *json) {
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToObject
(
items
,
"stb"
,
item
);
tjsonAddStringToObject
(
item
,
"name"
,
pObj
->
name
);
tjsonAddStringToObject
(
item
,
"db"
,
pObj
->
db
);
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"name"
,
mndGetStbStr
(
pObj
->
name
));
tjsonAddStringToObject
(
item
,
"db"
,
mndGetDbStr
(
pObj
->
db
));
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
tjsonAddStringToObject
(
item
,
"uid"
,
i642str
(
pObj
->
uid
));
tjsonAddStringToObject
(
item
,
"dbUid"
,
i642str
(
pObj
->
dbUid
));
tjsonAddIntegerToObject
(
item
,
"tagVer"
,
pObj
->
tagVer
);
tjsonAddIntegerToObject
(
item
,
"colVer"
,
pObj
->
colVer
);
tjsonAddIntegerToObject
(
item
,
"smaVer"
,
pObj
->
smaVer
);
tjsonAddIntegerToObject
(
item
,
"nextColId"
,
pObj
->
nextColId
);
tjsonAddIntegerToObject
(
item
,
"watermark1"
,
pObj
->
watermark
[
0
]);
tjsonAddIntegerToObject
(
item
,
"watermark2"
,
pObj
->
watermark
[
1
]);
tjsonAddIntegerToObject
(
item
,
"maxdelay
1
"
,
pObj
->
maxdelay
[
0
]);
tjsonAddIntegerToObject
(
item
,
"maxdelay
2
"
,
pObj
->
maxdelay
[
1
]);
tjsonAddIntegerToObject
(
item
,
"maxdelay
0
"
,
pObj
->
maxdelay
[
0
]);
tjsonAddIntegerToObject
(
item
,
"maxdelay
1
"
,
pObj
->
maxdelay
[
1
]);
tjsonAddIntegerToObject
(
item
,
"ttl"
,
pObj
->
ttl
);
tjsonAddIntegerToObject
(
item
,
"numOfColumns"
,
pObj
->
numOfColumns
);
tjsonAddIntegerToObject
(
item
,
"numOfTags"
,
pObj
->
numOfTags
);
tjsonAddIntegerToObject
(
item
,
"numOfFuncs"
,
pObj
->
numOfFuncs
);
tjsonAddIntegerToObject
(
item
,
"commentLen"
,
pObj
->
commentLen
);
tjsonAddIntegerToObject
(
item
,
"ast1Len"
,
pObj
->
ast1Len
);
tjsonAddIntegerToObject
(
item
,
"ast2Len"
,
pObj
->
ast2Len
);
tjsonAddIntegerToObject
(
item
,
"numOfColumns"
,
pObj
->
numOfColumns
);
SJson
*
columns
=
tjsonAddArrayToObject
(
item
,
"columns"
);
for
(
int32_t
i
=
0
;
i
<
pObj
->
numOfColumns
;
++
i
)
{
SJson
*
column
=
tjsonCreateObject
();
tjsonAddItemToArray
(
columns
,
column
);
SSchema
*
pColumn
=
&
pObj
->
pColumns
[
i
];
tjsonAddIntegerToObject
(
column
,
"type"
,
pColumn
->
type
);
tjsonAddStringToObject
(
column
,
"typestr"
,
tDataTypes
[
pColumn
->
type
].
name
);
tjsonAddIntegerToObject
(
column
,
"flags"
,
pColumn
->
flags
);
tjsonAddIntegerToObject
(
column
,
"colId"
,
pColumn
->
colId
);
tjsonAddIntegerToObject
(
column
,
"bytes"
,
pColumn
->
bytes
);
tjsonAddStringToObject
(
column
,
"name"
,
pColumn
->
name
);
}
tjsonAddIntegerToObject
(
item
,
"numOfTags"
,
pObj
->
numOfTags
);
SJson
*
tags
=
tjsonAddArrayToObject
(
item
,
"tags"
);
for
(
int32_t
i
=
0
;
i
<
pObj
->
numOfTags
;
++
i
)
{
SJson
*
tag
=
tjsonCreateObject
();
tjsonAddItemToArray
(
tags
,
tag
);
SSchema
*
pTag
=
&
pObj
->
pTags
[
i
];
tjsonAddIntegerToObject
(
tag
,
"type"
,
pTag
->
type
);
tjsonAddStringToObject
(
tag
,
"typestr"
,
tDataTypes
[
pTag
->
type
].
name
);
tjsonAddIntegerToObject
(
tag
,
"flags"
,
pTag
->
flags
);
tjsonAddIntegerToObject
(
tag
,
"colId"
,
pTag
->
colId
);
tjsonAddIntegerToObject
(
tag
,
"bytes"
,
pTag
->
bytes
);
tjsonAddStringToObject
(
tag
,
"name"
,
pTag
->
name
);
}
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpSma
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"smas"
);
while
(
1
)
{
SSmaObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_SMA
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"name"
,
mndGetStbStr
(
pObj
->
name
));
tjsonAddStringToObject
(
item
,
"stb"
,
mndGetStbStr
(
pObj
->
stb
));
tjsonAddStringToObject
(
item
,
"db"
,
mndGetDbStr
(
pObj
->
db
));
tjsonAddStringToObject
(
item
,
"dstTbName"
,
mndGetStbStr
(
pObj
->
dstTbName
));
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"uid"
,
i642str
(
pObj
->
uid
));
tjsonAddStringToObject
(
item
,
"stbUid"
,
i642str
(
pObj
->
stbUid
));
tjsonAddStringToObject
(
item
,
"dbUid"
,
i642str
(
pObj
->
dbUid
));
tjsonAddStringToObject
(
item
,
"dstTbUid"
,
i642str
(
pObj
->
dstTbUid
));
tjsonAddIntegerToObject
(
item
,
"intervalUnit"
,
pObj
->
intervalUnit
);
tjsonAddIntegerToObject
(
item
,
"slidingUnit"
,
pObj
->
slidingUnit
);
tjsonAddIntegerToObject
(
item
,
"timezone"
,
pObj
->
timezone
);
tjsonAddIntegerToObject
(
item
,
"dstVgId"
,
pObj
->
dstVgId
);
tjsonAddStringToObject
(
item
,
"interval"
,
i642str
(
pObj
->
interval
));
tjsonAddStringToObject
(
item
,
"offset"
,
i642str
(
pObj
->
offset
));
tjsonAddStringToObject
(
item
,
"sliding"
,
i642str
(
pObj
->
sliding
));
tjsonAddIntegerToObject
(
item
,
"exprLen"
,
pObj
->
exprLen
);
tjsonAddIntegerToObject
(
item
,
"tagsFilterLen"
,
pObj
->
tagsFilterLen
);
tjsonAddIntegerToObject
(
item
,
"sqlLen"
,
pObj
->
sqlLen
);
tjsonAddIntegerToObject
(
item
,
"astLen"
,
pObj
->
astLen
);
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpVgroup
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"vgroups"
);
while
(
1
)
{
SVgObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_VGROUP
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddIntegerToObject
(
item
,
"vgId"
,
pObj
->
vgId
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
tjsonAddIntegerToObject
(
item
,
"version"
,
pObj
->
version
);
tjsonAddIntegerToObject
(
item
,
"hashBegin"
,
pObj
->
hashBegin
);
tjsonAddIntegerToObject
(
item
,
"hashEnd"
,
pObj
->
hashEnd
);
tjsonAddStringToObject
(
item
,
"db"
,
mndGetDbStr
(
pObj
->
dbName
));
tjsonAddStringToObject
(
item
,
"dbUid"
,
i642str
(
pObj
->
dbUid
));
tjsonAddIntegerToObject
(
item
,
"isTsma"
,
pObj
->
isTsma
);
tjsonAddIntegerToObject
(
item
,
"replica"
,
pObj
->
replica
);
for
(
int32_t
i
=
0
;
i
<
pObj
->
replica
;
++
i
)
{
SJson
*
replicas
=
tjsonAddArrayToObject
(
item
,
"replicas"
);
SJson
*
replica
=
tjsonCreateObject
();
tjsonAddItemToArray
(
replicas
,
replica
);
tjsonAddIntegerToObject
(
replica
,
"dnodeId"
,
pObj
->
vnodeGid
[
i
].
dnodeId
);
}
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpSma
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
void
dumpTopic
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"topics"
);
void
dumpVgroup
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
while
(
1
)
{
SMqTopicObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_TOPIC
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
void
dumpTopic
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"name"
,
mndGetDbStr
(
pObj
->
name
));
tjsonAddStringToObject
(
item
,
"name"
,
mndGetDbStr
(
pObj
->
db
));
tjsonAddStringToObject
(
item
,
"createTime"
,
i642str
(
pObj
->
createTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
tjsonAddStringToObject
(
item
,
"uid"
,
i642str
(
pObj
->
uid
));
tjsonAddStringToObject
(
item
,
"dbUid"
,
i642str
(
pObj
->
dbUid
));
tjsonAddIntegerToObject
(
item
,
"version"
,
pObj
->
version
);
tjsonAddIntegerToObject
(
item
,
"subType"
,
pObj
->
subType
);
tjsonAddIntegerToObject
(
item
,
"withMeta"
,
pObj
->
withMeta
);
tjsonAddStringToObject
(
item
,
"stbUid"
,
i642str
(
pObj
->
stbUid
));
tjsonAddIntegerToObject
(
item
,
"sqlLen"
,
pObj
->
sqlLen
);
tjsonAddIntegerToObject
(
item
,
"astLen"
,
pObj
->
astLen
);
tjsonAddIntegerToObject
(
item
,
"sqlLen"
,
pObj
->
sqlLen
);
tjsonAddStringToObject
(
item
,
"ntbUid"
,
i642str
(
pObj
->
ntbUid
));
tjsonAddStringToObject
(
item
,
"ctbStbUid"
,
i642str
(
pObj
->
ctbStbUid
));
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpConsumber
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
void
dumpConsumer
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"consumers"
);
void
dumpSubscribe
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
while
(
1
)
{
SMqConsumerObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_CONSUMER
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
void
dumpOffset
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"consumerId"
,
i642str
(
pObj
->
consumerId
));
tjsonAddStringToObject
(
item
,
"cgroup"
,
pObj
->
cgroup
);
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpStream
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
void
dumpSubscribe
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"subscribes"
);
while
(
1
)
{
SMqSubscribeObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_SUBSCRIBE
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"key"
,
pObj
->
key
);
tjsonAddStringToObject
(
item
,
"dbUid"
,
i642str
(
pObj
->
dbUid
));
tjsonAddStringToObject
(
item
,
"stbUid"
,
i642str
(
pObj
->
stbUid
));
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpOffset
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"offsets"
);
while
(
1
)
{
SMqOffsetObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_OFFSET
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"key"
,
pObj
->
key
);
tjsonAddStringToObject
(
item
,
"dbUid"
,
i642str
(
pObj
->
dbUid
));
tjsonAddStringToObject
(
item
,
"offset"
,
i642str
(
pObj
->
offset
));
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpStream
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"streams"
);
while
(
1
)
{
SStreamObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_STREAM
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"name"
,
mndGetDbStr
(
pObj
->
name
));
tjsonAddStringToObject
(
item
,
"createTime"
,
i642str
(
pObj
->
createTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
tjsonAddIntegerToObject
(
item
,
"version"
,
pObj
->
version
);
tjsonAddIntegerToObject
(
item
,
"totalLevel"
,
pObj
->
totalLevel
);
tjsonAddStringToObject
(
item
,
"smaId"
,
i642str
(
pObj
->
smaId
));
tjsonAddStringToObject
(
item
,
"uid"
,
i642str
(
pObj
->
uid
));
tjsonAddIntegerToObject
(
item
,
"status"
,
pObj
->
status
);
tjsonAddIntegerToObject
(
item
,
"igExpired"
,
pObj
->
igExpired
);
tjsonAddIntegerToObject
(
item
,
"trigger"
,
pObj
->
trigger
);
tjsonAddStringToObject
(
item
,
"triggerParam"
,
i642str
(
pObj
->
triggerParam
));
tjsonAddStringToObject
(
item
,
"watermark"
,
i642str
(
pObj
->
watermark
));
tjsonAddStringToObject
(
item
,
"sourceDbUid"
,
i642str
(
pObj
->
sourceDbUid
));
tjsonAddStringToObject
(
item
,
"targetDbUid"
,
i642str
(
pObj
->
targetDbUid
));
tjsonAddStringToObject
(
item
,
"sourceDb"
,
mndGetDbStr
(
pObj
->
sourceDb
));
tjsonAddStringToObject
(
item
,
"targetDb"
,
mndGetDbStr
(
pObj
->
targetDb
));
tjsonAddStringToObject
(
item
,
"targetSTbName"
,
mndGetStbStr
(
pObj
->
targetSTbName
));
tjsonAddStringToObject
(
item
,
"targetStbUid"
,
i642str
(
pObj
->
targetStbUid
));
tjsonAddStringToObject
(
item
,
"fixedSinkVgId"
,
i642str
(
pObj
->
fixedSinkVgId
));
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpAcct
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonCreateObject
();
tjsonAddItemToObject
(
json
,
"accts"
,
items
);
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"accts"
);
while
(
1
)
{
SAcctObj
*
pObj
=
NULL
;
...
...
@@ -163,23 +391,22 @@ void dumpAcct(SSdb *pSdb, SJson *json) {
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToObject
(
items
,
"acct"
,
item
);
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"acct"
,
pObj
->
acct
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
tjsonAddIntegerToObject
(
item
,
"acctId"
,
pObj
->
acctId
);
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpAuth
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
void
dumpAuth
(
SSdb
*
pSdb
,
SJson
*
json
)
{
// todo
}
void
dumpUser
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonCreateObject
();
tjsonAddItemToObject
(
json
,
"users"
,
items
);
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"users"
);
while
(
1
)
{
SUserObj
*
pObj
=
NULL
;
...
...
@@ -187,10 +414,8 @@ void dumpUser(SSdb *pSdb, SJson *json) {
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToObject
(
items
,
"user"
,
item
);
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"name"
,
pObj
->
user
);
tjsonAddStringToObject
(
item
,
"pass"
,
pObj
->
pass
);
tjsonAddStringToObject
(
item
,
"acct"
,
pObj
->
acct
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
...
...
@@ -198,15 +423,13 @@ void dumpUser(SSdb *pSdb, SJson *json) {
tjsonAddIntegerToObject
(
item
,
"authVersion"
,
pObj
->
authVersion
);
tjsonAddIntegerToObject
(
item
,
"numOfReadDbs"
,
taosHashGetSize
(
pObj
->
readDbs
));
tjsonAddIntegerToObject
(
item
,
"numOfWriteDbs"
,
taosHashGetSize
(
pObj
->
writeDbs
));
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpDnode
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonCreateObject
();
tjsonAddItemToObject
(
json
,
"dnodes"
,
items
);
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"dnodes"
);
while
(
1
)
{
SDnodeObj
*
pObj
=
NULL
;
...
...
@@ -214,28 +437,59 @@ void dumpDnode(SSdb *pSdb, SJson *json) {
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToObject
(
items
,
"dnode"
,
item
);
tjsonAddItemToArray
(
items
,
item
);
tjsonAddIntegerToObject
(
item
,
"id"
,
pObj
->
id
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
tjsonAddIntegerToObject
(
item
,
"port"
,
pObj
->
port
);
tjsonAddStringToObject
(
item
,
"fqdn"
,
pObj
->
fqdn
);
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpBnode
(
SSdb
*
pSdb
,
SJson
*
json
)
{
// not implemented yet
}
void
dumpSnode
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"snodes"
);
while
(
1
)
{
SSnodeObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_QNODE
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddIntegerToObject
(
item
,
"id"
,
pObj
->
id
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpBnode
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
void
dumpQnode
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"qnodes"
);
void
dumpSnode
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
while
(
1
)
{
SQnodeObj
*
pObj
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_QNODE
,
pIter
,
(
void
**
)
&
pObj
);
if
(
pIter
==
NULL
)
break
;
void
dumpQnode
(
SSdb
*
pSdb
,
SJson
*
json
)
{}
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToArray
(
items
,
item
);
tjsonAddIntegerToObject
(
item
,
"id"
,
pObj
->
id
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpMnode
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonCreateObject
();
tjsonAddItemToObject
(
json
,
"mnodes"
,
items
);
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"mnodes"
);
while
(
1
)
{
SMnodeObj
*
pObj
=
NULL
;
...
...
@@ -243,20 +497,17 @@ void dumpMnode(SSdb *pSdb, SJson *json) {
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToObject
(
items
,
"mnode"
,
item
);
tjsonAddItemToArray
(
items
,
item
);
tjsonAddIntegerToObject
(
item
,
"id"
,
pObj
->
id
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpCluster
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonCreateObject
();
tjsonAddItemToObject
(
json
,
"clusters"
,
items
);
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"clusters"
);
while
(
1
)
{
SClusterObj
*
pObj
=
NULL
;
...
...
@@ -264,21 +515,18 @@ void dumpCluster(SSdb *pSdb, SJson *json) {
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToObject
(
items
,
"cluster"
,
item
);
tjsonAddItemToArray
(
items
,
item
);
tjsonAddStringToObject
(
item
,
"id"
,
i642str
(
pObj
->
id
));
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"updateTime"
,
i642str
(
pObj
->
updateTime
));
tjsonAddStringToObject
(
item
,
"name"
,
pObj
->
name
);
sdbRelease
(
pSdb
,
pObj
);
}
}
void
dumpTrans
(
SSdb
*
pSdb
,
SJson
*
json
)
{
void
*
pIter
=
NULL
;
SJson
*
items
=
tjsonCreateObject
();
tjsonAddItemToObject
(
json
,
"transactions"
,
items
);
SJson
*
items
=
tjsonAddArrayToObject
(
json
,
"transactions"
);
while
(
1
)
{
STrans
*
pObj
=
NULL
;
...
...
@@ -286,20 +534,20 @@ void dumpTrans(SSdb *pSdb, SJson *json) {
if
(
pIter
==
NULL
)
break
;
SJson
*
item
=
tjsonCreateObject
();
tjsonAddItemToObject
(
items
,
"trans"
,
item
);
tjsonAddItemToArray
(
items
,
item
);
tjsonAddIntegerToObject
(
item
,
"id"
,
pObj
->
id
);
tjsonAddIntegerToObject
(
item
,
"stage"
,
pObj
->
stage
);
tjsonAddIntegerToObject
(
item
,
"policy"
,
pObj
->
policy
);
tjsonAddIntegerToObject
(
item
,
"conflict"
,
pObj
->
conflict
);
tjsonAddIntegerToObject
(
item
,
"exec"
,
pObj
->
exec
);
tjsonAddIntegerToObject
(
item
,
"oper"
,
pObj
->
oper
);
tjsonAddStringToObject
(
item
,
"createdTime"
,
i642str
(
pObj
->
createdTime
));
tjsonAddStringToObject
(
item
,
"dbname"
,
pObj
->
dbname
);
tjsonAddStringToObject
(
item
,
"stbname"
,
pObj
->
stbname
);
tjsonAddStringToObject
(
item
,
"opername"
,
pObj
->
opername
);
tjsonAddIntegerToObject
(
item
,
"commitLogNum"
,
taosArrayGetSize
(
pObj
->
commitActions
));
tjsonAddIntegerToObject
(
item
,
"redoActionNum"
,
taosArrayGetSize
(
pObj
->
redoActions
));
tjsonAddIntegerToObject
(
item
,
"undoActionNum"
,
taosArrayGetSize
(
pObj
->
undoActions
));
sdbRelease
(
pSdb
,
pObj
);
}
}
...
...
@@ -331,10 +579,11 @@ void dumpHeader(SSdb *pSdb, SJson *json) {
}
}
int32_t
dumpSdb
()
{
wDebugFlag
=
0
;
mDebugFlag
=
0
;
sDebugFlag
=
0
;
void
mndDumpSdb
()
{
mInfo
(
"start to dump sdb info to sdb.json"
);
char
path
[
PATH_MAX
*
2
]
=
{
0
};
snprintf
(
path
,
sizeof
(
path
),
"%s%smnode"
,
tsDataDir
,
TD_DIRSEP
);
SMsgCb
msgCb
=
{
0
};
msgCb
.
reportStartupFp
=
reportStartup
;
...
...
@@ -342,12 +591,13 @@ int32_t dumpSdb() {
msgCb
.
sendRspFp
=
sendRsp
;
msgCb
.
mgmt
=
(
SMgmtWrapper
*
)(
&
msgCb
);
// hack
tmsgSetDefault
(
&
msgCb
);
walInit
();
syncInit
();
SMnodeOpt
opt
=
{.
msgCb
=
msgCb
};
SMnode
*
pMnode
=
mndOpen
(
TMP_MNODE_DIR
,
&
opt
);
if
(
pMnode
==
NULL
)
return
-
1
;
SMnode
*
pMnode
=
mndOpen
(
path
,
&
opt
);
if
(
pMnode
==
NULL
)
return
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SJson
*
json
=
tjsonCreateObject
();
...
...
@@ -358,7 +608,7 @@ int32_t dumpSdb() {
dumpSma
(
pSdb
,
json
);
dumpVgroup
(
pSdb
,
json
);
dumpTopic
(
pSdb
,
json
);
dumpConsum
b
er
(
pSdb
,
json
);
dumpConsumer
(
pSdb
,
json
);
dumpSubscribe
(
pSdb
,
json
);
dumpOffset
(
pSdb
,
json
);
dumpStream
(
pSdb
,
json
);
...
...
@@ -379,8 +629,8 @@ int32_t dumpSdb() {
TdFilePtr
pFile
=
taosOpenFile
(
file
,
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_TRUNC
);
if
(
pFile
==
NULL
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
d
Error
(
"failed to write %s since %s"
,
file
,
terrstr
());
return
-
1
;
m
Error
(
"failed to write %s since %s"
,
file
,
terrstr
());
return
;
}
taosWriteFile
(
pFile
,
pCont
,
contLen
);
taosWriteFile
(
pFile
,
"
\n
"
,
1
);
...
...
@@ -388,88 +638,8 @@ int32_t dumpSdb() {
taosCloseFile
(
&
pFile
);
tjsonDelete
(
json
);
taosMemoryFree
(
pCont
);
taosRemoveDir
(
TMP_DNODE_DIR
);
return
0
;
}
int32_t
parseArgs
(
int32_t
argc
,
char
*
argv
[])
{
for
(
int32_t
i
=
1
;
i
<
argc
;
++
i
)
{
if
(
strcmp
(
argv
[
i
],
"-c"
)
==
0
)
{
if
(
i
<
argc
-
1
)
{
if
(
strlen
(
argv
[
++
i
])
>=
PATH_MAX
)
{
printf
(
"config file path overflow"
);
return
-
1
;
}
tstrncpy
(
configDir
,
argv
[
i
],
PATH_MAX
);
}
else
{
printf
(
"'-c' requires a parameter, default is %s
\n
"
,
configDir
);
return
-
1
;
}
}
else
{
printf
(
"-c Configuration directory.
\n
"
);
return
-
1
;
}
}
if
(
taosCreateLog
(
"dumplog"
,
1
,
configDir
,
NULL
,
NULL
,
NULL
,
NULL
,
1
)
!=
0
)
{
printf
(
"failed to dump since init log error
\n
"
);
return
-
1
;
}
if
(
taosInitCfg
(
configDir
,
NULL
,
NULL
,
NULL
,
NULL
,
0
)
!=
0
)
{
printf
(
"failed to dump since read config error
\n
"
);
return
-
1
;
}
char
mnodeJson
[
PATH_MAX
]
=
{
0
};
char
dataFile
[
PATH_MAX
]
=
{
0
};
char
raftCfgFile
[
PATH_MAX
]
=
{
0
};
char
raftStoreFile
[
PATH_MAX
]
=
{
0
};
snprintf
(
mnodeJson
,
PATH_MAX
,
"%s"
TD_DIRSEP
"mnode"
TD_DIRSEP
"mnode.json"
,
tsDataDir
);
snprintf
(
dataFile
,
PATH_MAX
,
"%s"
TD_DIRSEP
"mnode"
TD_DIRSEP
"data"
TD_DIRSEP
"sdb.data"
,
tsDataDir
);
snprintf
(
raftCfgFile
,
PATH_MAX
,
"%s"
TD_DIRSEP
"mnode"
TD_DIRSEP
"sync"
TD_DIRSEP
"raft_config.json"
,
tsDataDir
);
snprintf
(
raftStoreFile
,
PATH_MAX
,
"%s"
TD_DIRSEP
"mnode"
TD_DIRSEP
"sync"
TD_DIRSEP
"raft_store.json"
,
tsDataDir
);
char
cmd
[
PATH_MAX
*
2
]
=
{
0
};
snprintf
(
cmd
,
sizeof
(
cmd
),
"rm -rf %s"
,
TMP_DNODE_DIR
);
system
(
cmd
);
#ifdef WINDOWS
taosMulMkDir
(
TMP_SDB_DATA_DIR
);
taosMulMkDir
(
TMP_SDB_SYNC_DIR
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"cp %s %s 2>nul"
,
mnodeJson
,
TMP_SDB_MNODE_JSON
);
system
(
cmd
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"cp %s %s 2>nul"
,
dataFile
,
TMP_SDB_DATA_FILE
);
system
(
cmd
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"cp %s %s 2>nul"
,
raftCfgFile
,
TMP_SDB_RAFT_CFG_FILE
);
system
(
cmd
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"cp %s %s 2>nul"
,
raftStoreFile
,
TMP_SDB_RAFT_STORE_FILE
);
system
(
cmd
);
#else
snprintf
(
cmd
,
sizeof
(
cmd
),
"mkdir -p %s"
,
TMP_SDB_DATA_DIR
);
system
(
cmd
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"mkdir -p %s"
,
TMP_SDB_SYNC_DIR
);
system
(
cmd
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"cp %s %s 2>/dev/null"
,
mnodeJson
,
TMP_SDB_MNODE_JSON
);
system
(
cmd
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"cp %s %s 2>/dev/null"
,
dataFile
,
TMP_SDB_DATA_FILE
);
system
(
cmd
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"cp %s %s 2>/dev/null"
,
raftCfgFile
,
TMP_SDB_RAFT_CFG_FILE
);
system
(
cmd
);
snprintf
(
cmd
,
sizeof
(
cmd
),
"cp %s %s 2>/dev/null"
,
raftStoreFile
,
TMP_SDB_RAFT_STORE_FILE
);
system
(
cmd
);
#endif
strcpy
(
tsDataDir
,
TMP_DNODE_DIR
);
return
0
;
}
int32_t
main
(
int32_t
argc
,
char
*
argv
[])
{
if
(
parseArgs
(
argc
,
argv
)
!=
0
)
{
return
-
1
;
}
return
dumpSdb
(
);
mInfo
(
"dump sdb info success"
);
}
#pragma GCC diagnostic pop
source/dnode/mnode/impl/src/mndFunc.c
浏览文件 @
555a99bf
...
...
@@ -38,13 +38,15 @@ static int32_t mndRetrieveFuncs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
static
void
mndCancelGetNextFunc
(
SMnode
*
pMnode
,
void
*
pIter
);
int32_t
mndInitFunc
(
SMnode
*
pMnode
)
{
SSdbTable
table
=
{.
sdbType
=
SDB_FUNC
,
SSdbTable
table
=
{
.
sdbType
=
SDB_FUNC
,
.
keyType
=
SDB_KEY_BINARY
,
.
encodeFp
=
(
SdbEncodeFp
)
mndFuncActionEncode
,
.
decodeFp
=
(
SdbDecodeFp
)
mndFuncActionDecode
,
.
insertFp
=
(
SdbInsertFp
)
mndFuncActionInsert
,
.
updateFp
=
(
SdbUpdateFp
)
mndFuncActionUpdate
,
.
deleteFp
=
(
SdbDeleteFp
)
mndFuncActionDelete
};
.
deleteFp
=
(
SdbDeleteFp
)
mndFuncActionDelete
,
};
mndSetMsgHandle
(
pMnode
,
TDMT_MND_CREATE_FUNC
,
mndProcessCreateFuncReq
);
mndSetMsgHandle
(
pMnode
,
TDMT_MND_DROP_FUNC
,
mndProcessDropFuncReq
);
...
...
source/dnode/mnode/impl/src/mndStb.c
浏览文件 @
555a99bf
...
...
@@ -2579,3 +2579,14 @@ static void mndCancelGetNextStb(SMnode *pMnode, void *pIter) {
SSdb
*
pSdb
=
pMnode
->
pSdb
;
sdbCancelFetch
(
pSdb
,
pIter
);
}
const
char
*
mndGetStbStr
(
const
char
*
src
)
{
char
*
posDb
=
strstr
(
src
,
TS_PATH_DELIMITER
);
if
(
posDb
!=
NULL
)
++
posDb
;
if
(
posDb
==
NULL
)
return
src
;
char
*
posStb
=
strstr
(
posDb
,
TS_PATH_DELIMITER
);
if
(
posStb
!=
NULL
)
++
posStb
;
if
(
posStb
==
NULL
)
return
posDb
;
return
posStb
;
}
\ No newline at end of file
source/dnode/mnode/sdb/src/sdbHash.c
浏览文件 @
555a99bf
...
...
@@ -40,6 +40,8 @@ const char *sdbTableName(ESdbType type) {
return
"auth"
;
case
SDB_ACCT
:
return
"acct"
;
case
SDB_STREAM_CK
:
return
"stream_ck"
;
case
SDB_STREAM
:
return
"stream"
;
case
SDB_OFFSET
:
...
...
utils/test/c/CMakeLists.txt
浏览文件 @
555a99bf
...
...
@@ -40,20 +40,3 @@ target_link_libraries(
PUBLIC common
PUBLIC os
)
add_executable
(
sdbDump sdbDump.c
)
target_link_libraries
(
sdbDump
PUBLIC dnode
PUBLIC mnode
PUBLIC stream
PUBLIC sdb
PUBLIC os
)
target_include_directories
(
sdbDump
PUBLIC
"
${
TD_SOURCE_DIR
}
/include/dnode/mnode"
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mnode/impl/inc"
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mnode/sdb/inc"
PRIVATE
"
${
TD_SOURCE_DIR
}
/source/dnode/mgmt/node_mgmt/inc"
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录