Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
d3927b54
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
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看板
提交
d3927b54
编写于
12月 30, 2021
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve the error handling of mnode
上级
c9b8e748
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
948 addition
and
668 deletion
+948
-668
include/dnode/mnode/sdb/sdb.h
include/dnode/mnode/sdb/sdb.h
+39
-90
source/dnode/mgmt/impl/test/db/db.cpp
source/dnode/mgmt/impl/test/db/db.cpp
+1
-1
source/dnode/mnode/impl/src/mndAcct.c
source/dnode/mnode/impl/src/mndAcct.c
+60
-35
source/dnode/mnode/impl/src/mndBnode.c
source/dnode/mnode/impl/src/mndBnode.c
+65
-40
source/dnode/mnode/impl/src/mndCluster.c
source/dnode/mnode/impl/src/mndCluster.c
+46
-21
source/dnode/mnode/impl/src/mndConsumer.c
source/dnode/mnode/impl/src/mndConsumer.c
+47
-26
source/dnode/mnode/impl/src/mndDb.c
source/dnode/mnode/impl/src/mndDb.c
+89
-64
source/dnode/mnode/impl/src/mndDnode.c
source/dnode/mnode/impl/src/mndDnode.c
+48
-23
source/dnode/mnode/impl/src/mndFunc.c
source/dnode/mnode/impl/src/mndFunc.c
+61
-36
source/dnode/mnode/impl/src/mndMnode.c
source/dnode/mnode/impl/src/mndMnode.c
+44
-19
source/dnode/mnode/impl/src/mndQnode.c
source/dnode/mnode/impl/src/mndQnode.c
+43
-18
source/dnode/mnode/impl/src/mndSnode.c
source/dnode/mnode/impl/src/mndSnode.c
+43
-18
source/dnode/mnode/impl/src/mndStb.c
source/dnode/mnode/impl/src/mndStb.c
+75
-50
source/dnode/mnode/impl/src/mndTopic.c
source/dnode/mnode/impl/src/mndTopic.c
+68
-45
source/dnode/mnode/impl/src/mndTrans.c
source/dnode/mnode/impl/src/mndTrans.c
+118
-129
source/dnode/mnode/impl/src/mndUser.c
source/dnode/mnode/impl/src/mndUser.c
+44
-21
source/dnode/mnode/impl/src/mndVgroup.c
source/dnode/mnode/impl/src/mndVgroup.c
+57
-32
未找到文件。
include/dnode/mnode/sdb/sdb.h
浏览文件 @
d3927b54
...
@@ -22,121 +22,70 @@
...
@@ -22,121 +22,70 @@
extern
"C"
{
extern
"C"
{
#endif
#endif
#define SDB_GET_INT64(pData, pRow, dataPos, val) \
#define SDB_GET_VAL(pData, dataPos, val, pos, func, type) \
{ \
{ \
if (sdbGetRawInt64(pRaw, dataPos, val) != 0) { \
if (func(pRaw, dataPos, val) != 0) { \
tfree(pRow); \
goto pos; \
return NULL; \
} \
} \
dataPos += sizeof(type); \
dataPos += sizeof(int64_t); \
}
}
#define SDB_GET_INT32(pData, pRow, dataPos, val) \
#define SDB_GET_BINARY(pRaw, dataPos, val, valLen, pos) \
{ \
if (sdbGetRawInt32(pRaw, dataPos, val) != 0) { \
tfree(pRow); \
return NULL; \
} \
dataPos += sizeof(int32_t); \
}
#define SDB_GET_INT16(pData, pRow, dataPos, val) \
{ \
if (sdbGetRawInt16(pRaw, dataPos, val) != 0) { \
tfree(pRow); \
return NULL; \
} \
dataPos += sizeof(int16_t); \
}
#define SDB_GET_INT8(pData, pRow, dataPos, val) \
{ \
if (sdbGetRawInt8(pRaw, dataPos, val) != 0) { \
tfree(pRow); \
return NULL; \
} \
dataPos += sizeof(int8_t); \
}
#define SDB_GET_BINARY(pRaw, pRow, dataPos, val, valLen) \
{ \
{ \
if (sdbGetRawBinary(pRaw, dataPos, val, valLen) != 0) { \
if (sdbGetRawBinary(pRaw, dataPos, val, valLen) != 0) { \
tfree(pRow); \
goto pos; \
return NULL; \
} \
} \
dataPos += valLen; \
dataPos += valLen; \
}
}
#define SDB_GET_RESERVE(pRaw, pRow, dataPos, valLen) \
#define SDB_GET_INT64(pData, dataPos, val, pos) SDB_GET_VAL(pData, dataPos, val, pos, sdbGetRawInt64, int64_t)
{ \
char val[valLen] = {0}; \
if (sdbGetRawBinary(pRaw, dataPos, val, valLen) != 0) { \
tfree(pRow); \
return NULL; \
} \
dataPos += valLen; \
}
#define SDB_SET_INT64(pRaw, dataPos, val) \
#define SDB_GET_INT32(pData, dataPos, val, pos) SDB_GET_VAL(pData, dataPos, val, pos, sdbGetRawInt32, int32_t)
{ \
if (sdbSetRawInt64(pRaw, dataPos, val) != 0) { \
sdbFreeRaw(pRaw); \
return NULL; \
} \
dataPos += sizeof(int64_t); \
}
#define SDB_SET_INT32(pRaw, dataPos, val) \
#define SDB_GET_INT16(pData, dataPos, val, pos) SDB_GET_VAL(pData, dataPos, val, pos, sdbGetRawInt16, int16_t)
{ \
if (sdbSetRawInt32(pRaw, dataPos, val) != 0) { \
#define SDB_GET_INT8(pData, dataPos, val, pos) SDB_GET_VAL(pData, dataPos, val, pos, sdbGetRawInt8, int8_t)
sdbFreeRaw(pRaw); \
return NULL; \
} \
dataPos += sizeof(int32_t); \
}
#define SDB_SET_INT16(pRaw, dataPos, val) \
#define SDB_GET_RESERVE(pRaw, dataPos, valLen, pos) \
{ \
{ \
if (sdbSetRawInt16(pRaw, dataPos, val) != 0) { \
char val[valLen] = {0}; \
sdbFreeRaw(pRaw); \
SDB_GET_BINARY(pRaw, dataPos, val, valLen, pos) \
return NULL; \
} \
dataPos += sizeof(int16_t); \
}
}
#define SDB_SET_INT8(pRaw, dataPos, val) \
#define SDB_SET_VAL(pRaw, dataPos, val, pos, func, type) \
{ \
{ \
if (sdbSetRawInt8(pRaw, dataPos, val) != 0) { \
if (func(pRaw, dataPos, val) != 0) { \
sdbFreeRaw(pRaw); \
goto pos; \
return NULL; \
} \
} \
dataPos += sizeof(type); \
dataPos += sizeof(int8_t); \
}
}
#define SDB_SET_BINARY(pRaw, dataPos, val, valLen) \
#define SDB_SET_INT64(pRaw, dataPos, val, pos) SDB_SET_VAL(pRaw, dataPos, val, pos, sdbSetRawInt64, int64_t)
#define SDB_SET_INT32(pRaw, dataPos, val, pos) SDB_SET_VAL(pRaw, dataPos, val, pos, sdbSetRawInt32, int32_t)
#define SDB_SET_INT16(pRaw, dataPos, val, pos) SDB_SET_VAL(pRaw, dataPos, val, pos, sdbSetRawInt16, int16_t)
#define SDB_SET_INT8(pRaw, dataPos, val, pos) SDB_SET_VAL(pRaw, dataPos, val, pos, sdbSetRawInt8, int8_t)
#define SDB_SET_BINARY(pRaw, dataPos, val, valLen, pos) \
{ \
{ \
if (sdbSetRawBinary(pRaw, dataPos, val, valLen) != 0) { \
if (sdbSetRawBinary(pRaw, dataPos, val, valLen) != 0) { \
sdbFreeRaw(pRaw); \
goto pos; \
return NULL; \
} \
} \
dataPos += valLen; \
dataPos += valLen; \
}
}
#define SDB_SET_RESERVE(pRaw, dataPos, valLen) \
#define SDB_SET_RESERVE(pRaw, dataPos, valLen, pos) \
{ \
{ \
char val[valLen] = {0}; \
char val[valLen] = {0}; \
if (sdbSetRawBinary(pRaw, dataPos, val, valLen) != 0) { \
SDB_SET_BINARY(pRaw, dataPos, val, valLen, pos) \
sdbFreeRaw(pRaw); \
return NULL; \
} \
dataPos += valLen; \
}
}
#define SDB_SET_DATALEN(pRaw, dataLen
)
\
#define SDB_SET_DATALEN(pRaw, dataLen
, pos)
\
{ \
{ \
if (sdbSetRawDataLen(pRaw, dataLen) != 0) { \
if (sdbSetRawDataLen(pRaw, dataLen) != 0) { \
sdbFreeRaw(pRaw); \
goto pos; \
return NULL; \
} \
} \
}
}
...
...
source/dnode/mgmt/impl/test/db/db.cpp
浏览文件 @
d3927b54
...
@@ -115,8 +115,8 @@ TEST_F(DndTestDb, 02_Create_Alter_Drop_Db) {
...
@@ -115,8 +115,8 @@ TEST_F(DndTestDb, 02_Create_Alter_Drop_Db) {
test
.
SendShowRetrieveMsg
();
test
.
SendShowRetrieveMsg
();
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
EXPECT_EQ
(
test
.
GetShowRows
(),
2
);
CheckInt32
(
1
);
CheckInt32
(
2
);
CheckInt32
(
2
);
CheckInt32
(
3
);
CheckInt32
(
0
);
CheckInt32
(
0
);
CheckInt32
(
0
);
CheckInt32
(
0
);
CheckInt16
(
1
);
CheckInt16
(
1
);
...
...
source/dnode/mnode/impl/src/mndAcct.c
浏览文件 @
d3927b54
...
@@ -66,75 +66,100 @@ static int32_t mndCreateDefaultAcct(SMnode *pMnode) {
...
@@ -66,75 +66,100 @@ static int32_t mndCreateDefaultAcct(SMnode *pMnode) {
if
(
pRaw
==
NULL
)
return
-
1
;
if
(
pRaw
==
NULL
)
return
-
1
;
sdbSetRawStatus
(
pRaw
,
SDB_STATUS_READY
);
sdbSetRawStatus
(
pRaw
,
SDB_STATUS_READY
);
mDebug
(
"acct:%s, will be created while deploy sdb
"
,
acctObj
.
acct
);
mDebug
(
"acct:%s, will be created while deploy sdb
, raw:%p"
,
acctObj
.
acct
,
pRaw
);
return
sdbWrite
(
pMnode
->
pSdb
,
pRaw
);
return
sdbWrite
(
pMnode
->
pSdb
,
pRaw
);
}
}
static
SSdbRaw
*
mndAcctActionEncode
(
SAcctObj
*
pAcct
)
{
static
SSdbRaw
*
mndAcctActionEncode
(
SAcctObj
*
pAcct
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_ACCT
,
TSDB_ACCT_VER_NUMBER
,
sizeof
(
SAcctObj
)
+
TSDB_ACCT_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_ACCT
,
TSDB_ACCT_VER_NUMBER
,
sizeof
(
SAcctObj
)
+
TSDB_ACCT_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
ACCT_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pAcct
->
acct
,
TSDB_USER_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pAcct
->
acct
,
TSDB_USER_LEN
,
ACCT_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pAcct
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pAcct
->
createdTime
,
ACCT_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pAcct
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pAcct
->
updateTime
,
ACCT_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
acctId
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
acctId
,
ACCT_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
status
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
status
,
ACCT_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxUsers
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxUsers
,
ACCT_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxDbs
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxDbs
,
ACCT_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxTimeSeries
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxTimeSeries
,
ACCT_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxStreams
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxStreams
,
ACCT_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxStorage
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
maxStorage
,
ACCT_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
accessState
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAcct
->
cfg
.
accessState
,
ACCT_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_ACCT_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_ACCT_RESERVE_SIZE
,
ACCT_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
ACCT_ENCODE_OVER
)
terrno
=
0
;
ACCT_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"acct:%s, failed to encode to raw:%p since %s"
,
pAcct
->
acct
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"acct:%s, encode to raw:%p, row:%p"
,
pAcct
->
acct
,
pRaw
,
pAcct
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndAcctActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndAcctActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
ACCT_DECODE_OVER
;
if
(
sver
!=
TSDB_ACCT_VER_NUMBER
)
{
if
(
sver
!=
TSDB_ACCT_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode acct since %s"
,
terrstr
());
goto
ACCT_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SAcctObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SAcctObj
));
if
(
pRow
==
NULL
)
goto
ACCT_DECODE_OVER
;
SAcctObj
*
pAcct
=
sdbGetRowObj
(
pRow
);
SAcctObj
*
pAcct
=
sdbGetRowObj
(
pRow
);
if
(
pAcct
==
NULL
)
return
NULL
;
if
(
pAcct
==
NULL
)
goto
ACCT_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pAcct
->
acct
,
TSDB_USER_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pAcct
->
acct
,
TSDB_USER_LEN
,
ACCT_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pAcct
->
createdTime
,
ACCT_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pAcct
->
updateTime
,
ACCT_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
acctId
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pAcct
->
acctId
,
ACCT_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
status
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pAcct
->
status
,
ACCT_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
cfg
.
maxUsers
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pAcct
->
cfg
.
maxUsers
,
ACCT_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
cfg
.
maxDbs
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pAcct
->
cfg
.
maxDbs
,
ACCT_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
cfg
.
maxTimeSeries
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pAcct
->
cfg
.
maxTimeSeries
,
ACCT_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
cfg
.
maxStreams
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pAcct
->
cfg
.
maxStreams
,
ACCT_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
cfg
.
maxStorage
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pAcct
->
cfg
.
maxStorage
,
ACCT_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pAcct
->
cfg
.
accessState
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pAcct
->
cfg
.
accessState
,
ACCT_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_ACCT_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_ACCT_RESERVE_SIZE
,
ACCT_DECODE_OVER
)
terrno
=
0
;
ACCT_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"acct:%s, failed to decode from raw:%p since %s"
,
pAcct
->
acct
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"acct:%s, decode from raw:%p, row:%p"
,
pAcct
->
acct
,
pRaw
,
pAcct
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndAcctActionInsert
(
SSdb
*
pSdb
,
SAcctObj
*
pAcct
)
{
static
int32_t
mndAcctActionInsert
(
SSdb
*
pSdb
,
SAcctObj
*
pAcct
)
{
mTrace
(
"acct:%s, perform insert action
"
,
pAcct
->
a
cct
);
mTrace
(
"acct:%s, perform insert action
, row:%p"
,
pAcct
->
acct
,
pA
cct
);
return
0
;
return
0
;
}
}
static
int32_t
mndAcctActionDelete
(
SSdb
*
pSdb
,
SAcctObj
*
pAcct
)
{
static
int32_t
mndAcctActionDelete
(
SSdb
*
pSdb
,
SAcctObj
*
pAcct
)
{
mTrace
(
"acct:%s, perform delete action
"
,
pAcct
->
a
cct
);
mTrace
(
"acct:%s, perform delete action
, row:%p"
,
pAcct
->
acct
,
pA
cct
);
return
0
;
return
0
;
}
}
static
int32_t
mndAcctActionUpdate
(
SSdb
*
pSdb
,
SAcctObj
*
pOldAcct
,
SAcctObj
*
pNewAcct
)
{
static
int32_t
mndAcctActionUpdate
(
SSdb
*
pSdb
,
SAcctObj
*
pOldAcct
,
SAcctObj
*
pNewAcct
)
{
mTrace
(
"acct:%s, perform update action
"
,
pOldAcct
->
a
cct
);
mTrace
(
"acct:%s, perform update action
, old_row:%p new_row:%p"
,
pOldAcct
->
acct
,
pOldAcct
,
pNewA
cct
);
pOldAcct
->
updateTime
=
pNewAcct
->
updateTime
;
pOldAcct
->
updateTime
=
pNewAcct
->
updateTime
;
pOldAcct
->
status
=
pNewAcct
->
status
;
pOldAcct
->
status
=
pNewAcct
->
status
;
...
...
source/dnode/mnode/impl/src/mndBnode.c
浏览文件 @
d3927b54
...
@@ -58,9 +58,9 @@ int32_t mndInitBnode(SMnode *pMnode) {
...
@@ -58,9 +58,9 @@ int32_t mndInitBnode(SMnode *pMnode) {
void
mndCleanupBnode
(
SMnode
*
pMnode
)
{}
void
mndCleanupBnode
(
SMnode
*
pMnode
)
{}
static
SBnodeObj
*
mndAcquireBnode
(
SMnode
*
pMnode
,
int32_t
s
nodeId
)
{
static
SBnodeObj
*
mndAcquireBnode
(
SMnode
*
pMnode
,
int32_t
b
nodeId
)
{
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SBnodeObj
*
pObj
=
sdbAcquire
(
pSdb
,
SDB_BNODE
,
&
s
nodeId
);
SBnodeObj
*
pObj
=
sdbAcquire
(
pSdb
,
SDB_BNODE
,
&
b
nodeId
);
if
(
pObj
==
NULL
)
{
if
(
pObj
==
NULL
)
{
terrno
=
TSDB_CODE_MND_BNODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_BNODE_NOT_EXIST
;
}
}
...
@@ -73,47 +73,72 @@ static void mndReleaseBnode(SMnode *pMnode, SBnodeObj *pObj) {
...
@@ -73,47 +73,72 @@ static void mndReleaseBnode(SMnode *pMnode, SBnodeObj *pObj) {
}
}
static
SSdbRaw
*
mndBnodeActionEncode
(
SBnodeObj
*
pObj
)
{
static
SSdbRaw
*
mndBnodeActionEncode
(
SBnodeObj
*
pObj
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_BNODE
,
TSDB_BNODE_VER_NUMBER
,
sizeof
(
SBnodeObj
)
+
TSDB_BNODE_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_BNODE
,
TSDB_BNODE_VER_NUMBER
,
sizeof
(
SBnodeObj
)
+
TSDB_BNODE_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
BNODE_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_INT32
(
pRaw
,
dataPos
,
pObj
->
id
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pObj
->
id
,
BNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
createdTime
,
BNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
updateTime
,
BNODE_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_BNODE_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_BNODE_RESERVE_SIZE
,
BNODE_ENCODE_OVER
)
terrno
=
0
;
BNODE_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"bnode:%d, failed to encode to raw:%p since %s"
,
pObj
->
id
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"bnode:%d, encode to raw:%p, row:%p"
,
pObj
->
id
,
pRaw
,
pObj
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndBnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndBnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
BNODE_DECODE_OVER
;
if
(
sver
!=
TSDB_BNODE_VER_NUMBER
)
{
if
(
sver
!=
TSDB_BNODE_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode snode since %s"
,
terrstr
());
goto
BNODE_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SBnodeObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SBnodeObj
));
if
(
pRow
==
NULL
)
goto
BNODE_DECODE_OVER
;
SBnodeObj
*
pObj
=
sdbGetRowObj
(
pRow
);
SBnodeObj
*
pObj
=
sdbGetRowObj
(
pRow
);
if
(
pObj
==
NULL
)
return
NULL
;
if
(
pObj
==
NULL
)
goto
BNODE_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
id
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pObj
->
id
,
BNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pObj
->
createdTime
,
BNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pObj
->
updateTime
,
BNODE_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_BNODE_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_BNODE_RESERVE_SIZE
,
BNODE_DECODE_OVER
)
terrno
=
0
;
BNODE_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"bnode:%d, failed to decode from raw:%p since %s"
,
pObj
->
id
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"bnode:%d, decode from raw:%p, row:%p"
,
pObj
->
id
,
pRaw
,
pObj
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndBnodeActionInsert
(
SSdb
*
pSdb
,
SBnodeObj
*
pObj
)
{
static
int32_t
mndBnodeActionInsert
(
SSdb
*
pSdb
,
SBnodeObj
*
pObj
)
{
mTrace
(
"
snode:%d, perform insert action"
,
pObj
->
id
);
mTrace
(
"
bnode:%d, perform insert action, row:%p"
,
pObj
->
id
,
pObj
);
pObj
->
pDnode
=
sdbAcquire
(
pSdb
,
SDB_DNODE
,
&
pObj
->
id
);
pObj
->
pDnode
=
sdbAcquire
(
pSdb
,
SDB_DNODE
,
&
pObj
->
id
);
if
(
pObj
->
pDnode
==
NULL
)
{
if
(
pObj
->
pDnode
==
NULL
)
{
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
mError
(
"
s
node:%d, failed to perform insert action since %s"
,
pObj
->
id
,
terrstr
());
mError
(
"
b
node:%d, failed to perform insert action since %s"
,
pObj
->
id
,
terrstr
());
return
-
1
;
return
-
1
;
}
}
...
@@ -121,7 +146,7 @@ static int32_t mndBnodeActionInsert(SSdb *pSdb, SBnodeObj *pObj) {
...
@@ -121,7 +146,7 @@ static int32_t mndBnodeActionInsert(SSdb *pSdb, SBnodeObj *pObj) {
}
}
static
int32_t
mndBnodeActionDelete
(
SSdb
*
pSdb
,
SBnodeObj
*
pObj
)
{
static
int32_t
mndBnodeActionDelete
(
SSdb
*
pSdb
,
SBnodeObj
*
pObj
)
{
mTrace
(
"
snode:%d, perform delete action"
,
pObj
->
id
);
mTrace
(
"
bnode:%d, perform delete action, row:%p"
,
pObj
->
id
,
pObj
);
if
(
pObj
->
pDnode
!=
NULL
)
{
if
(
pObj
->
pDnode
!=
NULL
)
{
sdbRelease
(
pSdb
,
pObj
->
pDnode
);
sdbRelease
(
pSdb
,
pObj
->
pDnode
);
pObj
->
pDnode
=
NULL
;
pObj
->
pDnode
=
NULL
;
...
@@ -131,7 +156,7 @@ static int32_t mndBnodeActionDelete(SSdb *pSdb, SBnodeObj *pObj) {
...
@@ -131,7 +156,7 @@ static int32_t mndBnodeActionDelete(SSdb *pSdb, SBnodeObj *pObj) {
}
}
static
int32_t
mndBnodeActionUpdate
(
SSdb
*
pSdb
,
SBnodeObj
*
pOldBnode
,
SBnodeObj
*
pNewBnode
)
{
static
int32_t
mndBnodeActionUpdate
(
SSdb
*
pSdb
,
SBnodeObj
*
pOldBnode
,
SBnodeObj
*
pNewBnode
)
{
mTrace
(
"
snode:%d, perform update action"
,
pOldBnode
->
id
);
mTrace
(
"
bnode:%d, perform update action, old_row:%p new_row:%p"
,
pOldBnode
->
id
,
pOldBnode
,
pNewBnode
);
pOldBnode
->
updateTime
=
pNewBnode
->
updateTime
;
pOldBnode
->
updateTime
=
pNewBnode
->
updateTime
;
return
0
;
return
0
;
}
}
...
@@ -175,30 +200,30 @@ static int32_t mndSetCreateBnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, S
...
@@ -175,30 +200,30 @@ static int32_t mndSetCreateBnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, S
}
}
static
int32_t
mndCreateBnode
(
SMnode
*
pMnode
,
SMnodeMsg
*
pMsg
,
SDnodeObj
*
pDnode
,
SMCreateBnodeMsg
*
pCreate
)
{
static
int32_t
mndCreateBnode
(
SMnode
*
pMnode
,
SMnodeMsg
*
pMsg
,
SDnodeObj
*
pDnode
,
SMCreateBnodeMsg
*
pCreate
)
{
SBnodeObj
s
nodeObj
=
{
0
};
SBnodeObj
b
nodeObj
=
{
0
};
s
nodeObj
.
id
=
pDnode
->
id
;
b
nodeObj
.
id
=
pDnode
->
id
;
s
nodeObj
.
createdTime
=
taosGetTimestampMs
();
b
nodeObj
.
createdTime
=
taosGetTimestampMs
();
snodeObj
.
updateTime
=
s
nodeObj
.
createdTime
;
bnodeObj
.
updateTime
=
b
nodeObj
.
createdTime
;
int32_t
code
=
-
1
;
int32_t
code
=
-
1
;
STrans
*
pTrans
=
mndTransCreate
(
pMnode
,
TRN_POLICY_RETRY
,
&
pMsg
->
rpcMsg
);
STrans
*
pTrans
=
mndTransCreate
(
pMnode
,
TRN_POLICY_RETRY
,
&
pMsg
->
rpcMsg
);
if
(
pTrans
==
NULL
)
{
if
(
pTrans
==
NULL
)
{
mError
(
"
s
node:%d, failed to create since %s"
,
pCreate
->
dnodeId
,
terrstr
());
mError
(
"
b
node:%d, failed to create since %s"
,
pCreate
->
dnodeId
,
terrstr
());
goto
CREATE_BNODE_OVER
;
goto
CREATE_BNODE_OVER
;
}
}
mDebug
(
"trans:%d, used to create
s
node:%d"
,
pTrans
->
id
,
pCreate
->
dnodeId
);
mDebug
(
"trans:%d, used to create
b
node:%d"
,
pTrans
->
id
,
pCreate
->
dnodeId
);
if
(
mndSetCreateBnodeRedoLogs
(
pTrans
,
&
s
nodeObj
)
!=
0
)
{
if
(
mndSetCreateBnodeRedoLogs
(
pTrans
,
&
b
nodeObj
)
!=
0
)
{
mError
(
"trans:%d, failed to set redo log since %s"
,
pTrans
->
id
,
terrstr
());
mError
(
"trans:%d, failed to set redo log since %s"
,
pTrans
->
id
,
terrstr
());
goto
CREATE_BNODE_OVER
;
goto
CREATE_BNODE_OVER
;
}
}
if
(
mndSetCreateBnodeCommitLogs
(
pTrans
,
&
s
nodeObj
)
!=
0
)
{
if
(
mndSetCreateBnodeCommitLogs
(
pTrans
,
&
b
nodeObj
)
!=
0
)
{
mError
(
"trans:%d, failed to set commit log since %s"
,
pTrans
->
id
,
terrstr
());
mError
(
"trans:%d, failed to set commit log since %s"
,
pTrans
->
id
,
terrstr
());
goto
CREATE_BNODE_OVER
;
goto
CREATE_BNODE_OVER
;
}
}
if
(
mndSetCreateBnodeRedoActions
(
pTrans
,
pDnode
,
&
s
nodeObj
)
!=
0
)
{
if
(
mndSetCreateBnodeRedoActions
(
pTrans
,
pDnode
,
&
b
nodeObj
)
!=
0
)
{
mError
(
"trans:%d, failed to set redo actions since %s"
,
pTrans
->
id
,
terrstr
());
mError
(
"trans:%d, failed to set redo actions since %s"
,
pTrans
->
id
,
terrstr
());
goto
CREATE_BNODE_OVER
;
goto
CREATE_BNODE_OVER
;
}
}
...
@@ -221,18 +246,18 @@ static int32_t mndProcessCreateBnodeReq(SMnodeMsg *pMsg) {
...
@@ -221,18 +246,18 @@ static int32_t mndProcessCreateBnodeReq(SMnodeMsg *pMsg) {
pCreate
->
dnodeId
=
htonl
(
pCreate
->
dnodeId
);
pCreate
->
dnodeId
=
htonl
(
pCreate
->
dnodeId
);
mDebug
(
"
s
node:%d, start to create"
,
pCreate
->
dnodeId
);
mDebug
(
"
b
node:%d, start to create"
,
pCreate
->
dnodeId
);
SBnodeObj
*
pObj
=
mndAcquireBnode
(
pMnode
,
pCreate
->
dnodeId
);
SBnodeObj
*
pObj
=
mndAcquireBnode
(
pMnode
,
pCreate
->
dnodeId
);
if
(
pObj
!=
NULL
)
{
if
(
pObj
!=
NULL
)
{
mError
(
"
snode:%d, s
node already exist"
,
pObj
->
id
);
mError
(
"
bnode:%d, b
node already exist"
,
pObj
->
id
);
mndReleaseBnode
(
pMnode
,
pObj
);
mndReleaseBnode
(
pMnode
,
pObj
);
return
-
1
;
return
-
1
;
}
}
SDnodeObj
*
pDnode
=
mndAcquireDnode
(
pMnode
,
pCreate
->
dnodeId
);
SDnodeObj
*
pDnode
=
mndAcquireDnode
(
pMnode
,
pCreate
->
dnodeId
);
if
(
pDnode
==
NULL
)
{
if
(
pDnode
==
NULL
)
{
mError
(
"
s
node:%d, dnode not exist"
,
pCreate
->
dnodeId
);
mError
(
"
b
node:%d, dnode not exist"
,
pCreate
->
dnodeId
);
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
return
-
1
;
return
-
1
;
}
}
...
@@ -241,7 +266,7 @@ static int32_t mndProcessCreateBnodeReq(SMnodeMsg *pMsg) {
...
@@ -241,7 +266,7 @@ static int32_t mndProcessCreateBnodeReq(SMnodeMsg *pMsg) {
mndReleaseDnode
(
pMnode
,
pDnode
);
mndReleaseDnode
(
pMnode
,
pDnode
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
mError
(
"
s
node:%d, failed to create since %s"
,
pCreate
->
dnodeId
,
terrstr
());
mError
(
"
b
node:%d, failed to create since %s"
,
pCreate
->
dnodeId
,
terrstr
());
return
-
1
;
return
-
1
;
}
}
...
@@ -290,11 +315,11 @@ static int32_t mndDropBnode(SMnode *pMnode, SMnodeMsg *pMsg, SBnodeObj *pObj) {
...
@@ -290,11 +315,11 @@ static int32_t mndDropBnode(SMnode *pMnode, SMnodeMsg *pMsg, SBnodeObj *pObj) {
int32_t
code
=
-
1
;
int32_t
code
=
-
1
;
STrans
*
pTrans
=
mndTransCreate
(
pMnode
,
TRN_POLICY_RETRY
,
&
pMsg
->
rpcMsg
);
STrans
*
pTrans
=
mndTransCreate
(
pMnode
,
TRN_POLICY_RETRY
,
&
pMsg
->
rpcMsg
);
if
(
pTrans
==
NULL
)
{
if
(
pTrans
==
NULL
)
{
mError
(
"
s
node:%d, failed to drop since %s"
,
pObj
->
id
,
terrstr
());
mError
(
"
b
node:%d, failed to drop since %s"
,
pObj
->
id
,
terrstr
());
goto
DROP_BNODE_OVER
;
goto
DROP_BNODE_OVER
;
}
}
mDebug
(
"trans:%d, used to drop
s
node:%d"
,
pTrans
->
id
,
pObj
->
id
);
mDebug
(
"trans:%d, used to drop
b
node:%d"
,
pTrans
->
id
,
pObj
->
id
);
if
(
mndSetDropBnodeRedoLogs
(
pTrans
,
pObj
)
!=
0
)
{
if
(
mndSetDropBnodeRedoLogs
(
pTrans
,
pObj
)
!=
0
)
{
mError
(
"trans:%d, failed to set redo log since %s"
,
pTrans
->
id
,
terrstr
());
mError
(
"trans:%d, failed to set redo log since %s"
,
pTrans
->
id
,
terrstr
());
...
@@ -328,24 +353,24 @@ static int32_t mndProcessDropBnodeReq(SMnodeMsg *pMsg) {
...
@@ -328,24 +353,24 @@ static int32_t mndProcessDropBnodeReq(SMnodeMsg *pMsg) {
SMDropBnodeMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
SMDropBnodeMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
pDrop
->
dnodeId
=
htonl
(
pDrop
->
dnodeId
);
pDrop
->
dnodeId
=
htonl
(
pDrop
->
dnodeId
);
mDebug
(
"
s
node:%d, start to drop"
,
pDrop
->
dnodeId
);
mDebug
(
"
b
node:%d, start to drop"
,
pDrop
->
dnodeId
);
if
(
pDrop
->
dnodeId
<=
0
)
{
if
(
pDrop
->
dnodeId
<=
0
)
{
terrno
=
TSDB_CODE_SDB_APP_ERROR
;
terrno
=
TSDB_CODE_SDB_APP_ERROR
;
mError
(
"
s
node:%d, failed to drop since %s"
,
pDrop
->
dnodeId
,
terrstr
());
mError
(
"
b
node:%d, failed to drop since %s"
,
pDrop
->
dnodeId
,
terrstr
());
return
-
1
;
return
-
1
;
}
}
SBnodeObj
*
pObj
=
mndAcquireBnode
(
pMnode
,
pDrop
->
dnodeId
);
SBnodeObj
*
pObj
=
mndAcquireBnode
(
pMnode
,
pDrop
->
dnodeId
);
if
(
pObj
==
NULL
)
{
if
(
pObj
==
NULL
)
{
mError
(
"
s
node:%d, not exist"
,
pDrop
->
dnodeId
);
mError
(
"
b
node:%d, not exist"
,
pDrop
->
dnodeId
);
terrno
=
TSDB_CODE_MND_
D
NODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_
B
NODE_NOT_EXIST
;
return
-
1
;
return
-
1
;
}
}
int32_t
code
=
mndDropBnode
(
pMnode
,
pMsg
,
pObj
);
int32_t
code
=
mndDropBnode
(
pMnode
,
pMsg
,
pObj
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
mError
(
"
s
node:%d, failed to drop since %s"
,
pMnode
->
dnodeId
,
terrstr
());
mError
(
"
b
node:%d, failed to drop since %s"
,
pMnode
->
dnodeId
,
terrstr
());
return
-
1
;
return
-
1
;
}
}
...
...
source/dnode/mnode/impl/src/mndCluster.c
浏览文件 @
d3927b54
...
@@ -63,55 +63,80 @@ int32_t mndGetClusterName(SMnode *pMnode, char *clusterName, int32_t len) {
...
@@ -63,55 +63,80 @@ int32_t mndGetClusterName(SMnode *pMnode, char *clusterName, int32_t len) {
}
}
static
SSdbRaw
*
mndClusterActionEncode
(
SClusterObj
*
pCluster
)
{
static
SSdbRaw
*
mndClusterActionEncode
(
SClusterObj
*
pCluster
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_CLUSTER
,
TSDB_CLUSTER_VER_NUMBE
,
sizeof
(
SClusterObj
)
+
TSDB_CLUSTER_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_CLUSTER
,
TSDB_CLUSTER_VER_NUMBE
,
sizeof
(
SClusterObj
)
+
TSDB_CLUSTER_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
CLUSTER_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_INT64
(
pRaw
,
dataPos
,
pCluster
->
id
);
SDB_SET_INT64
(
pRaw
,
dataPos
,
pCluster
->
id
,
CLUSTER_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pCluster
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pCluster
->
createdTime
,
CLUSTER_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pCluster
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pCluster
->
updateTime
,
CLUSTER_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pCluster
->
name
,
TSDB_CLUSTER_ID_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pCluster
->
name
,
TSDB_CLUSTER_ID_LEN
,
CLUSTER_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_CLUSTER_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_CLUSTER_RESERVE_SIZE
,
CLUSTER_ENCODE_OVER
)
terrno
=
0
;
CLUSTER_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"cluster:%"
PRId64
", failed to encode to raw:%p since %s"
,
pCluster
->
id
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"cluster:%"
PRId64
", encode to raw:%p, row:%p"
,
pCluster
->
id
,
pRaw
,
pCluster
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndClusterActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndClusterActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
CLUSTER_DECODE_OVER
;
if
(
sver
!=
TSDB_CLUSTER_VER_NUMBE
)
{
if
(
sver
!=
TSDB_CLUSTER_VER_NUMBE
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode cluster since %s"
,
terrstr
());
goto
CLUSTER_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SClusterObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SClusterObj
));
if
(
pRow
==
NULL
)
goto
CLUSTER_DECODE_OVER
;
SClusterObj
*
pCluster
=
sdbGetRowObj
(
pRow
);
SClusterObj
*
pCluster
=
sdbGetRowObj
(
pRow
);
if
(
pCluster
==
NULL
)
return
NULL
;
if
(
pCluster
==
NULL
)
goto
CLUSTER_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pCluster
->
id
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pCluster
->
id
,
CLUSTER_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pCluster
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pCluster
->
createdTime
,
CLUSTER_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pCluster
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pCluster
->
updateTime
,
CLUSTER_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pCluster
->
name
,
TSDB_CLUSTER_ID_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pCluster
->
name
,
TSDB_CLUSTER_ID_LEN
,
CLUSTER_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_CLUSTER_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_CLUSTER_RESERVE_SIZE
,
CLUSTER_DECODE_OVER
)
terrno
=
0
;
CLUSTER_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"cluster:%"
PRId64
", failed to decode from raw:%p since %s"
,
pCluster
->
id
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"cluster:%"
PRId64
", decode from raw:%p, row:%p"
,
pCluster
->
id
,
pRaw
,
pCluster
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndClusterActionInsert
(
SSdb
*
pSdb
,
SClusterObj
*
pCluster
)
{
static
int32_t
mndClusterActionInsert
(
SSdb
*
pSdb
,
SClusterObj
*
pCluster
)
{
mTrace
(
"cluster:%"
PRId64
", perform insert action
"
,
pCluster
->
id
);
mTrace
(
"cluster:%"
PRId64
", perform insert action
, row:%p"
,
pCluster
->
id
,
pCluster
);
return
0
;
return
0
;
}
}
static
int32_t
mndClusterActionDelete
(
SSdb
*
pSdb
,
SClusterObj
*
pCluster
)
{
static
int32_t
mndClusterActionDelete
(
SSdb
*
pSdb
,
SClusterObj
*
pCluster
)
{
mTrace
(
"cluster:%"
PRId64
", perform delete action
"
,
pCluster
->
id
);
mTrace
(
"cluster:%"
PRId64
", perform delete action
, row:%p"
,
pCluster
->
id
,
pCluster
);
return
0
;
return
0
;
}
}
static
int32_t
mndClusterActionUpdate
(
SSdb
*
pSdb
,
SClusterObj
*
pOld
Cluster
,
SClusterObj
*
pNewCluster
)
{
static
int32_t
mndClusterActionUpdate
(
SSdb
*
pSdb
,
SClusterObj
*
pOld
,
SClusterObj
*
pNew
)
{
mTrace
(
"cluster:%"
PRId64
", perform update action
"
,
pOldCluster
->
id
);
mTrace
(
"cluster:%"
PRId64
", perform update action
, old_row:%p new_row:%p"
,
pOld
->
id
,
pOld
,
pNew
);
return
0
;
return
0
;
}
}
...
@@ -135,7 +160,7 @@ static int32_t mndCreateDefaultCluster(SMnode *pMnode) {
...
@@ -135,7 +160,7 @@ static int32_t mndCreateDefaultCluster(SMnode *pMnode) {
if
(
pRaw
==
NULL
)
return
-
1
;
if
(
pRaw
==
NULL
)
return
-
1
;
sdbSetRawStatus
(
pRaw
,
SDB_STATUS_READY
);
sdbSetRawStatus
(
pRaw
,
SDB_STATUS_READY
);
mDebug
(
"cluster:%"
PRId64
", will be created while deploy sdb
"
,
clusterObj
.
id
);
mDebug
(
"cluster:%"
PRId64
", will be created while deploy sdb
, raw:%p"
,
clusterObj
.
id
,
pRaw
);
return
sdbWrite
(
pMnode
->
pSdb
,
pRaw
);
return
sdbWrite
(
pMnode
->
pSdb
,
pRaw
);
}
}
...
...
source/dnode/mnode/impl/src/mndConsumer.c
浏览文件 @
d3927b54
...
@@ -67,66 +67,87 @@ int32_t mndInitConsumer(SMnode *pMnode) {
...
@@ -67,66 +67,87 @@ int32_t mndInitConsumer(SMnode *pMnode) {
void
mndCleanupConsumer
(
SMnode
*
pMnode
)
{}
void
mndCleanupConsumer
(
SMnode
*
pMnode
)
{}
static
SSdbRaw
*
mndConsumerActionEncode
(
SConsumerObj
*
pConsumer
)
{
static
SSdbRaw
*
mndConsumerActionEncode
(
SConsumerObj
*
pConsumer
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int32_t
size
=
sizeof
(
SConsumerObj
)
+
MND_CONSUMER_RESERVE_SIZE
;
int32_t
size
=
sizeof
(
SConsumerObj
)
+
MND_CONSUMER_RESERVE_SIZE
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_CONSUMER
,
MND_CONSUMER_VER_NUMBER
,
size
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_CONSUMER
,
MND_CONSUMER_VER_NUMBER
,
size
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
CM_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pConsumer
->
name
,
TSDB_TABLE_FNAME_LEN
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pConsumer
->
name
,
TSDB_TABLE_FNAME_LEN
,
CM_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pConsumer
->
db
,
TSDB_DB_FNAME_LEN
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pConsumer
->
db
,
TSDB_DB_FNAME_LEN
,
CM_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pConsumer
->
createTime
);
SDB_SET_INT64
(
pRaw
,
dataPos
,
pConsumer
->
createTime
,
CM_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pConsumer
->
updateTime
);
SDB_SET_INT64
(
pRaw
,
dataPos
,
pConsumer
->
updateTime
,
CM_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pConsumer
->
uid
);
SDB_SET_INT64
(
pRaw
,
dataPos
,
pConsumer
->
uid
,
CM_ENCODE_OVER
)
/*SDB_SET_INT64(pRaw, dataPos, pConsumer->dbUid);*/
/*SDB_SET_INT64(pRaw, dataPos, pConsumer->dbUid);*/
SDB_SET_INT32
(
pRaw
,
dataPos
,
pConsumer
->
version
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pConsumer
->
version
,
CM_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_CONSUMER_RESERVE_SIZE
);
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_CONSUMER_RESERVE_SIZE
,
CM_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
CM_ENCODE_OVER
)
CM_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"consumer:%s, failed to encode to raw:%p since %s"
,
pConsumer
->
name
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"consumer:%s, encode to raw:%p, row:%p"
,
pConsumer
->
name
,
pRaw
,
pConsumer
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndConsumerActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndConsumerActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
CONSUME_DECODE_OVER
;
if
(
sver
!=
MND_CONSUMER_VER_NUMBER
)
{
if
(
sver
!=
MND_CONSUMER_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode consumer since %s"
,
terrstr
());
goto
CONSUME_DECODE_OVER
;
return
NULL
;
}
}
int32_t
size
=
sizeof
(
SConsumerObj
)
+
TSDB_MAX_COLUMNS
*
sizeof
(
SSchema
);
int32_t
size
=
sizeof
(
SConsumerObj
)
+
TSDB_MAX_COLUMNS
*
sizeof
(
SSchema
);
SSdbRow
*
pRow
=
sdbAllocRow
(
size
);
SSdbRow
*
pRow
=
sdbAllocRow
(
size
);
if
(
pRow
==
NULL
)
goto
CONSUME_DECODE_OVER
;
SConsumerObj
*
pConsumer
=
sdbGetRowObj
(
pRow
);
SConsumerObj
*
pConsumer
=
sdbGetRowObj
(
pRow
);
if
(
pConsumer
==
NULL
)
return
NULL
;
if
(
pConsumer
==
NULL
)
goto
CONSUME_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pConsumer
->
name
,
TSDB_TABLE_FNAME_LEN
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pConsumer
->
name
,
TSDB_TABLE_FNAME_LEN
,
CONSUME_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pConsumer
->
db
,
TSDB_DB_FNAME_LEN
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pConsumer
->
db
,
TSDB_DB_FNAME_LEN
,
CONSUME_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pConsumer
->
createTime
);
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pConsumer
->
createTime
,
CONSUME_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pConsumer
->
updateTime
);
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pConsumer
->
updateTime
,
CONSUME_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pConsumer
->
uid
);
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pConsumer
->
uid
,
CONSUME_DECODE_OVER
)
/*SDB_GET_INT64(pRaw, pRow, dataPos, &pConsumer->dbUid);*/
/*SDB_GET_INT64(pRaw, pRow, dataPos, &pConsumer->dbUid);*/
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pConsumer
->
version
);
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pConsumer
->
version
,
CONSUME_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
MND_CONSUMER_RESERVE_SIZE
,
CONSUME_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
MND_CONSUMER_RESERVE_SIZE
);
terrno
=
0
;
CONSUME_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"consumer:%s, failed to decode from raw:%p since %s"
,
pConsumer
->
name
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"consumer:%s, decode from raw:%p, row:%p"
,
pConsumer
->
name
,
pRaw
,
pConsumer
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndConsumerActionInsert
(
SSdb
*
pSdb
,
SConsumerObj
*
pConsumer
)
{
static
int32_t
mndConsumerActionInsert
(
SSdb
*
pSdb
,
SConsumerObj
*
pConsumer
)
{
mTrace
(
"consumer:%s, perform insert action
"
,
pConsumer
->
name
);
mTrace
(
"consumer:%s, perform insert action
, row:%p"
,
pConsumer
->
name
,
pConsumer
);
return
0
;
return
0
;
}
}
static
int32_t
mndConsumerActionDelete
(
SSdb
*
pSdb
,
SConsumerObj
*
pConsumer
)
{
static
int32_t
mndConsumerActionDelete
(
SSdb
*
pSdb
,
SConsumerObj
*
pConsumer
)
{
mTrace
(
"consumer:%s, perform delete action
"
,
pConsumer
->
name
);
mTrace
(
"consumer:%s, perform delete action
, row:%p"
,
pConsumer
->
name
,
pConsumer
);
return
0
;
return
0
;
}
}
static
int32_t
mndConsumerActionUpdate
(
SSdb
*
pSdb
,
SConsumerObj
*
pOldConsumer
,
SConsumerObj
*
pNewConsumer
)
{
static
int32_t
mndConsumerActionUpdate
(
SSdb
*
pSdb
,
SConsumerObj
*
pOldConsumer
,
SConsumerObj
*
pNewConsumer
)
{
mTrace
(
"consumer:%s, perform update action
"
,
pOldConsumer
->
name
);
mTrace
(
"consumer:%s, perform update action
, old_row:%p new_row:%p"
,
pOldConsumer
->
name
,
pOldConsumer
,
pNewConsumer
);
atomic_exchange_32
(
&
pOldConsumer
->
updateTime
,
pNewConsumer
->
updateTime
);
atomic_exchange_32
(
&
pOldConsumer
->
updateTime
,
pNewConsumer
->
updateTime
);
atomic_exchange_32
(
&
pOldConsumer
->
version
,
pNewConsumer
->
version
);
atomic_exchange_32
(
&
pOldConsumer
->
version
,
pNewConsumer
->
version
);
...
...
source/dnode/mnode/impl/src/mndDb.c
浏览文件 @
d3927b54
...
@@ -65,100 +65,125 @@ int32_t mndInitDb(SMnode *pMnode) {
...
@@ -65,100 +65,125 @@ int32_t mndInitDb(SMnode *pMnode) {
void
mndCleanupDb
(
SMnode
*
pMnode
)
{}
void
mndCleanupDb
(
SMnode
*
pMnode
)
{}
static
SSdbRaw
*
mndDbActionEncode
(
SDbObj
*
pDb
)
{
static
SSdbRaw
*
mndDbActionEncode
(
SDbObj
*
pDb
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_DB
,
TSDB_DB_VER_NUMBER
,
sizeof
(
SDbObj
)
+
TSDB_DB_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_DB
,
TSDB_DB_VER_NUMBER
,
sizeof
(
SDbObj
)
+
TSDB_DB_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
DB_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pDb
->
name
,
TSDB_DB_FNAME_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pDb
->
name
,
TSDB_DB_FNAME_LEN
,
DB_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pDb
->
acct
,
TSDB_USER_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pDb
->
acct
,
TSDB_USER_LEN
,
DB_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDb
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDb
->
createdTime
,
DB_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDb
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDb
->
updateTime
,
DB_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDb
->
uid
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDb
->
uid
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfgVersion
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfgVersion
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
vgVersion
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
vgVersion
,
DB_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
hashMethod
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
hashMethod
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
numOfVgroups
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
numOfVgroups
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
cacheBlockSize
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
cacheBlockSize
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
totalBlocks
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
totalBlocks
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
daysPerFile
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
daysPerFile
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
daysToKeep0
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
daysToKeep0
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
daysToKeep1
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
daysToKeep1
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
daysToKeep2
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
daysToKeep2
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
minRows
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
minRows
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
maxRows
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
maxRows
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
commitTime
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
commitTime
,
DB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
fsyncPeriod
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDb
->
cfg
.
fsyncPeriod
,
DB_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
walLevel
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
walLevel
,
DB_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
precision
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
precision
,
DB_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
compression
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
compression
,
DB_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
replications
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
replications
,
DB_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
quorum
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
quorum
,
DB_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
update
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
update
,
DB_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
cacheLastRow
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pDb
->
cfg
.
cacheLastRow
,
DB_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_DB_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_DB_RESERVE_SIZE
,
DB_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
DB_ENCODE_OVER
)
terrno
=
0
;
DB_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"db:%s, failed to encode to raw:%p since %s"
,
pDb
->
name
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"db:%s, encode to raw:%p, row:%p"
,
pDb
->
name
,
pRaw
,
pDb
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndDbActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndDbActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
DB_DECODE_OVER
;
if
(
sver
!=
TSDB_DB_VER_NUMBER
)
{
if
(
sver
!=
TSDB_DB_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode db since %s"
,
terrstr
());
goto
DB_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SDbObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SDbObj
));
SDbObj
*
pDb
=
sdbGetRowObj
(
pRow
);
if
(
pRow
==
NULL
)
goto
DB_DECODE_OVER
;
if
(
pDb
==
NULL
)
return
NULL
;
SDbObj
*
pDb
=
sdbGetRowObj
(
pRow
);
if
(
pDb
==
NULL
)
goto
DB_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pDb
->
name
,
TSDB_DB_FNAME_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pDb
->
name
,
TSDB_DB_FNAME_LEN
,
DB_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pDb
->
acct
,
TSDB_USER_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pDb
->
acct
,
TSDB_USER_LEN
,
DB_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pDb
->
createdTime
,
DB_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pDb
->
updateTime
,
DB_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
uid
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pDb
->
uid
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfgVersion
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfgVersion
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
vgVersion
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
vgVersion
,
DB_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
hashMethod
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pDb
->
hashMethod
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
numOfVgroups
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
numOfVgroups
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
cacheBlockSize
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
cacheBlockSize
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
totalBlocks
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
totalBlocks
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
daysPerFile
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
daysPerFile
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
daysToKeep0
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
daysToKeep0
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
daysToKeep1
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
daysToKeep1
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
daysToKeep2
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
daysToKeep2
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
minRows
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
minRows
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
maxRows
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
maxRows
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
commitTime
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
commitTime
,
DB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
fsyncPeriod
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
fsyncPeriod
,
DB_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
walLevel
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
walLevel
,
DB_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
precision
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
precision
,
DB_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
compression
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
compression
,
DB_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
replications
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
replications
,
DB_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
quorum
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
quorum
,
DB_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
update
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
update
,
DB_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pDb
->
cfg
.
cacheLastRow
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pDb
->
cfg
.
cacheLastRow
,
DB_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_DB_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_DB_RESERVE_SIZE
,
DB_DECODE_OVER
)
terrno
=
0
;
DB_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"db:%s, failed to decode from raw:%p since %s"
,
pDb
->
name
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"db:%s, decode from raw:%p, row:%p"
,
pDb
->
name
,
pRaw
,
pDb
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndDbActionInsert
(
SSdb
*
pSdb
,
SDbObj
*
pDb
)
{
static
int32_t
mndDbActionInsert
(
SSdb
*
pSdb
,
SDbObj
*
pDb
)
{
mTrace
(
"db:%s, perform insert action
"
,
pDb
->
name
);
mTrace
(
"db:%s, perform insert action
, row:%p"
,
pDb
->
name
,
pDb
);
return
0
;
return
0
;
}
}
static
int32_t
mndDbActionDelete
(
SSdb
*
pSdb
,
SDbObj
*
pDb
)
{
static
int32_t
mndDbActionDelete
(
SSdb
*
pSdb
,
SDbObj
*
pDb
)
{
mTrace
(
"db:%s, perform delete action
"
,
pDb
->
name
);
mTrace
(
"db:%s, perform delete action
, row:%p"
,
pDb
->
name
,
pDb
);
return
0
;
return
0
;
}
}
static
int32_t
mndDbActionUpdate
(
SSdb
*
pSdb
,
SDbObj
*
pOldDb
,
SDbObj
*
pNewDb
)
{
static
int32_t
mndDbActionUpdate
(
SSdb
*
pSdb
,
SDbObj
*
pOldDb
,
SDbObj
*
pNewDb
)
{
mTrace
(
"db:%s, perform update action
"
,
pOldDb
->
name
);
mTrace
(
"db:%s, perform update action
, old_row:%p new_row:%p"
,
pOldDb
->
name
,
pOldDb
,
pNewDb
);
pOldDb
->
updateTime
=
pNewDb
->
updateTime
;
pOldDb
->
updateTime
=
pNewDb
->
updateTime
;
pOldDb
->
cfgVersion
=
pNewDb
->
cfgVersion
;
pOldDb
->
cfgVersion
=
pNewDb
->
cfgVersion
;
pOldDb
->
vgVersion
=
pNewDb
->
vgVersion
;
pOldDb
->
vgVersion
=
pNewDb
->
vgVersion
;
...
...
source/dnode/mnode/impl/src/mndDnode.c
浏览文件 @
d3927b54
...
@@ -100,65 +100,90 @@ static int32_t mndCreateDefaultDnode(SMnode *pMnode) {
...
@@ -100,65 +100,90 @@ static int32_t mndCreateDefaultDnode(SMnode *pMnode) {
if
(
pRaw
==
NULL
)
return
-
1
;
if
(
pRaw
==
NULL
)
return
-
1
;
if
(
sdbSetRawStatus
(
pRaw
,
SDB_STATUS_READY
)
!=
0
)
return
-
1
;
if
(
sdbSetRawStatus
(
pRaw
,
SDB_STATUS_READY
)
!=
0
)
return
-
1
;
mDebug
(
"dnode:%d, will be created while deploy sdb
"
,
dnodeObj
.
id
);
mDebug
(
"dnode:%d, will be created while deploy sdb
, raw:%p"
,
dnodeObj
.
id
,
pRaw
);
return
sdbWrite
(
pMnode
->
pSdb
,
pRaw
);
return
sdbWrite
(
pMnode
->
pSdb
,
pRaw
);
}
}
static
SSdbRaw
*
mndDnodeActionEncode
(
SDnodeObj
*
pDnode
)
{
static
SSdbRaw
*
mndDnodeActionEncode
(
SDnodeObj
*
pDnode
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_DNODE
,
TSDB_DNODE_VER_NUMBER
,
sizeof
(
SDnodeObj
)
+
TSDB_DNODE_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_DNODE
,
TSDB_DNODE_VER_NUMBER
,
sizeof
(
SDnodeObj
)
+
TSDB_DNODE_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
DNODE_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDnode
->
id
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pDnode
->
id
,
DNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDnode
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDnode
->
createdTime
,
DNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDnode
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pDnode
->
updateTime
,
DNODE_ENCODE_OVER
)
SDB_SET_INT16
(
pRaw
,
dataPos
,
pDnode
->
port
)
SDB_SET_INT16
(
pRaw
,
dataPos
,
pDnode
->
port
,
DNODE_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pDnode
->
fqdn
,
TSDB_FQDN_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pDnode
->
fqdn
,
TSDB_FQDN_LEN
,
DNODE_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_DNODE_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_DNODE_RESERVE_SIZE
,
DNODE_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
DNODE_ENCODE_OVER
);
terrno
=
0
;
DNODE_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"dnode:%d, failed to encode to raw:%p since %s"
,
pDnode
->
id
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"dnode:%d, encode to raw:%p, row:%p"
,
pDnode
->
id
,
pRaw
,
pDnode
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndDnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndDnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
DNODE_DECODE_OVER
;
if
(
sver
!=
TSDB_DNODE_VER_NUMBER
)
{
if
(
sver
!=
TSDB_DNODE_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode dnode since %s"
,
terrstr
());
goto
DNODE_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SDnodeObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SDnodeObj
));
if
(
pRow
==
NULL
)
goto
DNODE_DECODE_OVER
;
SDnodeObj
*
pDnode
=
sdbGetRowObj
(
pRow
);
SDnodeObj
*
pDnode
=
sdbGetRowObj
(
pRow
);
if
(
pDnode
==
NULL
)
return
NULL
;
if
(
pDnode
==
NULL
)
goto
DNODE_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pDnode
->
id
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pDnode
->
id
,
DNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pDnode
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pDnode
->
createdTime
,
DNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pDnode
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pDnode
->
updateTime
,
DNODE_DECODE_OVER
)
SDB_GET_INT16
(
pRaw
,
pRow
,
dataPos
,
&
pDnode
->
port
)
SDB_GET_INT16
(
pRaw
,
dataPos
,
&
pDnode
->
port
,
DNODE_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pDnode
->
fqdn
,
TSDB_FQDN_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pDnode
->
fqdn
,
TSDB_FQDN_LEN
,
DNODE_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_DNODE_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_DNODE_RESERVE_SIZE
,
DNODE_DECODE_OVER
)
terrno
=
0
;
DNODE_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"dnode:%d, failed to decode from raw:%p since %s"
,
pDnode
->
id
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"dnode:%d, decode from raw:%p, row:%p"
,
pDnode
->
id
,
pRaw
,
pDnode
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndDnodeActionInsert
(
SSdb
*
pSdb
,
SDnodeObj
*
pDnode
)
{
static
int32_t
mndDnodeActionInsert
(
SSdb
*
pSdb
,
SDnodeObj
*
pDnode
)
{
mTrace
(
"dnode:%d, perform insert action
"
,
pDnode
->
id
);
mTrace
(
"dnode:%d, perform insert action
, row:%p"
,
pDnode
->
id
,
pDnode
);
pDnode
->
offlineReason
=
DND_REASON_STATUS_NOT_RECEIVED
;
pDnode
->
offlineReason
=
DND_REASON_STATUS_NOT_RECEIVED
;
snprintf
(
pDnode
->
ep
,
TSDB_EP_LEN
,
"%s:%u"
,
pDnode
->
fqdn
,
pDnode
->
port
);
snprintf
(
pDnode
->
ep
,
TSDB_EP_LEN
,
"%s:%u"
,
pDnode
->
fqdn
,
pDnode
->
port
);
return
0
;
return
0
;
}
}
static
int32_t
mndDnodeActionDelete
(
SSdb
*
pSdb
,
SDnodeObj
*
pDnode
)
{
static
int32_t
mndDnodeActionDelete
(
SSdb
*
pSdb
,
SDnodeObj
*
pDnode
)
{
mTrace
(
"dnode:%d, perform delete action
"
,
pDnode
->
id
);
mTrace
(
"dnode:%d, perform delete action
, row:%p"
,
pDnode
->
id
,
pDnode
);
return
0
;
return
0
;
}
}
static
int32_t
mndDnodeActionUpdate
(
SSdb
*
pSdb
,
SDnodeObj
*
pOldDnode
,
SDnodeObj
*
pNewDnode
)
{
static
int32_t
mndDnodeActionUpdate
(
SSdb
*
pSdb
,
SDnodeObj
*
pOldDnode
,
SDnodeObj
*
pNewDnode
)
{
mTrace
(
"dnode:%d, perform update action
"
,
pOldDnode
->
id
);
mTrace
(
"dnode:%d, perform update action
, old_row:%p new_row:%p"
,
pOldDnode
->
id
,
pOldDnode
,
pNewDnode
);
pOldDnode
->
updateTime
=
pNewDnode
->
updateTime
;
pOldDnode
->
updateTime
=
pNewDnode
->
updateTime
;
return
0
;
return
0
;
}
}
...
...
source/dnode/mnode/impl/src/mndFunc.c
浏览文件 @
d3927b54
...
@@ -58,76 +58,101 @@ int32_t mndInitFunc(SMnode *pMnode) {
...
@@ -58,76 +58,101 @@ int32_t mndInitFunc(SMnode *pMnode) {
void
mndCleanupFunc
(
SMnode
*
pMnode
)
{}
void
mndCleanupFunc
(
SMnode
*
pMnode
)
{}
static
SSdbRaw
*
mndFuncActionEncode
(
SFuncObj
*
pFunc
)
{
static
SSdbRaw
*
mndFuncActionEncode
(
SFuncObj
*
pFunc
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int32_t
size
=
pFunc
->
commentSize
+
pFunc
->
codeSize
+
sizeof
(
SFuncObj
);
int32_t
size
=
pFunc
->
commentSize
+
pFunc
->
codeSize
+
sizeof
(
SFuncObj
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_FUNC
,
SDB_FUNC_VER
,
size
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_FUNC
,
SDB_FUNC_VER
,
size
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
FUNC_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pFunc
->
name
,
TSDB_FUNC_NAME_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pFunc
->
name
,
TSDB_FUNC_NAME_LEN
,
FUNC_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pFunc
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pFunc
->
createdTime
,
FUNC_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pFunc
->
funcType
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pFunc
->
funcType
,
FUNC_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pFunc
->
scriptType
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pFunc
->
scriptType
,
FUNC_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pFunc
->
align
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pFunc
->
align
,
FUNC_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pFunc
->
outputType
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pFunc
->
outputType
,
FUNC_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pFunc
->
outputLen
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pFunc
->
outputLen
,
FUNC_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pFunc
->
bufSize
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pFunc
->
bufSize
,
FUNC_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pFunc
->
sigature
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pFunc
->
sigature
,
FUNC_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pFunc
->
commentSize
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pFunc
->
commentSize
,
FUNC_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pFunc
->
codeSize
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pFunc
->
codeSize
,
FUNC_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pFunc
->
pComment
,
pFunc
->
commentSize
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pFunc
->
pComment
,
pFunc
->
commentSize
,
FUNC_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pFunc
->
pCode
,
pFunc
->
codeSize
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pFunc
->
pCode
,
pFunc
->
codeSize
,
FUNC_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
FUNC_ENCODE_OVER
);
terrno
=
0
;
FUNC_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"func:%s, failed to encode to raw:%p since %s"
,
pFunc
->
name
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"func:%d, encode to raw:%p, row:%p"
,
pFunc
->
name
,
pRaw
,
pFunc
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndFuncActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndFuncActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
FUNC_DECODE_OVER
;
if
(
sver
!=
SDB_FUNC_VER
)
{
if
(
sver
!=
SDB_FUNC_VER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode func since %s"
,
terrstr
());
goto
FUNC_DECODE_OVER
;
return
NULL
;
}
}
int32_t
size
=
sizeof
(
SFuncObj
)
+
TSDB_FUNC_COMMENT_LEN
+
TSDB_FUNC_CODE_LEN
;
int32_t
size
=
sizeof
(
SFuncObj
)
+
TSDB_FUNC_COMMENT_LEN
+
TSDB_FUNC_CODE_LEN
;
SSdbRow
*
pRow
=
sdbAllocRow
(
size
);
SSdbRow
*
pRow
=
sdbAllocRow
(
size
);
if
(
pRow
==
NULL
)
goto
FUNC_DECODE_OVER
;
SFuncObj
*
pFunc
=
sdbGetRowObj
(
pRow
);
SFuncObj
*
pFunc
=
sdbGetRowObj
(
pRow
);
if
(
pFunc
==
NULL
)
return
NULL
;
if
(
pFunc
==
NULL
)
goto
FUNC_DECODE_OVER
;
char
*
tmp
=
(
char
*
)
pFunc
+
sizeof
(
SFuncObj
);
char
*
tmp
=
(
char
*
)
pFunc
+
sizeof
(
SFuncObj
);
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pFunc
->
name
,
TSDB_FUNC_NAME_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pFunc
->
name
,
TSDB_FUNC_NAME_LEN
,
FUNC_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pFunc
->
createdTime
,
FUNC_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
funcType
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pFunc
->
funcType
,
FUNC_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
scriptType
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pFunc
->
scriptType
,
FUNC_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
align
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pFunc
->
align
,
FUNC_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
outputType
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pFunc
->
outputType
,
FUNC_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
outputLen
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pFunc
->
outputLen
,
FUNC_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
bufSize
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pFunc
->
bufSize
,
FUNC_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
sigature
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pFunc
->
sigature
,
FUNC_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
commentSize
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pFunc
->
commentSize
,
FUNC_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pFunc
->
codeSize
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pFunc
->
codeSize
,
FUNC_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pFunc
->
pData
,
pFunc
->
commentSize
+
pFunc
->
codeSize
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pFunc
->
pData
,
pFunc
->
commentSize
+
pFunc
->
codeSize
,
FUNC_DECODE_OVER
)
pFunc
->
pComment
=
pFunc
->
pData
;
pFunc
->
pComment
=
pFunc
->
pData
;
pFunc
->
pCode
=
(
pFunc
->
pData
+
pFunc
->
commentSize
);
pFunc
->
pCode
=
(
pFunc
->
pData
+
pFunc
->
commentSize
);
terrno
=
0
;
FUNC_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"func:%s, failed to decode from raw:%p since %s"
,
pFunc
->
name
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"func:%s, decode from raw:%p, row:%p"
,
pFunc
->
name
,
pRaw
,
pFunc
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndFuncActionInsert
(
SSdb
*
pSdb
,
SFuncObj
*
pFunc
)
{
static
int32_t
mndFuncActionInsert
(
SSdb
*
pSdb
,
SFuncObj
*
pFunc
)
{
mTrace
(
"func:%s, perform insert action
"
,
pFunc
->
name
);
mTrace
(
"func:%s, perform insert action
, row:%p"
,
pFunc
->
name
,
pFunc
);
return
0
;
return
0
;
}
}
static
int32_t
mndFuncActionDelete
(
SSdb
*
pSdb
,
SFuncObj
*
pFunc
)
{
static
int32_t
mndFuncActionDelete
(
SSdb
*
pSdb
,
SFuncObj
*
pFunc
)
{
mTrace
(
"func:%s, perform delete action
"
,
pFunc
->
name
);
mTrace
(
"func:%s, perform delete action
, row:%p"
,
pFunc
->
name
,
pFunc
);
return
0
;
return
0
;
}
}
static
int32_t
mndFuncActionUpdate
(
SSdb
*
pSdb
,
SFuncObj
*
pOldFunc
,
SFuncObj
*
pNewFunc
)
{
static
int32_t
mndFuncActionUpdate
(
SSdb
*
pSdb
,
SFuncObj
*
pOldFunc
,
SFuncObj
*
pNewFunc
)
{
mTrace
(
"func:%s, perform update action
"
,
pOldFunc
->
name
);
mTrace
(
"func:%s, perform update action
, old_row:%p new_row:%p"
,
pOldFunc
->
name
,
pOldFunc
,
pNewFunc
);
return
0
;
return
0
;
}
}
...
...
source/dnode/mnode/impl/src/mndMnode.c
浏览文件 @
d3927b54
...
@@ -117,50 +117,75 @@ static int32_t mndCreateDefaultMnode(SMnode *pMnode) {
...
@@ -117,50 +117,75 @@ static int32_t mndCreateDefaultMnode(SMnode *pMnode) {
if
(
pRaw
==
NULL
)
return
-
1
;
if
(
pRaw
==
NULL
)
return
-
1
;
sdbSetRawStatus
(
pRaw
,
SDB_STATUS_READY
);
sdbSetRawStatus
(
pRaw
,
SDB_STATUS_READY
);
mDebug
(
"mnode:%d, will be created while deploy sdb
"
,
mnodeObj
.
id
);
mDebug
(
"mnode:%d, will be created while deploy sdb
, raw:%p"
,
mnodeObj
.
id
,
pRaw
);
return
sdbWrite
(
pMnode
->
pSdb
,
pRaw
);
return
sdbWrite
(
pMnode
->
pSdb
,
pRaw
);
}
}
static
SSdbRaw
*
mndMnodeActionEncode
(
SMnodeObj
*
pObj
)
{
static
SSdbRaw
*
mndMnodeActionEncode
(
SMnodeObj
*
pObj
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_MNODE
,
TSDB_MNODE_VER_NUMBER
,
sizeof
(
SMnodeObj
)
+
TSDB_MNODE_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_MNODE
,
TSDB_MNODE_VER_NUMBER
,
sizeof
(
SMnodeObj
)
+
TSDB_MNODE_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
MNODE_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_INT32
(
pRaw
,
dataPos
,
pObj
->
id
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pObj
->
id
,
MNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
createdTime
,
MNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
updateTime
,
MNODE_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_MNODE_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_MNODE_RESERVE_SIZE
,
MNODE_ENCODE_OVER
)
terrno
=
0
;
MNODE_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"mnode:%d, failed to encode to raw:%p since %s"
,
pObj
->
id
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"mnode:%d, encode to raw:%p, row:%p"
,
pObj
->
id
,
pRaw
,
pObj
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndMnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndMnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sver
!=
TSDB_MNODE_VER_NUMBER
)
{
if
(
sver
!=
TSDB_MNODE_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode mnode since %s"
,
terrstr
());
goto
MNODE_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SMnodeObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SMnodeObj
));
if
(
pRow
==
NULL
)
goto
MNODE_DECODE_OVER
;
SMnodeObj
*
pObj
=
sdbGetRowObj
(
pRow
);
SMnodeObj
*
pObj
=
sdbGetRowObj
(
pRow
);
if
(
pObj
==
NULL
)
return
NULL
;
if
(
pObj
==
NULL
)
goto
MNODE_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
id
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pObj
->
id
,
MNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pObj
->
createdTime
,
MNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pObj
->
updateTime
,
MNODE_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_MNODE_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_MNODE_RESERVE_SIZE
,
MNODE_DECODE_OVER
)
terrno
=
0
;
MNODE_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"mnode:%d, failed to decode from raw:%p since %s"
,
pObj
->
id
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"mnode:%d, decode from raw:%p, row:%p"
,
pObj
->
id
,
pRaw
,
pObj
);
return
pRow
;
return
pRow
;
}
}
static
void
mnodeResetMnode
(
SMnodeObj
*
pObj
)
{
pObj
->
role
=
TAOS_SYNC_STATE_FOLLOWER
;
}
static
void
mnodeResetMnode
(
SMnodeObj
*
pObj
)
{
pObj
->
role
=
TAOS_SYNC_STATE_FOLLOWER
;
}
static
int32_t
mndMnodeActionInsert
(
SSdb
*
pSdb
,
SMnodeObj
*
pObj
)
{
static
int32_t
mndMnodeActionInsert
(
SSdb
*
pSdb
,
SMnodeObj
*
pObj
)
{
mTrace
(
"mnode:%d, perform insert action
"
,
pObj
->
id
);
mTrace
(
"mnode:%d, perform insert action
, row:%p"
,
pObj
->
id
,
pObj
);
pObj
->
pDnode
=
sdbAcquire
(
pSdb
,
SDB_DNODE
,
&
pObj
->
id
);
pObj
->
pDnode
=
sdbAcquire
(
pSdb
,
SDB_DNODE
,
&
pObj
->
id
);
if
(
pObj
->
pDnode
==
NULL
)
{
if
(
pObj
->
pDnode
==
NULL
)
{
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
...
@@ -173,7 +198,7 @@ static int32_t mndMnodeActionInsert(SSdb *pSdb, SMnodeObj *pObj) {
...
@@ -173,7 +198,7 @@ static int32_t mndMnodeActionInsert(SSdb *pSdb, SMnodeObj *pObj) {
}
}
static
int32_t
mndMnodeActionDelete
(
SSdb
*
pSdb
,
SMnodeObj
*
pObj
)
{
static
int32_t
mndMnodeActionDelete
(
SSdb
*
pSdb
,
SMnodeObj
*
pObj
)
{
mTrace
(
"mnode:%d, perform delete action
"
,
pObj
->
id
);
mTrace
(
"mnode:%d, perform delete action
, row:%p"
,
pObj
->
id
,
pObj
);
if
(
pObj
->
pDnode
!=
NULL
)
{
if
(
pObj
->
pDnode
!=
NULL
)
{
sdbRelease
(
pSdb
,
pObj
->
pDnode
);
sdbRelease
(
pSdb
,
pObj
->
pDnode
);
pObj
->
pDnode
=
NULL
;
pObj
->
pDnode
=
NULL
;
...
@@ -183,7 +208,7 @@ static int32_t mndMnodeActionDelete(SSdb *pSdb, SMnodeObj *pObj) {
...
@@ -183,7 +208,7 @@ static int32_t mndMnodeActionDelete(SSdb *pSdb, SMnodeObj *pObj) {
}
}
static
int32_t
mndMnodeActionUpdate
(
SSdb
*
pSdb
,
SMnodeObj
*
pOldMnode
,
SMnodeObj
*
pNewMnode
)
{
static
int32_t
mndMnodeActionUpdate
(
SSdb
*
pSdb
,
SMnodeObj
*
pOldMnode
,
SMnodeObj
*
pNewMnode
)
{
mTrace
(
"mnode:%d, perform update action
"
,
pOldMnode
->
id
);
mTrace
(
"mnode:%d, perform update action
, old_row:%p new_row:%p"
,
pOldMnode
->
id
,
pOldMnode
,
pNewMnode
);
pOldMnode
->
updateTime
=
pNewMnode
->
updateTime
;
pOldMnode
->
updateTime
=
pNewMnode
->
updateTime
;
return
0
;
return
0
;
}
}
...
@@ -370,7 +395,7 @@ CREATE_MNODE_OVER:
...
@@ -370,7 +395,7 @@ CREATE_MNODE_OVER:
}
}
static
int32_t
mndProcessCreateMnodeReq
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mndProcessCreateMnodeReq
(
SMnodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMCreateMnodeMsg
*
pCreate
=
pMsg
->
rpcMsg
.
pCont
;
SMCreateMnodeMsg
*
pCreate
=
pMsg
->
rpcMsg
.
pCont
;
pCreate
->
dnodeId
=
htonl
(
pCreate
->
dnodeId
);
pCreate
->
dnodeId
=
htonl
(
pCreate
->
dnodeId
);
...
@@ -537,7 +562,7 @@ DROP_MNODE_OVER:
...
@@ -537,7 +562,7 @@ DROP_MNODE_OVER:
}
}
static
int32_t
mndProcessDropMnodeReq
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mndProcessDropMnodeReq
(
SMnodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMDropMnodeMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
SMDropMnodeMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
pDrop
->
dnodeId
=
htonl
(
pDrop
->
dnodeId
);
pDrop
->
dnodeId
=
htonl
(
pDrop
->
dnodeId
);
...
...
source/dnode/mnode/impl/src/mndQnode.c
浏览文件 @
d3927b54
...
@@ -73,43 +73,68 @@ static void mndReleaseQnode(SMnode *pMnode, SQnodeObj *pObj) {
...
@@ -73,43 +73,68 @@ static void mndReleaseQnode(SMnode *pMnode, SQnodeObj *pObj) {
}
}
static
SSdbRaw
*
mndQnodeActionEncode
(
SQnodeObj
*
pObj
)
{
static
SSdbRaw
*
mndQnodeActionEncode
(
SQnodeObj
*
pObj
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_QNODE
,
TSDB_QNODE_VER_NUMBER
,
sizeof
(
SQnodeObj
)
+
TSDB_QNODE_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_QNODE
,
TSDB_QNODE_VER_NUMBER
,
sizeof
(
SQnodeObj
)
+
TSDB_QNODE_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
QNODE_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_INT32
(
pRaw
,
dataPos
,
pObj
->
id
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pObj
->
id
,
QNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
createdTime
,
QNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
updateTime
,
QNODE_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_QNODE_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_QNODE_RESERVE_SIZE
,
QNODE_ENCODE_OVER
)
terrno
=
0
;
QNODE_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"qnode:%d, failed to encode to raw:%p since %s"
,
pObj
->
id
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"qnode:%d, encode to raw:%p, row:%p"
,
pObj
->
id
,
pRaw
,
pObj
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndQnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndQnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
QNODE_DECODE_OVER
;
if
(
sver
!=
TSDB_QNODE_VER_NUMBER
)
{
if
(
sver
!=
TSDB_QNODE_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode qnode since %s"
,
terrstr
());
goto
QNODE_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SQnodeObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SQnodeObj
));
if
(
pRow
==
NULL
)
goto
QNODE_DECODE_OVER
;
SQnodeObj
*
pObj
=
sdbGetRowObj
(
pRow
);
SQnodeObj
*
pObj
=
sdbGetRowObj
(
pRow
);
if
(
pObj
==
NULL
)
return
NULL
;
if
(
pObj
==
NULL
)
goto
QNODE_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
id
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pObj
->
id
,
QNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pObj
->
createdTime
,
QNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pObj
->
updateTime
,
QNODE_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_QNODE_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_QNODE_RESERVE_SIZE
,
QNODE_DECODE_OVER
)
terrno
=
0
;
QNODE_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"qnode:%d, failed to decode from raw:%p since %s"
,
pObj
->
id
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"qnode:%d, decode from raw:%p, row:%p"
,
pObj
->
id
,
pRaw
,
pObj
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndQnodeActionInsert
(
SSdb
*
pSdb
,
SQnodeObj
*
pObj
)
{
static
int32_t
mndQnodeActionInsert
(
SSdb
*
pSdb
,
SQnodeObj
*
pObj
)
{
mTrace
(
"qnode:%d, perform insert action
"
,
pObj
->
id
);
mTrace
(
"qnode:%d, perform insert action
, row:%p"
,
pObj
->
id
,
pObj
);
pObj
->
pDnode
=
sdbAcquire
(
pSdb
,
SDB_DNODE
,
&
pObj
->
id
);
pObj
->
pDnode
=
sdbAcquire
(
pSdb
,
SDB_DNODE
,
&
pObj
->
id
);
if
(
pObj
->
pDnode
==
NULL
)
{
if
(
pObj
->
pDnode
==
NULL
)
{
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
...
@@ -121,7 +146,7 @@ static int32_t mndQnodeActionInsert(SSdb *pSdb, SQnodeObj *pObj) {
...
@@ -121,7 +146,7 @@ static int32_t mndQnodeActionInsert(SSdb *pSdb, SQnodeObj *pObj) {
}
}
static
int32_t
mndQnodeActionDelete
(
SSdb
*
pSdb
,
SQnodeObj
*
pObj
)
{
static
int32_t
mndQnodeActionDelete
(
SSdb
*
pSdb
,
SQnodeObj
*
pObj
)
{
mTrace
(
"qnode:%d, perform delete action
"
,
pObj
->
id
);
mTrace
(
"qnode:%d, perform delete action
, row:%p"
,
pObj
->
id
,
pObj
);
if
(
pObj
->
pDnode
!=
NULL
)
{
if
(
pObj
->
pDnode
!=
NULL
)
{
sdbRelease
(
pSdb
,
pObj
->
pDnode
);
sdbRelease
(
pSdb
,
pObj
->
pDnode
);
pObj
->
pDnode
=
NULL
;
pObj
->
pDnode
=
NULL
;
...
@@ -131,7 +156,7 @@ static int32_t mndQnodeActionDelete(SSdb *pSdb, SQnodeObj *pObj) {
...
@@ -131,7 +156,7 @@ static int32_t mndQnodeActionDelete(SSdb *pSdb, SQnodeObj *pObj) {
}
}
static
int32_t
mndQnodeActionUpdate
(
SSdb
*
pSdb
,
SQnodeObj
*
pOldQnode
,
SQnodeObj
*
pNewQnode
)
{
static
int32_t
mndQnodeActionUpdate
(
SSdb
*
pSdb
,
SQnodeObj
*
pOldQnode
,
SQnodeObj
*
pNewQnode
)
{
mTrace
(
"qnode:%d, perform update action
"
,
pOldQnode
->
id
);
mTrace
(
"qnode:%d, perform update action
, old_row:%p new_row:%p"
,
pOldQnode
->
id
,
pOldQnode
,
pNewQnode
);
pOldQnode
->
updateTime
=
pNewQnode
->
updateTime
;
pOldQnode
->
updateTime
=
pNewQnode
->
updateTime
;
return
0
;
return
0
;
}
}
...
@@ -339,7 +364,7 @@ static int32_t mndProcessDropQnodeReq(SMnodeMsg *pMsg) {
...
@@ -339,7 +364,7 @@ static int32_t mndProcessDropQnodeReq(SMnodeMsg *pMsg) {
SQnodeObj
*
pObj
=
mndAcquireQnode
(
pMnode
,
pDrop
->
dnodeId
);
SQnodeObj
*
pObj
=
mndAcquireQnode
(
pMnode
,
pDrop
->
dnodeId
);
if
(
pObj
==
NULL
)
{
if
(
pObj
==
NULL
)
{
mError
(
"qnode:%d, not exist"
,
pDrop
->
dnodeId
);
mError
(
"qnode:%d, not exist"
,
pDrop
->
dnodeId
);
terrno
=
TSDB_CODE_MND_
D
NODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_
Q
NODE_NOT_EXIST
;
return
-
1
;
return
-
1
;
}
}
...
...
source/dnode/mnode/impl/src/mndSnode.c
浏览文件 @
d3927b54
...
@@ -73,43 +73,68 @@ static void mndReleaseSnode(SMnode *pMnode, SSnodeObj *pObj) {
...
@@ -73,43 +73,68 @@ static void mndReleaseSnode(SMnode *pMnode, SSnodeObj *pObj) {
}
}
static
SSdbRaw
*
mndSnodeActionEncode
(
SSnodeObj
*
pObj
)
{
static
SSdbRaw
*
mndSnodeActionEncode
(
SSnodeObj
*
pObj
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_SNODE
,
TSDB_SNODE_VER_NUMBER
,
sizeof
(
SSnodeObj
)
+
TSDB_SNODE_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_SNODE
,
TSDB_SNODE_VER_NUMBER
,
sizeof
(
SSnodeObj
)
+
TSDB_SNODE_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
SNODE_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_INT32
(
pRaw
,
dataPos
,
pObj
->
id
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pObj
->
id
,
SNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
createdTime
,
SNODE_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pObj
->
updateTime
,
SNODE_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_SNODE_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_SNODE_RESERVE_SIZE
,
SNODE_ENCODE_OVER
)
terrno
=
0
;
SNODE_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"snode:%d, failed to encode to raw:%p since %s"
,
pObj
->
id
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"snode:%d, encode to raw:%p, row:%p"
,
pObj
->
id
,
pRaw
,
pObj
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndSnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndSnodeActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
SNODE_DECODE_OVER
;
if
(
sver
!=
TSDB_SNODE_VER_NUMBER
)
{
if
(
sver
!=
TSDB_SNODE_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode snode since %s"
,
terrstr
());
goto
SNODE_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SSnodeObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SSnodeObj
));
if
(
pRow
==
NULL
)
goto
SNODE_DECODE_OVER
;
SSnodeObj
*
pObj
=
sdbGetRowObj
(
pRow
);
SSnodeObj
*
pObj
=
sdbGetRowObj
(
pRow
);
if
(
pObj
==
NULL
)
return
NULL
;
if
(
pObj
==
NULL
)
goto
SNODE_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
id
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pObj
->
id
,
SNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pObj
->
createdTime
,
SNODE_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pObj
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pObj
->
updateTime
,
SNODE_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_SNODE_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_SNODE_RESERVE_SIZE
,
SNODE_DECODE_OVER
)
terrno
=
0
;
SNODE_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"snode:%d, failed to decode from raw:%p since %s"
,
pObj
->
id
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"snode:%d, decode from raw:%p, row:%p"
,
pObj
->
id
,
pRaw
,
pObj
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndSnodeActionInsert
(
SSdb
*
pSdb
,
SSnodeObj
*
pObj
)
{
static
int32_t
mndSnodeActionInsert
(
SSdb
*
pSdb
,
SSnodeObj
*
pObj
)
{
mTrace
(
"snode:%d, perform insert action
"
,
pObj
->
id
);
mTrace
(
"snode:%d, perform insert action
, row:%p"
,
pObj
->
id
,
pObj
);
pObj
->
pDnode
=
sdbAcquire
(
pSdb
,
SDB_DNODE
,
&
pObj
->
id
);
pObj
->
pDnode
=
sdbAcquire
(
pSdb
,
SDB_DNODE
,
&
pObj
->
id
);
if
(
pObj
->
pDnode
==
NULL
)
{
if
(
pObj
->
pDnode
==
NULL
)
{
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_DNODE_NOT_EXIST
;
...
@@ -121,7 +146,7 @@ static int32_t mndSnodeActionInsert(SSdb *pSdb, SSnodeObj *pObj) {
...
@@ -121,7 +146,7 @@ static int32_t mndSnodeActionInsert(SSdb *pSdb, SSnodeObj *pObj) {
}
}
static
int32_t
mndSnodeActionDelete
(
SSdb
*
pSdb
,
SSnodeObj
*
pObj
)
{
static
int32_t
mndSnodeActionDelete
(
SSdb
*
pSdb
,
SSnodeObj
*
pObj
)
{
mTrace
(
"snode:%d, perform delete action
"
,
pObj
->
id
);
mTrace
(
"snode:%d, perform delete action
, row:%p"
,
pObj
->
id
,
pObj
);
if
(
pObj
->
pDnode
!=
NULL
)
{
if
(
pObj
->
pDnode
!=
NULL
)
{
sdbRelease
(
pSdb
,
pObj
->
pDnode
);
sdbRelease
(
pSdb
,
pObj
->
pDnode
);
pObj
->
pDnode
=
NULL
;
pObj
->
pDnode
=
NULL
;
...
@@ -131,7 +156,7 @@ static int32_t mndSnodeActionDelete(SSdb *pSdb, SSnodeObj *pObj) {
...
@@ -131,7 +156,7 @@ static int32_t mndSnodeActionDelete(SSdb *pSdb, SSnodeObj *pObj) {
}
}
static
int32_t
mndSnodeActionUpdate
(
SSdb
*
pSdb
,
SSnodeObj
*
pOldSnode
,
SSnodeObj
*
pNewSnode
)
{
static
int32_t
mndSnodeActionUpdate
(
SSdb
*
pSdb
,
SSnodeObj
*
pOldSnode
,
SSnodeObj
*
pNewSnode
)
{
mTrace
(
"snode:%d, perform update action
"
,
pOldSnode
->
id
);
mTrace
(
"snode:%d, perform update action
, old_row:%p new_row:%p"
,
pOldSnode
->
id
,
pOldSnode
,
pNewSnode
);
pOldSnode
->
updateTime
=
pNewSnode
->
updateTime
;
pOldSnode
->
updateTime
=
pNewSnode
->
updateTime
;
return
0
;
return
0
;
}
}
...
@@ -339,7 +364,7 @@ static int32_t mndProcessDropSnodeReq(SMnodeMsg *pMsg) {
...
@@ -339,7 +364,7 @@ static int32_t mndProcessDropSnodeReq(SMnodeMsg *pMsg) {
SSnodeObj
*
pObj
=
mndAcquireSnode
(
pMnode
,
pDrop
->
dnodeId
);
SSnodeObj
*
pObj
=
mndAcquireSnode
(
pMnode
,
pDrop
->
dnodeId
);
if
(
pObj
==
NULL
)
{
if
(
pObj
==
NULL
)
{
mError
(
"snode:%d, not exist"
,
pDrop
->
dnodeId
);
mError
(
"snode:%d, not exist"
,
pDrop
->
dnodeId
);
terrno
=
TSDB_CODE_MND_
D
NODE_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_
S
NODE_NOT_EXIST
;
return
-
1
;
return
-
1
;
}
}
...
...
source/dnode/mnode/impl/src/mndStb.c
浏览文件 @
d3927b54
...
@@ -70,90 +70,115 @@ int32_t mndInitStb(SMnode *pMnode) {
...
@@ -70,90 +70,115 @@ int32_t mndInitStb(SMnode *pMnode) {
void
mndCleanupStb
(
SMnode
*
pMnode
)
{}
void
mndCleanupStb
(
SMnode
*
pMnode
)
{}
static
SSdbRaw
*
mndStbActionEncode
(
SStbObj
*
pStb
)
{
static
SSdbRaw
*
mndStbActionEncode
(
SStbObj
*
pStb
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int32_t
size
=
sizeof
(
SStbObj
)
+
(
pStb
->
numOfColumns
+
pStb
->
numOfTags
)
*
sizeof
(
SSchema
)
+
TSDB_STB_RESERVE_SIZE
;
int32_t
size
=
sizeof
(
SStbObj
)
+
(
pStb
->
numOfColumns
+
pStb
->
numOfTags
)
*
sizeof
(
SSchema
)
+
TSDB_STB_RESERVE_SIZE
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_STB
,
TSDB_STB_VER_NUMBER
,
size
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_STB
,
TSDB_STB_VER_NUMBER
,
size
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
STB_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pStb
->
name
,
TSDB_TABLE_FNAME_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pStb
->
name
,
TSDB_TABLE_FNAME_LEN
,
STB_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pStb
->
db
,
TSDB_DB_FNAME_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pStb
->
db
,
TSDB_DB_FNAME_LEN
,
STB_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pStb
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pStb
->
createdTime
,
STB_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pStb
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pStb
->
updateTime
,
STB_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pStb
->
uid
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pStb
->
uid
,
STB_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pStb
->
dbUid
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pStb
->
dbUid
,
STB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pStb
->
version
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pStb
->
version
,
STB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pStb
->
numOfColumns
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pStb
->
numOfColumns
,
STB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pStb
->
numOfTags
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pStb
->
numOfTags
,
STB_ENCODE_OVER
)
int32_t
totalCols
=
pStb
->
numOfColumns
+
pStb
->
numOfTags
;
int32_t
totalCols
=
pStb
->
numOfColumns
+
pStb
->
numOfTags
;
for
(
int32_t
i
=
0
;
i
<
totalCols
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
totalCols
;
++
i
)
{
SSchema
*
pSchema
=
&
pStb
->
pSchema
[
i
];
SSchema
*
pSchema
=
&
pStb
->
pSchema
[
i
];
SDB_SET_INT8
(
pRaw
,
dataPos
,
pSchema
->
type
);
SDB_SET_INT8
(
pRaw
,
dataPos
,
pSchema
->
type
,
STB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pSchema
->
colId
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pSchema
->
colId
,
STB_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pSchema
->
bytes
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pSchema
->
bytes
,
STB_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pSchema
->
name
,
TSDB_COL_NAME_LEN
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pSchema
->
name
,
TSDB_COL_NAME_LEN
,
STB_ENCODE_OVER
)
}
}
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_STB_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_STB_RESERVE_SIZE
,
STB_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
STB_ENCODE_OVER
)
terrno
=
0
;
STB_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"stb:%s, failed to encode to raw:%p since %s"
,
pStb
->
name
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"stb:%s, encode to raw:%p, row:%p"
,
pStb
->
name
,
pRaw
,
pStb
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndStbActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndStbActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
STB_DECODE_OVER
;
if
(
sver
!=
TSDB_STB_VER_NUMBER
)
{
if
(
sver
!=
TSDB_STB_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode stable since %s"
,
terrstr
());
goto
STB_DECODE_OVER
;
return
NULL
;
}
}
int32_t
size
=
sizeof
(
SStbObj
)
+
TSDB_MAX_COLUMNS
*
sizeof
(
SSchema
);
int32_t
size
=
sizeof
(
SStbObj
)
+
TSDB_MAX_COLUMNS
*
sizeof
(
SSchema
);
SSdbRow
*
pRow
=
sdbAllocRow
(
size
);
SSdbRow
*
pRow
=
sdbAllocRow
(
size
);
if
(
pRow
==
NULL
)
goto
STB_DECODE_OVER
;
SStbObj
*
pStb
=
sdbGetRowObj
(
pRow
);
SStbObj
*
pStb
=
sdbGetRowObj
(
pRow
);
if
(
pStb
==
NULL
)
return
NULL
;
if
(
pStb
==
NULL
)
goto
STB_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pStb
->
name
,
TSDB_TABLE_FNAME_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pStb
->
name
,
TSDB_TABLE_FNAME_LEN
,
STB_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pStb
->
db
,
TSDB_DB_FNAME_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pStb
->
db
,
TSDB_DB_FNAME_LEN
,
STB_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pStb
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pStb
->
createdTime
,
STB_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pStb
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pStb
->
updateTime
,
STB_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pStb
->
uid
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pStb
->
uid
,
STB_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pStb
->
dbUid
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pStb
->
dbUid
,
STB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pStb
->
version
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pStb
->
version
,
STB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pStb
->
numOfColumns
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pStb
->
numOfColumns
,
STB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pStb
->
numOfTags
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pStb
->
numOfTags
,
STB_DECODE_OVER
)
int32_t
totalCols
=
pStb
->
numOfColumns
+
pStb
->
numOfTags
;
int32_t
totalCols
=
pStb
->
numOfColumns
+
pStb
->
numOfTags
;
pStb
->
pSchema
=
calloc
(
totalCols
,
sizeof
(
SSchema
));
pStb
->
pSchema
=
calloc
(
totalCols
,
sizeof
(
SSchema
));
for
(
int32_t
i
=
0
;
i
<
totalCols
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
totalCols
;
++
i
)
{
SSchema
*
pSchema
=
&
pStb
->
pSchema
[
i
];
SSchema
*
pSchema
=
&
pStb
->
pSchema
[
i
];
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pSchema
->
type
);
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pSchema
->
type
,
STB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pSchema
->
colId
);
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pSchema
->
colId
,
STB_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pSchema
->
bytes
);
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pSchema
->
bytes
,
STB_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pSchema
->
name
,
TSDB_COL_NAME_LEN
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pSchema
->
name
,
TSDB_COL_NAME_LEN
,
STB_DECODE_OVER
)
}
}
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_STB_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_STB_RESERVE_SIZE
,
STB_DECODE_OVER
)
terrno
=
0
;
STB_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"stb:%s, failed to decode from raw:%p since %s"
,
pStb
->
name
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"stb:%s, decode from raw:%p, row:%p"
,
pStb
->
name
,
pRaw
,
pStb
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndStbActionInsert
(
SSdb
*
pSdb
,
SStbObj
*
pStb
)
{
static
int32_t
mndStbActionInsert
(
SSdb
*
pSdb
,
SStbObj
*
pStb
)
{
mTrace
(
"stb:%s, perform insert action
"
,
pStb
->
name
);
mTrace
(
"stb:%s, perform insert action
, row:%p"
,
pStb
->
name
,
pStb
);
return
0
;
return
0
;
}
}
static
int32_t
mndStbActionDelete
(
SSdb
*
pSdb
,
SStbObj
*
pStb
)
{
static
int32_t
mndStbActionDelete
(
SSdb
*
pSdb
,
SStbObj
*
pStb
)
{
mTrace
(
"stb:%s, perform delete action
"
,
pStb
->
name
);
mTrace
(
"stb:%s, perform delete action
, row:%p"
,
pStb
->
name
,
pStb
);
return
0
;
return
0
;
}
}
static
int32_t
mndStbActionUpdate
(
SSdb
*
pSdb
,
SStbObj
*
pOldStb
,
SStbObj
*
pNewStb
)
{
static
int32_t
mndStbActionUpdate
(
SSdb
*
pSdb
,
SStbObj
*
pOldStb
,
SStbObj
*
pNewStb
)
{
mTrace
(
"stb:%s, perform update action
"
,
pOldStb
->
name
);
mTrace
(
"stb:%s, perform update action
, old_row:%p new_row:%p"
,
pOldStb
->
name
,
pOldStb
,
pNewStb
);
atomic_exchange_32
(
&
pOldStb
->
updateTime
,
pNewStb
->
updateTime
);
atomic_exchange_32
(
&
pOldStb
->
updateTime
,
pNewStb
->
updateTime
);
atomic_exchange_32
(
&
pOldStb
->
version
,
pNewStb
->
version
);
atomic_exchange_32
(
&
pOldStb
->
version
,
pNewStb
->
version
);
...
@@ -177,7 +202,7 @@ static int32_t mndStbActionUpdate(SSdb *pSdb, SStbObj *pOldStb, SStbObj *pNewStb
...
@@ -177,7 +202,7 @@ static int32_t mndStbActionUpdate(SSdb *pSdb, SStbObj *pOldStb, SStbObj *pNewStb
}
}
SStbObj
*
mndAcquireStb
(
SMnode
*
pMnode
,
char
*
stbName
)
{
SStbObj
*
mndAcquireStb
(
SMnode
*
pMnode
,
char
*
stbName
)
{
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SStbObj
*
pStb
=
sdbAcquire
(
pSdb
,
SDB_STB
,
stbName
);
SStbObj
*
pStb
=
sdbAcquire
(
pSdb
,
SDB_STB
,
stbName
);
if
(
pStb
==
NULL
)
{
if
(
pStb
==
NULL
)
{
terrno
=
TSDB_CODE_MND_STB_NOT_EXIST
;
terrno
=
TSDB_CODE_MND_STB_NOT_EXIST
;
...
@@ -202,9 +227,9 @@ static SDbObj *mndAcquireDbByStb(SMnode *pMnode, char *stbName) {
...
@@ -202,9 +227,9 @@ static SDbObj *mndAcquireDbByStb(SMnode *pMnode, char *stbName) {
static
void
*
mndBuildCreateStbMsg
(
SMnode
*
pMnode
,
SVgObj
*
pVgroup
,
SStbObj
*
pStb
,
int
*
pContLen
)
{
static
void
*
mndBuildCreateStbMsg
(
SMnode
*
pMnode
,
SVgObj
*
pVgroup
,
SStbObj
*
pStb
,
int
*
pContLen
)
{
SVCreateTbReq
req
;
SVCreateTbReq
req
;
void
*
buf
;
void
*
buf
;
int
bsize
;
int
bsize
;
SMsgHead
*
pMsgHead
;
SMsgHead
*
pMsgHead
;
req
.
ver
=
0
;
req
.
ver
=
0
;
req
.
name
=
pStb
->
name
;
req
.
name
=
pStb
->
name
;
...
@@ -325,9 +350,9 @@ static int32_t mndSetCreateStbCommitLogs(SMnode *pMnode, STrans *pTrans, SDbObj
...
@@ -325,9 +350,9 @@ static int32_t mndSetCreateStbCommitLogs(SMnode *pMnode, STrans *pTrans, SDbObj
}
}
static
int32_t
mndSetCreateStbRedoActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SDbObj
*
pDb
,
SStbObj
*
pStb
)
{
static
int32_t
mndSetCreateStbRedoActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SDbObj
*
pDb
,
SStbObj
*
pStb
)
{
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SVgObj
*
pVgroup
=
NULL
;
SVgObj
*
pVgroup
=
NULL
;
void
*
pIter
=
NULL
;
void
*
pIter
=
NULL
;
int
contLen
;
int
contLen
;
while
(
1
)
{
while
(
1
)
{
...
@@ -361,9 +386,9 @@ static int32_t mndSetCreateStbRedoActions(SMnode *pMnode, STrans *pTrans, SDbObj
...
@@ -361,9 +386,9 @@ static int32_t mndSetCreateStbRedoActions(SMnode *pMnode, STrans *pTrans, SDbObj
}
}
static
int32_t
mndSetCreateStbUndoActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SDbObj
*
pDb
,
SStbObj
*
pStb
)
{
static
int32_t
mndSetCreateStbUndoActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SDbObj
*
pDb
,
SStbObj
*
pStb
)
{
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SVgObj
*
pVgroup
=
NULL
;
SVgObj
*
pVgroup
=
NULL
;
void
*
pIter
=
NULL
;
void
*
pIter
=
NULL
;
while
(
1
)
{
while
(
1
)
{
pIter
=
sdbFetch
(
pSdb
,
SDB_VGROUP
,
pIter
,
(
void
**
)
&
pVgroup
);
pIter
=
sdbFetch
(
pSdb
,
SDB_VGROUP
,
pIter
,
(
void
**
)
&
pVgroup
);
...
@@ -467,7 +492,7 @@ CREATE_STB_OVER:
...
@@ -467,7 +492,7 @@ CREATE_STB_OVER:
}
}
static
int32_t
mndProcessCreateStbMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mndProcessCreateStbMsg
(
SMnodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SCreateStbMsg
*
pCreate
=
pMsg
->
rpcMsg
.
pCont
;
SCreateStbMsg
*
pCreate
=
pMsg
->
rpcMsg
.
pCont
;
mDebug
(
"stb:%s, start to create"
,
pCreate
->
name
);
mDebug
(
"stb:%s, start to create"
,
pCreate
->
name
);
...
@@ -551,7 +576,7 @@ static int32_t mndCheckAlterStbMsg(SAlterStbMsg *pAlter) {
...
@@ -551,7 +576,7 @@ static int32_t mndCheckAlterStbMsg(SAlterStbMsg *pAlter) {
static
int32_t
mndUpdateStb
(
SMnode
*
pMnode
,
SMnodeMsg
*
pMsg
,
SStbObj
*
pOldStb
,
SStbObj
*
pNewStb
)
{
return
0
;
}
static
int32_t
mndUpdateStb
(
SMnode
*
pMnode
,
SMnodeMsg
*
pMsg
,
SStbObj
*
pOldStb
,
SStbObj
*
pNewStb
)
{
return
0
;
}
static
int32_t
mndProcessAlterStbMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mndProcessAlterStbMsg
(
SMnodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SAlterStbMsg
*
pAlter
=
pMsg
->
rpcMsg
.
pCont
;
SAlterStbMsg
*
pAlter
=
pMsg
->
rpcMsg
.
pCont
;
mDebug
(
"stb:%s, start to alter"
,
pAlter
->
name
);
mDebug
(
"stb:%s, start to alter"
,
pAlter
->
name
);
...
@@ -665,7 +690,7 @@ DROP_STB_OVER:
...
@@ -665,7 +690,7 @@ DROP_STB_OVER:
}
}
static
int32_t
mndProcessDropStbMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mndProcessDropStbMsg
(
SMnodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SDropStbMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
SDropStbMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
mDebug
(
"stb:%s, start to drop"
,
pDrop
->
name
);
mDebug
(
"stb:%s, start to drop"
,
pDrop
->
name
);
...
@@ -700,7 +725,7 @@ static int32_t mndProcessDropStbInRsp(SMnodeMsg *pMsg) {
...
@@ -700,7 +725,7 @@ static int32_t mndProcessDropStbInRsp(SMnodeMsg *pMsg) {
}
}
static
int32_t
mndProcessStbMetaMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mndProcessStbMetaMsg
(
SMnodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
STableInfoMsg
*
pInfo
=
pMsg
->
rpcMsg
.
pCont
;
STableInfoMsg
*
pInfo
=
pMsg
->
rpcMsg
.
pCont
;
mDebug
(
"stb:%s, start to retrieve meta"
,
pInfo
->
tableFname
);
mDebug
(
"stb:%s, start to retrieve meta"
,
pInfo
->
tableFname
);
...
@@ -772,7 +797,7 @@ static int32_t mndGetNumOfStbs(SMnode *pMnode, char *dbName, int32_t *pNumOfStbs
...
@@ -772,7 +797,7 @@ static int32_t mndGetNumOfStbs(SMnode *pMnode, char *dbName, int32_t *pNumOfStbs
}
}
int32_t
numOfStbs
=
0
;
int32_t
numOfStbs
=
0
;
void
*
pIter
=
NULL
;
void
*
pIter
=
NULL
;
while
(
1
)
{
while
(
1
)
{
SStbObj
*
pStb
=
NULL
;
SStbObj
*
pStb
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_STB
,
pIter
,
(
void
**
)
&
pStb
);
pIter
=
sdbFetch
(
pSdb
,
SDB_STB
,
pIter
,
(
void
**
)
&
pStb
);
...
@@ -791,7 +816,7 @@ static int32_t mndGetNumOfStbs(SMnode *pMnode, char *dbName, int32_t *pNumOfStbs
...
@@ -791,7 +816,7 @@ static int32_t mndGetNumOfStbs(SMnode *pMnode, char *dbName, int32_t *pNumOfStbs
static
int32_t
mndGetStbMeta
(
SMnodeMsg
*
pMsg
,
SShowObj
*
pShow
,
STableMetaMsg
*
pMeta
)
{
static
int32_t
mndGetStbMeta
(
SMnodeMsg
*
pMsg
,
SShowObj
*
pShow
,
STableMetaMsg
*
pMeta
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
if
(
mndGetNumOfStbs
(
pMnode
,
pShow
->
db
,
&
pShow
->
numOfRows
)
!=
0
)
{
if
(
mndGetNumOfStbs
(
pMnode
,
pShow
->
db
,
&
pShow
->
numOfRows
)
!=
0
)
{
return
-
1
;
return
-
1
;
...
...
source/dnode/mnode/impl/src/mndTopic.c
浏览文件 @
d3927b54
...
@@ -59,80 +59,105 @@ int32_t mndInitTopic(SMnode *pMnode) {
...
@@ -59,80 +59,105 @@ int32_t mndInitTopic(SMnode *pMnode) {
void
mndCleanupTopic
(
SMnode
*
pMnode
)
{}
void
mndCleanupTopic
(
SMnode
*
pMnode
)
{}
static
SSdbRaw
*
mndTopicActionEncode
(
STopicObj
*
pTopic
)
{
static
SSdbRaw
*
mndTopicActionEncode
(
STopicObj
*
pTopic
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int32_t
size
=
sizeof
(
STopicObj
)
+
MND_TOPIC_RESERVE_SIZE
;
int32_t
size
=
sizeof
(
STopicObj
)
+
MND_TOPIC_RESERVE_SIZE
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_TOPIC
,
MND_TOPIC_VER_NUMBER
,
size
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_TOPIC
,
MND_TOPIC_VER_NUMBER
,
size
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
TOPIC_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
name
,
TSDB_TABLE_FNAME_LEN
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
name
,
TSDB_TABLE_FNAME_LEN
,
TOPIC_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
db
,
TSDB_DB_FNAME_LEN
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
db
,
TSDB_DB_FNAME_LEN
,
TOPIC_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
createTime
);
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
createTime
,
TOPIC_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
updateTime
);
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
updateTime
,
TOPIC_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
uid
);
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
uid
,
TOPIC_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
dbUid
);
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
dbUid
,
TOPIC_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pTopic
->
version
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pTopic
->
version
,
TOPIC_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pTopic
->
execLen
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pTopic
->
execLen
,
TOPIC_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
executor
,
pTopic
->
execLen
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
executor
,
pTopic
->
execLen
,
TOPIC_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pTopic
->
sqlLen
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
pTopic
->
sqlLen
,
TOPIC_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
sql
,
pTopic
->
sqlLen
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
sql
,
pTopic
->
sqlLen
,
TOPIC_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
);
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
,
TOPIC_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
TOPIC_ENCODE_OVER
)
terrno
=
0
;
TOPIC_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"topic:%s, failed to encode to raw:%p since %s"
,
pTopic
->
name
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"topic:%s, encode to raw:%p, row:%p"
,
pTopic
->
name
,
pRaw
,
pTopic
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndTopicActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndTopicActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
TOPIC_DECODE_OVER
;
if
(
sver
!=
MND_TOPIC_VER_NUMBER
)
{
if
(
sver
!=
MND_TOPIC_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode topic since %s"
,
terrstr
());
goto
TOPIC_DECODE_OVER
;
return
NULL
;
}
}
int32_t
size
=
sizeof
(
STopicObj
)
+
TSDB_MAX_COLUMNS
*
sizeof
(
SSchema
);
int32_t
size
=
sizeof
(
STopicObj
)
+
TSDB_MAX_COLUMNS
*
sizeof
(
SSchema
);
SSdbRow
*
pRow
=
sdbAllocRow
(
size
);
SSdbRow
*
pRow
=
sdbAllocRow
(
size
);
if
(
pRow
==
NULL
)
goto
TOPIC_DECODE_OVER
;
STopicObj
*
pTopic
=
sdbGetRowObj
(
pRow
);
STopicObj
*
pTopic
=
sdbGetRowObj
(
pRow
);
if
(
pTopic
==
NULL
)
return
NULL
;
if
(
pTopic
==
NULL
)
goto
TOPIC_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pTopic
->
name
,
TSDB_TABLE_FNAME_LEN
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
name
,
TSDB_TABLE_FNAME_LEN
,
TOPIC_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pTopic
->
db
,
TSDB_DB_FNAME_LEN
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
db
,
TSDB_DB_FNAME_LEN
,
TOPIC_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pTopic
->
createTime
);
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pTopic
->
createTime
,
TOPIC_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pTopic
->
updateTime
);
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pTopic
->
updateTime
,
TOPIC_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pTopic
->
uid
);
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pTopic
->
uid
,
TOPIC_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pTopic
->
dbUid
);
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pTopic
->
dbUid
,
TOPIC_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pTopic
->
version
);
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pTopic
->
version
,
TOPIC_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pTopic
->
execLen
);
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pTopic
->
execLen
,
TOPIC_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pTopic
->
executor
,
pTopic
->
execLen
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
executor
,
pTopic
->
execLen
,
TOPIC_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pTopic
->
sqlLen
);
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pTopic
->
sqlLen
,
TOPIC_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pTopic
->
sql
,
pTopic
->
sqlLen
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pTopic
->
sql
,
pTopic
->
sqlLen
,
TOPIC_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
);
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
,
TOPIC_DECODE_OVER
)
terrno
=
0
;
TOPIC_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"topic:%s, failed to decode from raw:%p since %s"
,
pTopic
->
name
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"topic:%s, decode from raw:%p, row:%p"
,
pTopic
->
name
,
pRaw
,
pTopic
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndTopicActionInsert
(
SSdb
*
pSdb
,
STopicObj
*
pTopic
)
{
static
int32_t
mndTopicActionInsert
(
SSdb
*
pSdb
,
STopicObj
*
pTopic
)
{
mTrace
(
"topic:%s, perform insert action
"
,
pTopic
->
name
);
mTrace
(
"topic:%s, perform insert action
, row:%p"
,
pTopic
->
name
,
pTopic
);
return
0
;
return
0
;
}
}
static
int32_t
mndTopicActionDelete
(
SSdb
*
pSdb
,
STopicObj
*
pTopic
)
{
static
int32_t
mndTopicActionDelete
(
SSdb
*
pSdb
,
STopicObj
*
pTopic
)
{
mTrace
(
"topic:%s, perform delete action
"
,
pTopic
->
name
);
mTrace
(
"topic:%s, perform delete action
, row:%p"
,
pTopic
->
name
,
pTopic
);
return
0
;
return
0
;
}
}
static
int32_t
mndTopicActionUpdate
(
SSdb
*
pSdb
,
STopicObj
*
pOldTopic
,
STopicObj
*
pNewTopic
)
{
static
int32_t
mndTopicActionUpdate
(
SSdb
*
pSdb
,
STopicObj
*
pOldTopic
,
STopicObj
*
pNewTopic
)
{
mTrace
(
"topic:%s, perform update action
"
,
pOldTopic
->
name
);
mTrace
(
"topic:%s, perform update action
, old_row:%p new_row:%p"
,
pOldTopic
->
name
,
pOldTopic
,
pNewTopic
);
atomic_exchange_32
(
&
pOldTopic
->
updateTime
,
pNewTopic
->
updateTime
);
atomic_exchange_32
(
&
pOldTopic
->
updateTime
,
pNewTopic
->
updateTime
);
atomic_exchange_32
(
&
pOldTopic
->
version
,
pNewTopic
->
version
);
atomic_exchange_32
(
&
pOldTopic
->
version
,
pNewTopic
->
version
);
taosWLockLatch
(
&
pOldTopic
->
lock
);
taosWLockLatch
(
&
pOldTopic
->
lock
);
//TODO handle update
//
TODO handle update
taosWUnLockLatch
(
&
pOldTopic
->
lock
);
taosWUnLockLatch
(
&
pOldTopic
->
lock
);
return
0
;
return
0
;
...
@@ -201,9 +226,9 @@ static int32_t mndCreateTopic(SMnode *pMnode, SMnodeMsg *pMsg, SCMCreateTopicReq
...
@@ -201,9 +226,9 @@ static int32_t mndCreateTopic(SMnode *pMnode, SMnodeMsg *pMsg, SCMCreateTopicReq
}
}
static
int32_t
mndProcessCreateTopicMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mndProcessCreateTopicMsg
(
SMnodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
char
*
msgStr
=
pMsg
->
rpcMsg
.
pCont
;
char
*
msgStr
=
pMsg
->
rpcMsg
.
pCont
;
SCMCreateTopicReq
*
pCreate
;
SCMCreateTopicReq
*
pCreate
;
tDeserializeSCMCreateTopicReq
(
msgStr
,
pCreate
);
tDeserializeSCMCreateTopicReq
(
msgStr
,
pCreate
);
mDebug
(
"topic:%s, start to create"
,
pCreate
->
name
);
mDebug
(
"topic:%s, start to create"
,
pCreate
->
name
);
...
@@ -245,9 +270,7 @@ static int32_t mndProcessCreateTopicMsg(SMnodeMsg *pMsg) {
...
@@ -245,9 +270,7 @@ static int32_t mndProcessCreateTopicMsg(SMnodeMsg *pMsg) {
return
TSDB_CODE_MND_ACTION_IN_PROGRESS
;
return
TSDB_CODE_MND_ACTION_IN_PROGRESS
;
}
}
static
int32_t
mndDropTopic
(
SMnode
*
pMnode
,
SMnodeMsg
*
pMsg
,
STopicObj
*
pTopic
)
{
static
int32_t
mndDropTopic
(
SMnode
*
pMnode
,
SMnodeMsg
*
pMsg
,
STopicObj
*
pTopic
)
{
return
0
;
}
return
0
;
}
static
int32_t
mndProcessDropTopicMsg
(
SMnodeMsg
*
pMsg
)
{
static
int32_t
mndProcessDropTopicMsg
(
SMnodeMsg
*
pMsg
)
{
SMnode
*
pMnode
=
pMsg
->
pMnode
;
SMnode
*
pMnode
=
pMsg
->
pMnode
;
...
...
source/dnode/mnode/impl/src/mndTrans.c
浏览文件 @
d3927b54
...
@@ -31,6 +31,7 @@ static int32_t mndTransAppendLog(SArray *pArray, SSdbRaw *pRaw);
...
@@ -31,6 +31,7 @@ static int32_t mndTransAppendLog(SArray *pArray, SSdbRaw *pRaw);
static
int32_t
mndTransAppendAction
(
SArray
*
pArray
,
STransAction
*
pAction
);
static
int32_t
mndTransAppendAction
(
SArray
*
pArray
,
STransAction
*
pAction
);
static
void
mndTransDropLogs
(
SArray
*
pArray
);
static
void
mndTransDropLogs
(
SArray
*
pArray
);
static
void
mndTransDropActions
(
SArray
*
pArray
);
static
void
mndTransDropActions
(
SArray
*
pArray
);
static
void
mndTransDropData
(
STrans
*
pTrans
);
static
int32_t
mndTransExecuteLogs
(
SMnode
*
pMnode
,
SArray
*
pArray
);
static
int32_t
mndTransExecuteLogs
(
SMnode
*
pMnode
,
SArray
*
pArray
);
static
int32_t
mndTransExecuteActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SArray
*
pArray
);
static
int32_t
mndTransExecuteActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SArray
*
pArray
);
static
int32_t
mndTransExecuteRedoLogs
(
SMnode
*
pMnode
,
STrans
*
pTrans
);
static
int32_t
mndTransExecuteRedoLogs
(
SMnode
*
pMnode
,
STrans
*
pTrans
);
...
@@ -70,6 +71,8 @@ int32_t mndInitTrans(SMnode *pMnode) {
...
@@ -70,6 +71,8 @@ int32_t mndInitTrans(SMnode *pMnode) {
void
mndCleanupTrans
(
SMnode
*
pMnode
)
{}
void
mndCleanupTrans
(
SMnode
*
pMnode
)
{}
static
SSdbRaw
*
mndTransActionEncode
(
STrans
*
pTrans
)
{
static
SSdbRaw
*
mndTransActionEncode
(
STrans
*
pTrans
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int32_t
rawDataLen
=
sizeof
(
STrans
)
+
MND_TRANS_RESERVE_SIZE
;
int32_t
rawDataLen
=
sizeof
(
STrans
)
+
MND_TRANS_RESERVE_SIZE
;
int32_t
redoLogNum
=
taosArrayGetSize
(
pTrans
->
redoLogs
);
int32_t
redoLogNum
=
taosArrayGetSize
(
pTrans
->
redoLogs
);
int32_t
undoLogNum
=
taosArrayGetSize
(
pTrans
->
undoLogs
);
int32_t
undoLogNum
=
taosArrayGetSize
(
pTrans
->
undoLogs
);
...
@@ -109,75 +112,95 @@ static SSdbRaw *mndTransActionEncode(STrans *pTrans) {
...
@@ -109,75 +112,95 @@ static SSdbRaw *mndTransActionEncode(STrans *pTrans) {
}
}
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_INT32
(
pRaw
,
dataPos
,
pTrans
->
id
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pTrans
->
id
,
TRANS_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pTrans
->
policy
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pTrans
->
policy
,
TRANS_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
redoLogNum
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
redoLogNum
,
TRANS_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
undoLogNum
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
undoLogNum
,
TRANS_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
commitLogNum
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
commitLogNum
,
TRANS_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
redoActionNum
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
redoActionNum
,
TRANS_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
undoActionNum
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
undoActionNum
,
TRANS_ENCODE_OVER
)
for
(
int32_t
i
=
0
;
i
<
redoLogNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
redoLogNum
;
++
i
)
{
SSdbRaw
*
pTmp
=
taosArrayGetP
(
pTrans
->
redoLogs
,
i
);
SSdbRaw
*
pTmp
=
taosArrayGetP
(
pTrans
->
redoLogs
,
i
);
int32_t
len
=
sdbGetRawTotalSize
(
pTmp
);
int32_t
len
=
sdbGetRawTotalSize
(
pTmp
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
len
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
len
,
TRANS_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
pTmp
,
len
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
pTmp
,
len
,
TRANS_ENCODE_OVER
)
}
}
for
(
int32_t
i
=
0
;
i
<
undoLogNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
undoLogNum
;
++
i
)
{
SSdbRaw
*
pTmp
=
taosArrayGetP
(
pTrans
->
undoLogs
,
i
);
SSdbRaw
*
pTmp
=
taosArrayGetP
(
pTrans
->
undoLogs
,
i
);
int32_t
len
=
sdbGetRawTotalSize
(
pTmp
);
int32_t
len
=
sdbGetRawTotalSize
(
pTmp
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
len
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
len
,
TRANS_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
pTmp
,
len
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
pTmp
,
len
,
TRANS_ENCODE_OVER
)
}
}
for
(
int32_t
i
=
0
;
i
<
commitLogNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
commitLogNum
;
++
i
)
{
SSdbRaw
*
pTmp
=
taosArrayGetP
(
pTrans
->
commitLogs
,
i
);
SSdbRaw
*
pTmp
=
taosArrayGetP
(
pTrans
->
commitLogs
,
i
);
int32_t
len
=
sdbGetRawTotalSize
(
pTmp
);
int32_t
len
=
sdbGetRawTotalSize
(
pTmp
);
SDB_SET_INT32
(
pRaw
,
dataPos
,
len
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
len
,
TRANS_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
pTmp
,
len
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
pTmp
,
len
,
TRANS_ENCODE_OVER
)
}
}
for
(
int32_t
i
=
0
;
i
<
redoActionNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
redoActionNum
;
++
i
)
{
STransAction
*
pAction
=
taosArrayGet
(
pTrans
->
redoActions
,
i
);
STransAction
*
pAction
=
taosArrayGet
(
pTrans
->
redoActions
,
i
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
&
pAction
->
epSet
,
sizeof
(
SEpSet
)
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
&
pAction
->
epSet
,
sizeof
(
SEpSet
)
,
TRANS_ENCODE_OVER
)
SDB_SET_INT16
(
pRaw
,
dataPos
,
pAction
->
msgType
)
SDB_SET_INT16
(
pRaw
,
dataPos
,
pAction
->
msgType
,
TRANS_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAction
->
contLen
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAction
->
contLen
,
TRANS_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pAction
->
pCont
,
pAction
->
contLen
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pAction
->
pCont
,
pAction
->
contLen
,
TRANS_ENCODE_OVER
)
}
}
for
(
int32_t
i
=
0
;
i
<
undoActionNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
undoActionNum
;
++
i
)
{
STransAction
*
pAction
=
taosArrayGet
(
pTrans
->
undoActions
,
i
);
STransAction
*
pAction
=
taosArrayGet
(
pTrans
->
undoActions
,
i
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
&
pAction
->
epSet
,
sizeof
(
SEpSet
));
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
&
pAction
->
epSet
,
sizeof
(
SEpSet
),
TRANS_ENCODE_OVER
)
SDB_SET_INT16
(
pRaw
,
dataPos
,
pAction
->
msgType
)
SDB_SET_INT16
(
pRaw
,
dataPos
,
pAction
->
msgType
,
TRANS_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAction
->
contLen
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pAction
->
contLen
,
TRANS_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
pAction
->
pCont
,
pAction
->
contLen
);
SDB_SET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
pAction
->
pCont
,
pAction
->
contLen
,
TRANS_ENCODE_OVER
)
}
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_TRANS_RESERVE_SIZE
,
TRANS_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
TRANS_ENCODE_OVER
)
terrno
=
0
;
TRANS_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"trans:%d, failed to encode to raw:%p len:%d since %s"
,
pTrans
->
id
,
pRaw
,
dataPos
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
}
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_TRANS_RESERVE_SIZE
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
mTrace
(
"trans:%d, encode to raw:%p, len:%d"
,
pTrans
->
id
,
pRaw
,
dataPos
);
mTrace
(
"trans:%d, encode to raw:%p, len:%d"
,
pTrans
->
id
,
pRaw
,
dataPos
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndTransActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndTransActionDecode
(
SSdbRaw
*
pRaw
)
{
int32_t
code
=
0
;
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
SSdbRow
*
pRow
=
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
STrans
*
pTrans
=
NULL
;
char
*
pData
=
NULL
;
int32_t
dataLen
=
0
;
int8_t
sver
=
0
;
int32_t
redoLogNum
=
0
;
int32_t
undoLogNum
=
0
;
int32_t
commitLogNum
=
0
;
int32_t
redoActionNum
=
0
;
int32_t
undoActionNum
=
0
;
int32_t
dataPos
=
0
;
STransAction
action
=
{
0
};
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
TRANS_DECODE_OVER
;
if
(
sver
!=
MND_TRANS_VER_NUMBER
)
{
if
(
sver
!=
MND_TRANS_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode trans since %s"
,
terrstr
());
goto
TRANS_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
STrans
));
pRow
=
sdbAllocRow
(
sizeof
(
STrans
));
STrans
*
pTrans
=
sdbGetRowObj
(
pRow
);
if
(
pRow
==
NULL
)
goto
TRANS_DECODE_OVER
;
if
(
pTrans
==
NULL
)
{
mError
(
"failed to alloc trans from raw:%p since %s"
,
pRaw
,
terrstr
());
pTrans
=
sdbGetRowObj
(
pRow
);
return
NULL
;
if
(
pTrans
==
NULL
)
goto
TRANS_DECODE_OVER
;
}
pTrans
->
redoLogs
=
taosArrayInit
(
MND_TRANS_ARRAY_SIZE
,
sizeof
(
void
*
));
pTrans
->
redoLogs
=
taosArrayInit
(
MND_TRANS_ARRAY_SIZE
,
sizeof
(
void
*
));
pTrans
->
undoLogs
=
taosArrayInit
(
MND_TRANS_ARRAY_SIZE
,
sizeof
(
void
*
));
pTrans
->
undoLogs
=
taosArrayInit
(
MND_TRANS_ARRAY_SIZE
,
sizeof
(
void
*
));
...
@@ -185,112 +208,79 @@ static SSdbRow *mndTransActionDecode(SSdbRaw *pRaw) {
...
@@ -185,112 +208,79 @@ static SSdbRow *mndTransActionDecode(SSdbRaw *pRaw) {
pTrans
->
redoActions
=
taosArrayInit
(
MND_TRANS_ARRAY_SIZE
,
sizeof
(
STransAction
));
pTrans
->
redoActions
=
taosArrayInit
(
MND_TRANS_ARRAY_SIZE
,
sizeof
(
STransAction
));
pTrans
->
undoActions
=
taosArrayInit
(
MND_TRANS_ARRAY_SIZE
,
sizeof
(
STransAction
));
pTrans
->
undoActions
=
taosArrayInit
(
MND_TRANS_ARRAY_SIZE
,
sizeof
(
STransAction
));
if
(
pTrans
->
redoLogs
==
NULL
||
pTrans
->
undoLogs
==
NULL
||
pTrans
->
commitLogs
==
NULL
||
if
(
pTrans
->
redoLogs
==
NULL
)
goto
TRANS_DECODE_OVER
;
pTrans
->
redoActions
==
NULL
||
pTrans
->
undoActions
==
NULL
)
{
if
(
pTrans
->
undoLogs
==
NULL
)
goto
TRANS_DECODE_OVER
;
mDebug
(
"trans:%d, failed to create array while parsed from raw:%p"
,
pTrans
->
id
,
pRaw
);
if
(
pTrans
->
commitLogs
==
NULL
)
goto
TRANS_DECODE_OVER
;
code
=
TSDB_CODE_OUT_OF_MEMORY
;
if
(
pTrans
->
redoActions
==
NULL
)
goto
TRANS_DECODE_OVER
;
goto
TRANS_DECODE_OVER
;
if
(
pTrans
->
undoActions
==
NULL
)
goto
TRANS_DECODE_OVER
;
}
int32_t
redoLogNum
=
0
;
int32_t
undoLogNum
=
0
;
int32_t
commitLogNum
=
0
;
int32_t
redoActionNum
=
0
;
int32_t
undoActionNum
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pTrans
->
id
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pTrans
->
id
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
(
int8_t
*
)
&
pTrans
->
policy
,
TRANS_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
(
int8_t
*
)
&
pTrans
->
policy
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
redoLogNum
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
redoLogNum
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
undoLogNum
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
undoLogNum
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
commitLogNum
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
commitLogNum
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
redoActionNum
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
redoActionNum
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
undoActionNum
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
undoActionNum
)
for
(
int32_t
i
=
0
;
i
<
redoLogNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
redoLogNum
;
++
i
)
{
int32_t
dataLen
=
0
;
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
dataLen
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
dataLen
)
pData
=
malloc
(
dataLen
);
char
*
pData
=
malloc
(
dataLen
);
if
(
pData
==
NULL
)
goto
TRANS_DECODE_OVER
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pData
,
dataLen
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pData
,
dataLen
,
TRANS_DECODE_OVER
);
if
(
taosArrayPush
(
pTrans
->
redoLogs
,
&
pData
)
==
NULL
)
goto
TRANS_DECODE_OVER
;
void
*
ret
=
taosArrayPush
(
pTrans
->
redoLogs
,
&
pData
);
pData
=
NULL
;
if
(
ret
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
TRANS_DECODE_OVER
;
}
}
}
for
(
int32_t
i
=
0
;
i
<
undoLogNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
undoLogNum
;
++
i
)
{
int32_t
dataLen
=
0
;
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
dataLen
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
dataLen
)
pData
=
malloc
(
dataLen
);
char
*
pData
=
malloc
(
dataLen
);
if
(
pData
==
NULL
)
goto
TRANS_DECODE_OVER
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pData
,
dataLen
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pData
,
dataLen
,
TRANS_DECODE_OVER
);
if
(
taosArrayPush
(
pTrans
->
undoLogs
,
&
pData
)
==
NULL
)
goto
TRANS_DECODE_OVER
;
void
*
ret
=
taosArrayPush
(
pTrans
->
undoLogs
,
&
pData
);
pData
=
NULL
;
if
(
ret
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
TRANS_DECODE_OVER
;
}
}
}
for
(
int32_t
i
=
0
;
i
<
commitLogNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
commitLogNum
;
++
i
)
{
int32_t
dataLen
=
0
;
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
dataLen
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
dataLen
)
pData
=
malloc
(
dataLen
);
char
*
pData
=
malloc
(
dataLen
);
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pData
,
dataLen
,
TRANS_DECODE_OVER
);
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pData
,
dataLen
);
if
(
taosArrayPush
(
pTrans
->
commitLogs
,
&
pData
)
==
NULL
)
goto
TRANS_DECODE_OVER
;
pData
=
NULL
;
void
*
ret
=
taosArrayPush
(
pTrans
->
commitLogs
,
&
pData
);
if
(
ret
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
TRANS_DECODE_OVER
;
}
}
}
for
(
int32_t
i
=
0
;
i
<
redoActionNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
redoActionNum
;
++
i
)
{
STransAction
action
=
{
0
};
SDB_GET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
&
action
.
epSet
,
sizeof
(
SEpSet
),
TRANS_DECODE_OVER
);
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
(
void
*
)
&
action
.
epSet
,
sizeof
(
SEpSet
));
SDB_GET_INT16
(
pRaw
,
dataPos
,
&
action
.
msgType
,
TRANS_DECODE_OVER
)
SDB_GET_INT16
(
pRaw
,
pRow
,
dataPos
,
&
action
.
msgType
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
action
.
contLen
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
action
.
contLen
)
action
.
pCont
=
malloc
(
action
.
contLen
);
action
.
pCont
=
malloc
(
action
.
contLen
);
if
(
action
.
pCont
==
NULL
)
{
if
(
action
.
pCont
==
NULL
)
goto
TRANS_DECODE_OVER
;
code
=
TSDB_CODE_OUT_OF_MEMORY
;
SDB_GET_BINARY
(
pRaw
,
dataPos
,
action
.
pCont
,
action
.
contLen
,
TRANS_DECODE_OVER
);
goto
TRANS_DECODE_OVER
;
if
(
taosArrayPush
(
pTrans
->
redoActions
,
&
action
)
==
NULL
)
goto
TRANS_DECODE_OVER
;
}
action
.
pCont
=
NULL
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
action
.
pCont
,
action
.
contLen
);
void
*
ret
=
taosArrayPush
(
pTrans
->
redoActions
,
&
action
);
if
(
ret
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
TRANS_DECODE_OVER
;
}
}
}
for
(
int32_t
i
=
0
;
i
<
undoActionNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
undoActionNum
;
++
i
)
{
STransAction
action
=
{
0
};
SDB_GET_BINARY
(
pRaw
,
dataPos
,
(
void
*
)
&
action
.
epSet
,
sizeof
(
SEpSet
),
TRANS_DECODE_OVER
);
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
(
void
*
)
&
action
.
epSet
,
sizeof
(
SEpSet
));
SDB_GET_INT16
(
pRaw
,
dataPos
,
&
action
.
msgType
,
TRANS_DECODE_OVER
)
SDB_GET_INT16
(
pRaw
,
pRow
,
dataPos
,
&
action
.
msgType
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
action
.
contLen
,
TRANS_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
action
.
contLen
)
action
.
pCont
=
malloc
(
action
.
contLen
);
action
.
pCont
=
malloc
(
action
.
contLen
);
if
(
action
.
pCont
==
NULL
)
{
if
(
action
.
pCont
==
NULL
)
goto
TRANS_DECODE_OVER
;
code
=
TSDB_CODE_OUT_OF_MEMORY
;
SDB_GET_BINARY
(
pRaw
,
dataPos
,
action
.
pCont
,
action
.
contLen
,
TRANS_DECODE_OVER
);
goto
TRANS_DECODE_OVER
;
if
(
taosArrayPush
(
pTrans
->
undoActions
,
&
action
)
==
NULL
)
goto
TRANS_DECODE_OVER
;
}
action
.
pCont
=
NULL
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
action
.
pCont
,
action
.
contLen
);
void
*
ret
=
taosArrayPush
(
pTrans
->
undoActions
,
&
action
);
if
(
ret
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
TRANS_DECODE_OVER
;
}
}
}
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
MND_TRANS_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
MND_TRANS_RESERVE_SIZE
,
TRANS_DECODE_OVER
)
terrno
=
0
;
TRANS_DECODE_OVER:
TRANS_DECODE_OVER:
if
(
code
!=
0
)
{
if
(
terrno
!=
0
)
{
mError
(
"trans:%d, failed to parse from raw:%p since %s"
,
pTrans
->
id
,
pRaw
,
tstrerror
(
errno
));
mError
(
"trans:%d, failed to parse from raw:%p since %s"
,
pTrans
->
id
,
pRaw
,
terrstr
());
mndTransDrop
(
pTrans
);
mndTransDropData
(
pTrans
);
terrno
=
code
;
tfree
(
pRow
);
tfree
(
pData
);
tfree
(
action
.
pCont
);
return
NULL
;
return
NULL
;
}
}
...
@@ -304,15 +294,17 @@ static int32_t mndTransActionInsert(SSdb *pSdb, STrans *pTrans) {
...
@@ -304,15 +294,17 @@ static int32_t mndTransActionInsert(SSdb *pSdb, STrans *pTrans) {
return
0
;
return
0
;
}
}
static
int32_t
mndTransActionDelete
(
SSdb
*
pSdb
,
STrans
*
pTrans
)
{
static
void
mndTransDropData
(
STrans
*
pTrans
)
{
mTrace
(
"trans:%d, perform delete action, data:%p"
,
pTrans
->
id
,
pTrans
);
mndTransDropLogs
(
pTrans
->
redoLogs
);
mndTransDropLogs
(
pTrans
->
redoLogs
);
mndTransDropLogs
(
pTrans
->
undoLogs
);
mndTransDropLogs
(
pTrans
->
undoLogs
);
mndTransDropLogs
(
pTrans
->
commitLogs
);
mndTransDropLogs
(
pTrans
->
commitLogs
);
mndTransDropActions
(
pTrans
->
redoActions
);
mndTransDropActions
(
pTrans
->
redoActions
);
mndTransDropActions
(
pTrans
->
undoActions
);
mndTransDropActions
(
pTrans
->
undoActions
);
}
static
int32_t
mndTransActionDelete
(
SSdb
*
pSdb
,
STrans
*
pTrans
)
{
mTrace
(
"trans:%d, perform delete action, data:%p"
,
pTrans
->
id
,
pTrans
);
mndTransDropData
(
pTrans
);
return
0
;
return
0
;
}
}
...
@@ -367,6 +359,7 @@ STrans *mndTransCreate(SMnode *pMnode, ETrnPolicy policy, SRpcMsg *pMsg) {
...
@@ -367,6 +359,7 @@ STrans *mndTransCreate(SMnode *pMnode, ETrnPolicy policy, SRpcMsg *pMsg) {
}
}
static
void
mndTransDropLogs
(
SArray
*
pArray
)
{
static
void
mndTransDropLogs
(
SArray
*
pArray
)
{
if
(
pArray
==
NULL
)
return
;
for
(
int32_t
i
=
0
;
i
<
pArray
->
size
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pArray
->
size
;
++
i
)
{
SSdbRaw
*
pRaw
=
taosArrayGetP
(
pArray
,
i
);
SSdbRaw
*
pRaw
=
taosArrayGetP
(
pArray
,
i
);
sdbFreeRaw
(
pRaw
);
sdbFreeRaw
(
pRaw
);
...
@@ -376,6 +369,7 @@ static void mndTransDropLogs(SArray *pArray) {
...
@@ -376,6 +369,7 @@ static void mndTransDropLogs(SArray *pArray) {
}
}
static
void
mndTransDropActions
(
SArray
*
pArray
)
{
static
void
mndTransDropActions
(
SArray
*
pArray
)
{
if
(
pArray
==
NULL
)
return
;
for
(
int32_t
i
=
0
;
i
<
pArray
->
size
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pArray
->
size
;
++
i
)
{
STransAction
*
pAction
=
taosArrayGet
(
pArray
,
i
);
STransAction
*
pAction
=
taosArrayGet
(
pArray
,
i
);
free
(
pAction
->
pCont
);
free
(
pAction
->
pCont
);
...
@@ -385,12 +379,7 @@ static void mndTransDropActions(SArray *pArray) {
...
@@ -385,12 +379,7 @@ static void mndTransDropActions(SArray *pArray) {
}
}
void
mndTransDrop
(
STrans
*
pTrans
)
{
void
mndTransDrop
(
STrans
*
pTrans
)
{
mndTransDropLogs
(
pTrans
->
redoLogs
);
mndTransDropData
(
pTrans
);
mndTransDropLogs
(
pTrans
->
undoLogs
);
mndTransDropLogs
(
pTrans
->
commitLogs
);
mndTransDropActions
(
pTrans
->
redoActions
);
mndTransDropActions
(
pTrans
->
undoActions
);
mDebug
(
"trans:%d, is dropped, data:%p"
,
pTrans
->
id
,
pTrans
);
mDebug
(
"trans:%d, is dropped, data:%p"
,
pTrans
->
id
,
pTrans
);
tfree
(
pTrans
);
tfree
(
pTrans
);
}
}
...
...
source/dnode/mnode/impl/src/mndUser.c
浏览文件 @
d3927b54
...
@@ -94,45 +94,68 @@ static int32_t mndCreateDefaultUsers(SMnode *pMnode) {
...
@@ -94,45 +94,68 @@ static int32_t mndCreateDefaultUsers(SMnode *pMnode) {
}
}
static
SSdbRaw
*
mndUserActionEncode
(
SUserObj
*
pUser
)
{
static
SSdbRaw
*
mndUserActionEncode
(
SUserObj
*
pUser
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_USER
,
TSDB_USER_VER_NUMBER
,
sizeof
(
SUserObj
)
+
TSDB_USER_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_USER
,
TSDB_USER_VER_NUMBER
,
sizeof
(
SUserObj
)
+
TSDB_USER_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
USER_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pUser
->
user
,
TSDB_USER_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pUser
->
user
,
TSDB_USER_LEN
,
USER_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pUser
->
pass
,
TSDB_PASSWORD_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pUser
->
pass
,
TSDB_PASSWORD_LEN
,
USER_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pUser
->
acct
,
TSDB_USER_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pUser
->
acct
,
TSDB_USER_LEN
,
USER_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pUser
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pUser
->
createdTime
,
USER_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pUser
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pUser
->
updateTime
,
USER_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pUser
->
superUser
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pUser
->
superUser
,
USER_ENCODE_OVER
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_USER_RESERVE_SIZE
)
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_USER_RESERVE_SIZE
,
USER_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
USER_ENCODE_OVER
)
terrno
=
0
;
USER_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"user:%s, failed to encode to raw:%p since %s"
,
pUser
->
user
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
mTrace
(
"user:%s, encode to raw:%p, row:%p"
,
pUser
->
user
,
pRaw
,
pUser
);
mTrace
(
"user:%s, encode to raw:%p, row:%p"
,
pUser
->
user
,
pRaw
,
pUser
);
return
pRaw
;
return
pRaw
;
}
}
static
SSdbRow
*
mndUserActionDecode
(
SSdbRaw
*
pRaw
)
{
static
SSdbRow
*
mndUserActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
USER_DECODE_OVER
;
if
(
sver
!=
TSDB_USER_VER_NUMBER
)
{
if
(
sver
!=
TSDB_USER_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode user since %s"
,
terrstr
());
goto
USER_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SUserObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SUserObj
));
if
(
pRow
==
NULL
)
goto
USER_DECODE_OVER
;
SUserObj
*
pUser
=
sdbGetRowObj
(
pRow
);
SUserObj
*
pUser
=
sdbGetRowObj
(
pRow
);
if
(
pUser
==
NULL
)
return
NULL
;
if
(
pUser
==
NULL
)
goto
USER_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pUser
->
user
,
TSDB_USER_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pUser
->
user
,
TSDB_USER_LEN
,
USER_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pUser
->
pass
,
TSDB_PASSWORD_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pUser
->
pass
,
TSDB_PASSWORD_LEN
,
USER_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pUser
->
acct
,
TSDB_USER_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pUser
->
acct
,
TSDB_USER_LEN
,
USER_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pUser
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pUser
->
createdTime
,
USER_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pUser
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pUser
->
updateTime
,
USER_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pUser
->
superUser
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pUser
->
superUser
,
USER_DECODE_OVER
)
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_USER_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_USER_RESERVE_SIZE
,
USER_DECODE_OVER
)
terrno
=
0
;
USER_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"user:%s, failed to decode from raw:%p since %s"
,
pUser
->
user
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"user:%s, decode from raw:%p, row:%p"
,
pUser
->
user
,
pRaw
,
pUser
);
mTrace
(
"user:%s, decode from raw:%p, row:%p"
,
pUser
->
user
,
pRaw
,
pUser
);
return
pRow
;
return
pRow
;
...
...
source/dnode/mnode/impl/src/mndVgroup.c
浏览文件 @
d3927b54
...
@@ -70,77 +70,102 @@ int32_t mndInitVgroup(SMnode *pMnode) {
...
@@ -70,77 +70,102 @@ int32_t mndInitVgroup(SMnode *pMnode) {
void
mndCleanupVgroup
(
SMnode
*
pMnode
)
{}
void
mndCleanupVgroup
(
SMnode
*
pMnode
)
{}
SSdbRaw
*
mndVgroupActionEncode
(
SVgObj
*
pVgroup
)
{
SSdbRaw
*
mndVgroupActionEncode
(
SVgObj
*
pVgroup
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_VGROUP
,
TSDB_VGROUP_VER_NUMBER
,
sizeof
(
SVgObj
)
+
TSDB_VGROUP_RESERVE_SIZE
);
SSdbRaw
*
pRaw
=
sdbAllocRaw
(
SDB_VGROUP
,
TSDB_VGROUP_VER_NUMBER
,
sizeof
(
SVgObj
)
+
TSDB_VGROUP_RESERVE_SIZE
);
if
(
pRaw
==
NULL
)
return
NULL
;
if
(
pRaw
==
NULL
)
goto
VG_ENCODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgroup
->
vgId
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgroup
->
vgId
,
VG_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pVgroup
->
createdTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pVgroup
->
createdTime
,
VG_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pVgroup
->
updateTime
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pVgroup
->
updateTime
,
VG_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgroup
->
version
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgroup
->
version
,
VG_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgroup
->
hashBegin
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgroup
->
hashBegin
,
VG_ENCODE_OVER
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgroup
->
hashEnd
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgroup
->
hashEnd
,
VG_ENCODE_OVER
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pVgroup
->
dbName
,
TSDB_DB_FNAME_LEN
)
SDB_SET_BINARY
(
pRaw
,
dataPos
,
pVgroup
->
dbName
,
TSDB_DB_FNAME_LEN
,
VG_ENCODE_OVER
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pVgroup
->
dbUid
)
SDB_SET_INT64
(
pRaw
,
dataPos
,
pVgroup
->
dbUid
,
VG_ENCODE_OVER
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pVgroup
->
replica
)
SDB_SET_INT8
(
pRaw
,
dataPos
,
pVgroup
->
replica
,
VG_ENCODE_OVER
)
for
(
int8_t
i
=
0
;
i
<
pVgroup
->
replica
;
++
i
)
{
for
(
int8_t
i
=
0
;
i
<
pVgroup
->
replica
;
++
i
)
{
SVnodeGid
*
pVgid
=
&
pVgroup
->
vnodeGid
[
i
];
SVnodeGid
*
pVgid
=
&
pVgroup
->
vnodeGid
[
i
];
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgid
->
dnodeId
)
SDB_SET_INT32
(
pRaw
,
dataPos
,
pVgid
->
dnodeId
,
VG_ENCODE_OVER
)
}
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_VGROUP_RESERVE_SIZE
,
VG_ENCODE_OVER
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
VG_ENCODE_OVER
)
terrno
=
0
;
VG_ENCODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"vgId:%d, failed to encode to raw:%p since %s"
,
pVgroup
->
vgId
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
return
NULL
;
}
}
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
TSDB_VGROUP_RESERVE_SIZE
)
SDB_SET_DATALEN
(
pRaw
,
dataPos
);
mTrace
(
"vgId:%d, encode to raw:%p, row:%p"
,
pVgroup
->
vgId
,
pRaw
,
pVgroup
);
return
pRaw
;
return
pRaw
;
}
}
SSdbRow
*
mndVgroupActionDecode
(
SSdbRaw
*
pRaw
)
{
SSdbRow
*
mndVgroupActionDecode
(
SSdbRaw
*
pRaw
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
int8_t
sver
=
0
;
int8_t
sver
=
0
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
return
NULL
;
if
(
sdbGetRawSoftVer
(
pRaw
,
&
sver
)
!=
0
)
goto
VG_DECODE_OVER
;
if
(
sver
!=
TSDB_VGROUP_VER_NUMBER
)
{
if
(
sver
!=
TSDB_VGROUP_VER_NUMBER
)
{
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
terrno
=
TSDB_CODE_SDB_INVALID_DATA_VER
;
mError
(
"failed to decode vgroup since %s"
,
terrstr
());
goto
VG_DECODE_OVER
;
return
NULL
;
}
}
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SVgObj
));
SSdbRow
*
pRow
=
sdbAllocRow
(
sizeof
(
SVgObj
));
SVgObj
*
pVgroup
=
sdbGetRowObj
(
pRow
);
if
(
pRow
==
NULL
)
goto
VG_DECODE_OVER
;
if
(
pVgroup
==
NULL
)
return
NULL
;
SVgObj
*
pVgroup
=
sdbGetRowObj
(
pRow
);
if
(
pVgroup
==
NULL
)
goto
VG_DECODE_OVER
;
int32_t
dataPos
=
0
;
int32_t
dataPos
=
0
;
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pVgroup
->
vgId
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pVgroup
->
vgId
,
VG_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pVgroup
->
createdTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pVgroup
->
createdTime
,
VG_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pVgroup
->
updateTime
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pVgroup
->
updateTime
,
VG_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pVgroup
->
version
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pVgroup
->
version
,
VG_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pVgroup
->
hashBegin
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pVgroup
->
hashBegin
,
VG_DECODE_OVER
)
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pVgroup
->
hashEnd
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pVgroup
->
hashEnd
,
VG_DECODE_OVER
)
SDB_GET_BINARY
(
pRaw
,
pRow
,
dataPos
,
pVgroup
->
dbName
,
TSDB_DB_FNAME_LEN
)
SDB_GET_BINARY
(
pRaw
,
dataPos
,
pVgroup
->
dbName
,
TSDB_DB_FNAME_LEN
,
VG_DECODE_OVER
)
SDB_GET_INT64
(
pRaw
,
pRow
,
dataPos
,
&
pVgroup
->
dbUid
)
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pVgroup
->
dbUid
,
VG_DECODE_OVER
)
SDB_GET_INT8
(
pRaw
,
pRow
,
dataPos
,
&
pVgroup
->
replica
)
SDB_GET_INT8
(
pRaw
,
dataPos
,
&
pVgroup
->
replica
,
VG_DECODE_OVER
)
for
(
int8_t
i
=
0
;
i
<
pVgroup
->
replica
;
++
i
)
{
for
(
int8_t
i
=
0
;
i
<
pVgroup
->
replica
;
++
i
)
{
SVnodeGid
*
pVgid
=
&
pVgroup
->
vnodeGid
[
i
];
SVnodeGid
*
pVgid
=
&
pVgroup
->
vnodeGid
[
i
];
SDB_GET_INT32
(
pRaw
,
pRow
,
dataPos
,
&
pVgid
->
dnodeId
)
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pVgid
->
dnodeId
,
VG_DECODE_OVER
)
if
(
pVgroup
->
replica
==
1
)
{
if
(
pVgroup
->
replica
==
1
)
{
pVgid
->
role
=
TAOS_SYNC_STATE_LEADER
;
pVgid
->
role
=
TAOS_SYNC_STATE_LEADER
;
}
}
}
}
SDB_GET_RESERVE
(
pRaw
,
pRow
,
dataPos
,
TSDB_VGROUP_RESERVE_SIZE
)
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
TSDB_VGROUP_RESERVE_SIZE
,
VG_DECODE_OVER
)
terrno
=
0
;
VG_DECODE_OVER:
if
(
terrno
!=
0
)
{
mError
(
"vgId:%d, failed to decode from raw:%p since %s"
,
pVgroup
->
vgId
,
pRaw
,
terrstr
());
tfree
(
pRow
);
return
NULL
;
}
mTrace
(
"vgId:%d, decode from raw:%p, row:%p"
,
pVgroup
->
vgId
,
pRaw
,
pVgroup
);
return
pRow
;
return
pRow
;
}
}
static
int32_t
mndVgroupActionInsert
(
SSdb
*
pSdb
,
SVgObj
*
pVgroup
)
{
static
int32_t
mndVgroupActionInsert
(
SSdb
*
pSdb
,
SVgObj
*
pVgroup
)
{
mTrace
(
"vgId:%d, perform insert action
"
,
pVgroup
->
vgId
);
mTrace
(
"vgId:%d, perform insert action
, row:%p"
,
pVgroup
->
vgId
,
pVgroup
);
return
0
;
return
0
;
}
}
static
int32_t
mndVgroupActionDelete
(
SSdb
*
pSdb
,
SVgObj
*
pVgroup
)
{
static
int32_t
mndVgroupActionDelete
(
SSdb
*
pSdb
,
SVgObj
*
pVgroup
)
{
mTrace
(
"vgId:%d, perform delete action
"
,
pVgroup
->
vgId
);
mTrace
(
"vgId:%d, perform delete action
, row:%p"
,
pVgroup
->
vgId
,
pVgroup
);
return
0
;
return
0
;
}
}
static
int32_t
mndVgroupActionUpdate
(
SSdb
*
pSdb
,
SVgObj
*
pOldVgroup
,
SVgObj
*
pNewVgroup
)
{
static
int32_t
mndVgroupActionUpdate
(
SSdb
*
pSdb
,
SVgObj
*
pOldVgroup
,
SVgObj
*
pNewVgroup
)
{
mTrace
(
"vgId:%d, perform update action
"
,
pOldVgroup
->
vgId
);
mTrace
(
"vgId:%d, perform update action
, old_row:%p new_row:%p"
,
pOldVgroup
->
vgId
,
pOldVgroup
,
pNewVgroup
);
pOldVgroup
->
updateTime
=
pNewVgroup
->
updateTime
;
pOldVgroup
->
updateTime
=
pNewVgroup
->
updateTime
;
pOldVgroup
->
version
=
pNewVgroup
->
version
;
pOldVgroup
->
version
=
pNewVgroup
->
version
;
pOldVgroup
->
hashBegin
=
pNewVgroup
->
hashBegin
;
pOldVgroup
->
hashBegin
=
pNewVgroup
->
hashBegin
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录