Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
f323186f
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f323186f
编写于
11月 20, 2020
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TD-2046
上级
566b749c
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
460 addition
and
463 deletion
+460
-463
src/mnode/inc/mnodeSdb.h
src/mnode/inc/mnodeSdb.h
+22
-24
src/mnode/src/mnodeAcct.c
src/mnode/src/mnodeAcct.c
+20
-21
src/mnode/src/mnodeCluster.c
src/mnode/src/mnodeCluster.c
+15
-15
src/mnode/src/mnodeDb.c
src/mnode/src/mnodeDb.c
+33
-33
src/mnode/src/mnodeDnode.c
src/mnode/src/mnodeDnode.c
+25
-25
src/mnode/src/mnodeMnode.c
src/mnode/src/mnodeMnode.c
+24
-24
src/mnode/src/mnodeSdb.c
src/mnode/src/mnodeSdb.c
+143
-143
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+108
-108
src/mnode/src/mnodeUser.c
src/mnode/src/mnodeUser.c
+27
-27
src/mnode/src/mnodeVgroup.c
src/mnode/src/mnodeVgroup.c
+43
-43
未找到文件。
src/mnode/inc/mnodeSdb.h
浏览文件 @
f323186f
...
...
@@ -23,8 +23,6 @@ extern "C" {
#include "mnode.h"
#include "twal.h"
struct
SSdbTable
;
typedef
enum
{
SDB_TABLE_CLUSTER
=
0
,
SDB_TABLE_DNODE
=
1
,
...
...
@@ -50,20 +48,20 @@ typedef enum {
SDB_OPER_LOCAL
=
1
}
ESdbOper
;
typedef
struct
SSWriteMsg
{
ESdbOper
type
;
int32_t
processedCount
;
// for sync fwd callback
int32_t
code
;
// for callback in sdb queue
int32_t
rowSize
;
void
*
rowData
;
typedef
struct
SSdbRow
{
ESdbOper
type
;
int32_t
processedCount
;
// for sync fwd callback
int32_t
code
;
// for callback in sdb queue
int32_t
rowSize
;
void
*
rowData
;
void
*
pObj
;
void
*
pTable
;
SMnodeMsg
*
pMsg
;
int32_t
(
*
fpReq
)(
SMnodeMsg
*
pMsg
);
int32_t
(
*
fpRsp
)(
SMnodeMsg
*
pMsg
,
int32_t
code
);
void
*
pRow
;
SMnodeMsg
*
pMsg
;
struct
SSdbTable
*
pTable
;
char
reserveForSync
[
16
];
SWalHead
pHead
[];
}
SSWriteMsg
;
char
reserveForSync
[
16
];
SWalHead
pHead
[];
}
SSdbRow
;
typedef
struct
{
char
*
name
;
...
...
@@ -72,12 +70,12 @@ typedef struct {
int32_t
refCountPos
;
ESdbTable
id
;
ESdbKey
keyType
;
int32_t
(
*
fpInsert
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpDelete
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpUpdate
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpEncode
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpDecode
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpDestroy
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpInsert
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpDelete
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpUpdate
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpEncode
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpDecode
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpDestroy
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpRestored
)();
}
SSdbTableDesc
;
...
...
@@ -89,10 +87,10 @@ bool sdbIsMaster();
bool
sdbIsServing
();
void
sdbUpdateMnodeRoles
();
int32_t
sdbInsertRow
(
SS
WriteMsg
*
pWrite
);
int32_t
sdbDeleteRow
(
SS
WriteMsg
*
pWrite
);
int32_t
sdbUpdateRow
(
SS
WriteMsg
*
pWrite
);
int32_t
sdbInsertRowToQueue
(
SS
WriteMsg
*
pWrite
);
int32_t
sdbInsertRow
(
SS
dbRow
*
pRow
);
int32_t
sdbDeleteRow
(
SS
dbRow
*
pRow
);
int32_t
sdbUpdateRow
(
SS
dbRow
*
pRow
);
int32_t
sdbInsertRowToQueue
(
SS
dbRow
*
pRow
);
void
*
sdbGetRow
(
void
*
pTable
,
void
*
key
);
void
*
sdbFetchRow
(
void
*
pTable
,
void
*
pIter
,
void
**
ppRow
);
...
...
src/mnode/src/mnodeAcct.c
浏览文件 @
f323186f
...
...
@@ -16,6 +16,7 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "taoserror.h"
#include "tglobal.h"
#include "dnode.h"
#include "mnodeDef.h"
#include "mnodeInt.h"
...
...
@@ -25,36 +26,34 @@
#include "mnodeUser.h"
#include "mnodeVgroup.h"
#include "tglobal.h"
void
*
tsAcctSdb
=
NULL
;
static
int32_t
tsAcctUpdateSize
;
static
int32_t
mnodeCreateRootAcct
();
static
int32_t
mnodeAcctActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
SAcctObj
*
pAcct
=
p
WMsg
->
pRow
;
static
int32_t
mnodeAcctActionDestroy
(
SS
dbRow
*
pRow
)
{
SAcctObj
*
pAcct
=
p
Row
->
pObj
;
pthread_mutex_destroy
(
&
pAcct
->
mutex
);
tfree
(
p
WMsg
->
pRow
);
tfree
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeAcctActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
SAcctObj
*
pAcct
=
p
WMsg
->
pRow
;
static
int32_t
mnodeAcctActionInsert
(
SS
dbRow
*
pRow
)
{
SAcctObj
*
pAcct
=
p
Row
->
pObj
;
memset
(
&
pAcct
->
acctInfo
,
0
,
sizeof
(
SAcctInfo
));
pAcct
->
acctInfo
.
accessState
=
TSDB_VN_ALL_ACCCESS
;
pthread_mutex_init
(
&
pAcct
->
mutex
,
NULL
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeAcctActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
SAcctObj
*
pAcct
=
p
WMsg
->
pRow
;
static
int32_t
mnodeAcctActionDelete
(
SS
dbRow
*
pRow
)
{
SAcctObj
*
pAcct
=
p
Row
->
pObj
;
mnodeDropAllUsers
(
pAcct
);
mnodeDropAllDbs
(
pAcct
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeAcctActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
SAcctObj
*
pAcct
=
p
WMsg
->
pRow
;
static
int32_t
mnodeAcctActionUpdate
(
SS
dbRow
*
pRow
)
{
SAcctObj
*
pAcct
=
p
Row
->
pObj
;
SAcctObj
*
pSaved
=
mnodeGetAcct
(
pAcct
->
user
);
if
(
pAcct
!=
pSaved
)
{
memcpy
(
pSaved
,
pAcct
,
tsAcctUpdateSize
);
...
...
@@ -64,19 +63,19 @@ static int32_t mnodeAcctActionUpdate(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeAcctActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SAcctObj
*
pAcct
=
p
WMsg
->
pRow
;
memcpy
(
p
WMsg
->
rowData
,
pAcct
,
tsAcctUpdateSize
);
p
WMsg
->
rowSize
=
tsAcctUpdateSize
;
static
int32_t
mnodeAcctActionEncode
(
SS
dbRow
*
pRow
)
{
SAcctObj
*
pAcct
=
p
Row
->
pObj
;
memcpy
(
p
Row
->
rowData
,
pAcct
,
tsAcctUpdateSize
);
p
Row
->
rowSize
=
tsAcctUpdateSize
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeAcctActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeAcctActionDecode
(
SS
dbRow
*
pRow
)
{
SAcctObj
*
pAcct
=
(
SAcctObj
*
)
calloc
(
1
,
sizeof
(
SAcctObj
));
if
(
pAcct
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
memcpy
(
pAcct
,
p
WMsg
->
rowData
,
tsAcctUpdateSize
);
p
WMsg
->
pRow
=
pAcct
;
memcpy
(
pAcct
,
p
Row
->
rowData
,
tsAcctUpdateSize
);
p
Row
->
pObj
=
pAcct
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -226,13 +225,13 @@ static int32_t mnodeCreateRootAcct() {
pAcct
->
acctId
=
sdbGetId
(
tsAcctSdb
);
pAcct
->
createdTime
=
taosGetTimestampMs
();
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsAcctSdb
,
.
p
Row
=
pAcct
,
.
p
Obj
=
pAcct
,
};
return
sdbInsertRow
(
&
wmsg
);
return
sdbInsertRow
(
&
row
);
}
#ifndef _ACCT
...
...
src/mnode/src/mnodeCluster.c
浏览文件 @
f323186f
...
...
@@ -32,36 +32,36 @@ static int32_t mnodeCreateCluster();
static
int32_t
mnodeGetClusterMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
);
static
int32_t
mnodeRetrieveClusters
(
SShowObj
*
pShow
,
char
*
data
,
int32_t
rows
,
void
*
pConn
);
static
int32_t
mnodeClusterActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
tfree
(
p
WMsg
->
pRow
);
static
int32_t
mnodeClusterActionDestroy
(
SS
dbRow
*
pRow
)
{
tfree
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeClusterActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeClusterActionInsert
(
SS
dbRow
*
pRow
)
{
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeClusterActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeClusterActionDelete
(
SS
dbRow
*
pRow
)
{
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeClusterActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeClusterActionUpdate
(
SS
dbRow
*
pRow
)
{
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeClusterActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SClusterObj
*
pCluster
=
p
WMsg
->
pRow
;
memcpy
(
p
WMsg
->
rowData
,
pCluster
,
tsClusterUpdateSize
);
p
WMsg
->
rowSize
=
tsClusterUpdateSize
;
static
int32_t
mnodeClusterActionEncode
(
SS
dbRow
*
pRow
)
{
SClusterObj
*
pCluster
=
p
Row
->
pObj
;
memcpy
(
p
Row
->
rowData
,
pCluster
,
tsClusterUpdateSize
);
p
Row
->
rowSize
=
tsClusterUpdateSize
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeClusterActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeClusterActionDecode
(
SS
dbRow
*
pRow
)
{
SClusterObj
*
pCluster
=
(
SClusterObj
*
)
calloc
(
1
,
sizeof
(
SClusterObj
));
if
(
pCluster
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
memcpy
(
pCluster
,
p
WMsg
->
rowData
,
tsClusterUpdateSize
);
p
WMsg
->
pRow
=
pCluster
;
memcpy
(
pCluster
,
p
Row
->
rowData
,
tsClusterUpdateSize
);
p
Row
->
pObj
=
pCluster
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -145,13 +145,13 @@ static int32_t mnodeCreateCluster() {
mDebug
(
"uid is %s"
,
pCluster
->
uid
);
}
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsClusterSdb
,
.
p
Row
=
pCluster
,
.
p
Obj
=
pCluster
,
};
return
sdbInsertRow
(
&
wmsg
);
return
sdbInsertRow
(
&
row
);
}
const
char
*
mnodeGetClusterId
()
{
...
...
src/mnode/src/mnodeDb.c
浏览文件 @
f323186f
...
...
@@ -56,8 +56,8 @@ static void mnodeDestroyDb(SDbObj *pDb) {
tfree
(
pDb
);
}
static
int32_t
mnodeDbActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
mnodeDestroyDb
(
p
WMsg
->
pRow
);
static
int32_t
mnodeDbActionDestroy
(
SS
dbRow
*
pRow
)
{
mnodeDestroyDb
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -65,8 +65,8 @@ int64_t mnodeGetDbNum() {
return
sdbGetNumOfRows
(
tsDbSdb
);
}
static
int32_t
mnodeDbActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
SDbObj
*
pDb
=
p
WMsg
->
pRow
;
static
int32_t
mnodeDbActionInsert
(
SS
dbRow
*
pRow
)
{
SDbObj
*
pDb
=
p
Row
->
pObj
;
SAcctObj
*
pAcct
=
mnodeGetAcct
(
pDb
->
acct
);
pthread_mutex_init
(
&
pDb
->
mutex
,
NULL
);
...
...
@@ -91,8 +91,8 @@ static int32_t mnodeDbActionInsert(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDbActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
SDbObj
*
pDb
=
p
WMsg
->
pRow
;
static
int32_t
mnodeDbActionDelete
(
SS
dbRow
*
pRow
)
{
SDbObj
*
pDb
=
p
Row
->
pObj
;
SAcctObj
*
pAcct
=
mnodeGetAcct
(
pDb
->
acct
);
mnodeDropAllChildTables
(
pDb
);
...
...
@@ -107,11 +107,11 @@ static int32_t mnodeDbActionDelete(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDbActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
SDbObj
*
pNew
=
p
WMsg
->
pRow
;
static
int32_t
mnodeDbActionUpdate
(
SS
dbRow
*
pRow
)
{
SDbObj
*
pNew
=
p
Row
->
pObj
;
SDbObj
*
pDb
=
mnodeGetDb
(
pNew
->
name
);
if
(
pDb
!=
NULL
&&
pNew
!=
pDb
)
{
memcpy
(
pDb
,
pNew
,
p
WMsg
->
rowSize
);
memcpy
(
pDb
,
pNew
,
p
Row
->
rowSize
);
free
(
pNew
->
vgList
);
free
(
pNew
);
}
...
...
@@ -120,19 +120,19 @@ static int32_t mnodeDbActionUpdate(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDbActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SDbObj
*
pDb
=
p
WMsg
->
pRow
;
memcpy
(
p
WMsg
->
rowData
,
pDb
,
tsDbUpdateSize
);
p
WMsg
->
rowSize
=
tsDbUpdateSize
;
static
int32_t
mnodeDbActionEncode
(
SS
dbRow
*
pRow
)
{
SDbObj
*
pDb
=
p
Row
->
pObj
;
memcpy
(
p
Row
->
rowData
,
pDb
,
tsDbUpdateSize
);
p
Row
->
rowSize
=
tsDbUpdateSize
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDbActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeDbActionDecode
(
SS
dbRow
*
pRow
)
{
SDbObj
*
pDb
=
(
SDbObj
*
)
calloc
(
1
,
sizeof
(
SDbObj
));
if
(
pDb
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
memcpy
(
pDb
,
p
WMsg
->
rowData
,
tsDbUpdateSize
);
p
WMsg
->
pRow
=
pDb
;
memcpy
(
pDb
,
p
Row
->
rowData
,
tsDbUpdateSize
);
p
Row
->
pObj
=
pDb
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -412,16 +412,16 @@ static int32_t mnodeCreateDb(SAcctObj *pAcct, SCreateDbMsg *pCreate, SMnodeMsg *
pMsg
->
pDb
=
pDb
;
mnodeIncDbRef
(
pDb
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsDbSdb
,
.
p
Row
=
pDb
,
.
p
Obj
=
pDb
,
.
rowSize
=
sizeof
(
SDbObj
),
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeCreateDbCb
};
code
=
sdbInsertRow
(
&
wmsg
);
code
=
sdbInsertRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"db:%s, failed to create, reason:%s"
,
pDb
->
name
,
tstrerror
(
code
));
pMsg
->
pDb
=
NULL
;
...
...
@@ -440,8 +440,8 @@ bool mnodeCheckIsMonitorDB(char *db, char *monitordb) {
}
#if 0
void mnodePrintVgroups(SDbObj *pDb, char *
wmsg
) {
mInfo("db:%s, vgroup link from head,
wmsg:%s", pDb->name, wmsg
);
void mnodePrintVgroups(SDbObj *pDb, char *
row
) {
mInfo("db:%s, vgroup link from head,
row:%s", pDb->name, row
);
SVgObj *pVgroup = pDb->pHead;
while (pVgroup != NULL) {
mInfo("vgId:%d", pVgroup->vgId);
...
...
@@ -807,13 +807,13 @@ static int32_t mnodeSetDbDropping(SDbObj *pDb) {
if
(
pDb
->
status
)
return
TSDB_CODE_SUCCESS
;
pDb
->
status
=
true
;
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsDbSdb
,
.
p
Row
=
pDb
.
p
Obj
=
pDb
};
int32_t
code
=
sdbUpdateRow
(
&
wmsg
);
int32_t
code
=
sdbUpdateRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"db:%s, failed to set dropping state, reason:%s"
,
pDb
->
name
,
tstrerror
(
code
));
}
...
...
@@ -1019,15 +1019,15 @@ static int32_t mnodeAlterDb(SDbObj *pDb, SAlterDbMsg *pAlter, void *pMsg) {
if
(
memcmp
(
&
newCfg
,
&
pDb
->
cfg
,
sizeof
(
SDbCfg
))
!=
0
)
{
pDb
->
cfg
=
newCfg
;
pDb
->
cfgVersion
++
;
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsDbSdb
,
.
p
Row
=
pDb
,
.
p
Obj
=
pDb
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeAlterDbCb
};
code
=
sdbUpdateRow
(
&
wmsg
);
code
=
sdbUpdateRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"db:%s, failed to alter, reason:%s"
,
pDb
->
name
,
tstrerror
(
code
));
}
...
...
@@ -1071,15 +1071,15 @@ static int32_t mnodeDropDb(SMnodeMsg *pMsg) {
SDbObj
*
pDb
=
pMsg
->
pDb
;
mInfo
(
"db:%s, drop db from sdb"
,
pDb
->
name
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsDbSdb
,
.
p
Row
=
pDb
,
.
p
Obj
=
pDb
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeDropDbCb
};
int32_t
code
=
sdbDeleteRow
(
&
wmsg
);
int32_t
code
=
sdbDeleteRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"db:%s, failed to drop, reason:%s"
,
pDb
->
name
,
tstrerror
(
code
));
}
...
...
@@ -1134,13 +1134,13 @@ void mnodeDropAllDbs(SAcctObj *pAcct) {
if
(
pDb
->
pAcct
==
pAcct
)
{
mInfo
(
"db:%s, drop db from sdb for acct:%s is dropped"
,
pDb
->
name
,
pAcct
->
user
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsDbSdb
,
.
p
Row
=
pDb
.
p
Obj
=
pDb
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
numOfDbs
++
;
}
mnodeDecDbRef
(
pDb
);
...
...
src/mnode/src/mnodeDnode.c
浏览文件 @
f323186f
...
...
@@ -87,13 +87,13 @@ static char* offlineReason[] = {
"unknown"
,
};
static
int32_t
mnodeDnodeActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
tfree
(
p
WMsg
->
pRow
);
static
int32_t
mnodeDnodeActionDestroy
(
SS
dbRow
*
pRow
)
{
tfree
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDnodeActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
SDnodeObj
*
pDnode
=
p
WMsg
->
pRow
;
static
int32_t
mnodeDnodeActionInsert
(
SS
dbRow
*
pRow
)
{
SDnodeObj
*
pDnode
=
p
Row
->
pObj
;
if
(
pDnode
->
status
!=
TAOS_DN_STATUS_DROPPING
)
{
pDnode
->
status
=
TAOS_DN_STATUS_OFFLINE
;
pDnode
->
lastAccess
=
tsAccessSquence
;
...
...
@@ -107,8 +107,8 @@ static int32_t mnodeDnodeActionInsert(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDnodeActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
SDnodeObj
*
pDnode
=
p
WMsg
->
pRow
;
static
int32_t
mnodeDnodeActionDelete
(
SS
dbRow
*
pRow
)
{
SDnodeObj
*
pDnode
=
p
Row
->
pObj
;
#ifndef _SYNC
mnodeDropAllDnodeVgroups
(
pDnode
);
...
...
@@ -121,11 +121,11 @@ static int32_t mnodeDnodeActionDelete(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDnodeActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
SDnodeObj
*
pNew
=
p
WMsg
->
pRow
;
static
int32_t
mnodeDnodeActionUpdate
(
SS
dbRow
*
pRow
)
{
SDnodeObj
*
pNew
=
p
Row
->
pObj
;
SDnodeObj
*
pDnode
=
mnodeGetDnode
(
pNew
->
dnodeId
);
if
(
pDnode
!=
NULL
&&
pNew
!=
pDnode
)
{
memcpy
(
pDnode
,
pNew
,
p
WMsg
->
rowSize
);
memcpy
(
pDnode
,
pNew
,
p
Row
->
rowSize
);
free
(
pNew
);
}
mnodeDecDnodeRef
(
pDnode
);
...
...
@@ -134,19 +134,19 @@ static int32_t mnodeDnodeActionUpdate(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDnodeActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SDnodeObj
*
pDnode
=
p
WMsg
->
pRow
;
memcpy
(
p
WMsg
->
rowData
,
pDnode
,
tsDnodeUpdateSize
);
p
WMsg
->
rowSize
=
tsDnodeUpdateSize
;
static
int32_t
mnodeDnodeActionEncode
(
SS
dbRow
*
pRow
)
{
SDnodeObj
*
pDnode
=
p
Row
->
pObj
;
memcpy
(
p
Row
->
rowData
,
pDnode
,
tsDnodeUpdateSize
);
p
Row
->
rowSize
=
tsDnodeUpdateSize
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeDnodeActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeDnodeActionDecode
(
SS
dbRow
*
pRow
)
{
SDnodeObj
*
pDnode
=
(
SDnodeObj
*
)
calloc
(
1
,
sizeof
(
SDnodeObj
));
if
(
pDnode
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
memcpy
(
pDnode
,
p
WMsg
->
rowData
,
tsDnodeUpdateSize
);
p
WMsg
->
pRow
=
pDnode
;
memcpy
(
pDnode
,
p
Row
->
rowData
,
tsDnodeUpdateSize
);
p
Row
->
pObj
=
pDnode
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -296,13 +296,13 @@ void mnodeDecDnodeRef(SDnodeObj *pDnode) {
}
void
mnodeUpdateDnode
(
SDnodeObj
*
pDnode
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsDnodeSdb
,
.
p
Row
=
pDnode
.
p
Obj
=
pDnode
};
int32_t
code
=
sdbUpdateRow
(
&
wmsg
);
int32_t
code
=
sdbUpdateRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"dnodeId:%d, failed update"
,
pDnode
->
dnodeId
);
}
...
...
@@ -644,15 +644,15 @@ static int32_t mnodeCreateDnode(char *ep, SMnodeMsg *pMsg) {
tstrncpy
(
pDnode
->
dnodeEp
,
ep
,
TSDB_EP_LEN
);
taosGetFqdnPortFromEp
(
ep
,
pDnode
->
dnodeFqdn
,
&
pDnode
->
dnodePort
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsDnodeSdb
,
.
p
Row
=
pDnode
,
.
p
Obj
=
pDnode
,
.
rowSize
=
sizeof
(
SDnodeObj
),
.
pMsg
=
pMsg
};
int32_t
code
=
sdbInsertRow
(
&
wmsg
);
int32_t
code
=
sdbInsertRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
int
dnodeId
=
pDnode
->
dnodeId
;
tfree
(
pDnode
);
...
...
@@ -665,14 +665,14 @@ static int32_t mnodeCreateDnode(char *ep, SMnodeMsg *pMsg) {
}
int32_t
mnodeDropDnode
(
SDnodeObj
*
pDnode
,
void
*
pMsg
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsDnodeSdb
,
.
p
Row
=
pDnode
,
.
p
Obj
=
pDnode
,
.
pMsg
=
pMsg
};
int32_t
code
=
sdbDeleteRow
(
&
wmsg
);
int32_t
code
=
sdbDeleteRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"dnode:%d, failed to drop from cluster, result:%s"
,
pDnode
->
dnodeId
,
tstrerror
(
code
));
}
else
{
...
...
src/mnode/src/mnodeMnode.c
浏览文件 @
f323186f
...
...
@@ -58,13 +58,13 @@ static int32_t mnodeRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, vo
#define mnodeMnodeDestroyLock() pthread_mutex_destroy(&tsMnodeLock)
#endif
static
int32_t
mnodeMnodeActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
tfree
(
p
WMsg
->
pRow
);
static
int32_t
mnodeMnodeActionDestroy
(
SS
dbRow
*
pRow
)
{
tfree
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeMnodeActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
SMnodeObj
*
pMnode
=
p
WMsg
->
pRow
;
static
int32_t
mnodeMnodeActionInsert
(
SS
dbRow
*
pRow
)
{
SMnodeObj
*
pMnode
=
p
Row
->
pObj
;
SDnodeObj
*
pDnode
=
mnodeGetDnode
(
pMnode
->
mnodeId
);
if
(
pDnode
==
NULL
)
return
TSDB_CODE_MND_DNODE_NOT_EXIST
;
...
...
@@ -76,8 +76,8 @@ static int32_t mnodeMnodeActionInsert(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeMnodeActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
SMnodeObj
*
pMnode
=
p
WMsg
->
pRow
;
static
int32_t
mnodeMnodeActionDelete
(
SS
dbRow
*
pRow
)
{
SMnodeObj
*
pMnode
=
p
Row
->
pObj
;
SDnodeObj
*
pDnode
=
mnodeGetDnode
(
pMnode
->
mnodeId
);
if
(
pDnode
==
NULL
)
return
TSDB_CODE_MND_DNODE_NOT_EXIST
;
...
...
@@ -88,30 +88,30 @@ static int32_t mnodeMnodeActionDelete(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeMnodeActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
SMnodeObj
*
pMnode
=
p
WMsg
->
pRow
;
static
int32_t
mnodeMnodeActionUpdate
(
SS
dbRow
*
pRow
)
{
SMnodeObj
*
pMnode
=
p
Row
->
pObj
;
SMnodeObj
*
pSaved
=
mnodeGetMnode
(
pMnode
->
mnodeId
);
if
(
pMnode
!=
pSaved
)
{
memcpy
(
pSaved
,
pMnode
,
p
WMsg
->
rowSize
);
memcpy
(
pSaved
,
pMnode
,
p
Row
->
rowSize
);
free
(
pMnode
);
}
mnodeDecMnodeRef
(
pSaved
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeMnodeActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SMnodeObj
*
pMnode
=
p
WMsg
->
pRow
;
memcpy
(
p
WMsg
->
rowData
,
pMnode
,
tsMnodeUpdateSize
);
p
WMsg
->
rowSize
=
tsMnodeUpdateSize
;
static
int32_t
mnodeMnodeActionEncode
(
SS
dbRow
*
pRow
)
{
SMnodeObj
*
pMnode
=
p
Row
->
pObj
;
memcpy
(
p
Row
->
rowData
,
pMnode
,
tsMnodeUpdateSize
);
p
Row
->
rowSize
=
tsMnodeUpdateSize
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeMnodeActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeMnodeActionDecode
(
SS
dbRow
*
pRow
)
{
SMnodeObj
*
pMnode
=
calloc
(
1
,
sizeof
(
SMnodeObj
));
if
(
pMnode
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
memcpy
(
pMnode
,
p
WMsg
->
rowData
,
tsMnodeUpdateSize
);
p
WMsg
->
pRow
=
pMnode
;
memcpy
(
pMnode
,
p
Row
->
rowData
,
tsMnodeUpdateSize
);
p
Row
->
pObj
=
pMnode
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -325,10 +325,10 @@ void mnodeCreateMnode(int32_t dnodeId, char *dnodeEp, bool needConfirm) {
pMnode
->
mnodeId
=
dnodeId
;
pMnode
->
createdTime
=
taosGetTimestampMs
();
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsMnodeSdb
,
.
p
Row
=
pMnode
,
.
p
Obj
=
pMnode
,
.
fpRsp
=
mnodeCreateMnodeCb
};
...
...
@@ -342,7 +342,7 @@ void mnodeCreateMnode(int32_t dnodeId, char *dnodeEp, bool needConfirm) {
return
;
}
code
=
sdbInsertRow
(
&
wmsg
);
code
=
sdbInsertRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"dnode:%d, failed to create mnode, ep:%s reason:%s"
,
dnodeId
,
dnodeEp
,
tstrerror
(
code
));
tfree
(
pMnode
);
...
...
@@ -352,8 +352,8 @@ void mnodeCreateMnode(int32_t dnodeId, char *dnodeEp, bool needConfirm) {
void
mnodeDropMnodeLocal
(
int32_t
dnodeId
)
{
SMnodeObj
*
pMnode
=
mnodeGetMnode
(
dnodeId
);
if
(
pMnode
!=
NULL
)
{
SS
WriteMsg
wmsg
=
{.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsMnodeSdb
,
.
pRow
=
pMnode
};
sdbDeleteRow
(
&
wmsg
);
SS
dbRow
row
=
{.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsMnodeSdb
,
.
pObj
=
pMnode
};
sdbDeleteRow
(
&
row
);
mnodeDecMnodeRef
(
pMnode
);
}
...
...
@@ -367,13 +367,13 @@ int32_t mnodeDropMnode(int32_t dnodeId) {
return
TSDB_CODE_MND_DNODE_NOT_EXIST
;
}
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsMnodeSdb
,
.
p
Row
=
pMnode
.
p
Obj
=
pMnode
};
int32_t
code
=
sdbDeleteRow
(
&
wmsg
);
int32_t
code
=
sdbDeleteRow
(
&
row
);
sdbDecRef
(
tsMnodeSdb
,
pMnode
);
...
...
src/mnode/src/mnodeSdb.c
浏览文件 @
f323186f
...
...
@@ -65,12 +65,12 @@ typedef struct SSdbTable {
int32_t
autoIndex
;
int64_t
numOfRows
;
void
*
iHandle
;
int32_t
(
*
fpInsert
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpDelete
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpUpdate
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpDecode
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpEncode
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpDestroy
)(
SS
WriteMsg
*
pWrite
);
int32_t
(
*
fpInsert
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpDelete
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpUpdate
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpDecode
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpEncode
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpDestroy
)(
SS
dbRow
*
pRow
);
int32_t
(
*
fpRestored
)();
pthread_mutex_t
mutex
;
}
SSdbTable
;
...
...
@@ -106,17 +106,17 @@ static taos_qall tsSdbWQall;
static
taos_queue
tsSdbWQueue
;
static
SSdbWorkerPool
tsSdbPool
;
static
int32_t
sdbProcessWrite
(
void
*
p
Write
,
void
*
pHead
,
int32_t
qtype
,
void
*
unused
);
static
int32_t
sdbProcessWrite
(
void
*
p
Row
,
void
*
pHead
,
int32_t
qtype
,
void
*
unused
);
static
int32_t
sdbWriteWalToQueue
(
void
*
vparam
,
void
*
pHead
,
int32_t
qtype
,
void
*
rparam
);
static
int32_t
sdbWriteRowToQueue
(
SS
WriteMsg
*
pInputWrite
,
int32_t
action
);
static
int32_t
sdbWriteRowToQueue
(
SS
dbRow
*
pRow
,
int32_t
action
);
static
void
*
sdbWorkerFp
(
void
*
pWorker
);
static
int32_t
sdbInitWorker
();
static
void
sdbCleanupWorker
();
static
int32_t
sdbAllocQueue
();
static
void
sdbFreeQueue
();
static
int32_t
sdbInsertHash
(
SSdbTable
*
pTable
,
SS
WriteMsg
*
pWrite
);
static
int32_t
sdbUpdateHash
(
SSdbTable
*
pTable
,
SS
WriteMsg
*
pWrite
);
static
int32_t
sdbDeleteHash
(
SSdbTable
*
pTable
,
SS
WriteMsg
*
pWrite
);
static
int32_t
sdbInsertHash
(
SSdbTable
*
pTable
,
SS
dbRow
*
pRow
);
static
int32_t
sdbUpdateHash
(
SSdbTable
*
pTable
,
SS
dbRow
*
pRow
);
static
int32_t
sdbDeleteHash
(
SSdbTable
*
pTable
,
SS
dbRow
*
pRow
);
int32_t
sdbGetId
(
void
*
pTable
)
{
return
((
SSdbTable
*
)
pTable
)
->
autoIndex
;
...
...
@@ -248,28 +248,28 @@ static void sdbNotifyRole(void *ahandle, int8_t role) {
}
// failed to forward, need revert insert
static
void
sdbHandleFailedConfirm
(
SS
WriteMsg
*
pWrite
)
{
SWalHead
*
pHead
=
p
Write
->
pHead
;
static
void
sdbHandleFailedConfirm
(
SS
dbRow
*
pRow
)
{
SWalHead
*
pHead
=
p
Row
->
pHead
;
int32_t
action
=
pHead
->
msgType
%
10
;
sdbError
(
"vgId:1, row:%p:%s hver:%"
PRIu64
" action:%s, failed to foward since %s"
,
p
Write
->
pRow
,
sdbGetKeyStr
(
p
Write
->
pTable
,
pHead
->
cont
),
pHead
->
version
,
actStr
[
action
],
tstrerror
(
pWrite
->
code
));
sdbError
(
"vgId:1, row:%p:%s hver:%"
PRIu64
" action:%s, failed to foward since %s"
,
p
Row
->
pObj
,
sdbGetKeyStr
(
p
Row
->
pTable
,
pHead
->
cont
),
pHead
->
version
,
actStr
[
action
],
tstrerror
(
pRow
->
code
));
// It's better to create a table in two stages, create it first and then set it success
if
(
action
==
SDB_ACTION_INSERT
)
{
SS
WriteMsg
wmsg
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
pWrite
->
pTable
,
.
pRow
=
pWrite
->
pRow
};
sdbDeleteRow
(
&
wmsg
);
SS
dbRow
row
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
pRow
->
pTable
,
.
pObj
=
pRow
->
pObj
};
sdbDeleteRow
(
&
row
);
}
}
FORCE_INLINE
static
void
sdbConfirmForward
(
void
*
ahandle
,
void
*
wparam
,
int32_t
code
)
{
if
(
wparam
==
NULL
)
return
;
SS
WriteMsg
*
pWrite
=
wparam
;
SMnodeMsg
*
pMsg
=
p
Write
->
pMsg
;
SS
dbRow
*
pRow
=
wparam
;
SMnodeMsg
*
pMsg
=
p
Row
->
pMsg
;
if
(
code
<=
0
)
p
Write
->
code
=
code
;
int32_t
count
=
atomic_add_fetch_32
(
&
p
Write
->
processedCount
,
1
);
if
(
code
<=
0
)
p
Row
->
code
=
code
;
int32_t
count
=
atomic_add_fetch_32
(
&
p
Row
->
processedCount
,
1
);
if
(
count
<=
1
)
{
if
(
pMsg
!=
NULL
)
sdbTrace
(
"vgId:1, msg:%p waiting for confirm, count:%d code:%x"
,
pMsg
,
count
,
code
);
return
;
...
...
@@ -277,13 +277,13 @@ static void sdbConfirmForward(void *ahandle, void *wparam, int32_t code) {
if
(
pMsg
!=
NULL
)
sdbTrace
(
"vgId:1, msg:%p is confirmed, code:%x"
,
pMsg
,
code
);
}
if
(
p
Write
->
code
!=
TSDB_CODE_SUCCESS
)
sdbHandleFailedConfirm
(
pWrite
);
if
(
p
Row
->
code
!=
TSDB_CODE_SUCCESS
)
sdbHandleFailedConfirm
(
pRow
);
if
(
p
Write
->
fpRsp
!=
NULL
)
{
p
Write
->
code
=
(
*
pWrite
->
fpRsp
)(
pMsg
,
pWrite
->
code
);
if
(
p
Row
->
fpRsp
!=
NULL
)
{
p
Row
->
code
=
(
*
pRow
->
fpRsp
)(
pMsg
,
pRow
->
code
);
}
dnodeSendRpcMWriteRsp
(
pMsg
,
p
Write
->
code
);
dnodeSendRpcMWriteRsp
(
pMsg
,
p
Row
->
code
);
}
static
void
sdbUpdateSyncTmrFp
(
void
*
param
,
void
*
tmrId
)
{
sdbUpdateSync
(
NULL
);
}
...
...
@@ -447,8 +447,8 @@ void sdbDecRef(void *tparam, void *pRow) {
int32_t
*
updateEnd
=
pRow
+
pTable
->
refCountPos
-
4
;
if
(
refCount
<=
0
&&
*
updateEnd
)
{
sdbTrace
(
"vgId:1, sdb:%s, row:%p:%s:%d destroyed"
,
pTable
->
name
,
pRow
,
sdbGetRowStr
(
pTable
,
pRow
),
refCount
);
SS
WriteMsg
wmsg
=
{.
pRow
=
pRow
};
(
*
pTable
->
fpDestroy
)(
&
wmsg
);
SS
dbRow
row
=
{.
pObj
=
pRow
};
(
*
pTable
->
fpDestroy
)(
&
row
);
}
}
...
...
@@ -485,8 +485,8 @@ static void *sdbGetRowFromObj(SSdbTable *pTable, void *key) {
return
sdbGetRow
(
pTable
,
sdbGetObjKey
(
pTable
,
key
));
}
static
int32_t
sdbInsertHash
(
SSdbTable
*
pTable
,
SS
WriteMsg
*
pWrite
)
{
void
*
key
=
sdbGetObjKey
(
pTable
,
p
Write
->
pRow
);
static
int32_t
sdbInsertHash
(
SSdbTable
*
pTable
,
SS
dbRow
*
pRow
)
{
void
*
key
=
sdbGetObjKey
(
pTable
,
p
Row
->
pObj
);
int32_t
keySize
=
sizeof
(
int32_t
);
if
(
pTable
->
keyType
==
SDB_KEY_STRING
||
pTable
->
keyType
==
SDB_KEY_VAR_STRING
)
{
...
...
@@ -494,43 +494,43 @@ static int32_t sdbInsertHash(SSdbTable *pTable, SSWriteMsg *pWrite) {
}
pthread_mutex_lock
(
&
pTable
->
mutex
);
taosHashPut
(
pTable
->
iHandle
,
key
,
keySize
,
&
p
Write
->
pRow
,
sizeof
(
int64_t
));
taosHashPut
(
pTable
->
iHandle
,
key
,
keySize
,
&
p
Row
->
pObj
,
sizeof
(
int64_t
));
pthread_mutex_unlock
(
&
pTable
->
mutex
);
sdbIncRef
(
pTable
,
p
Write
->
pRow
);
sdbIncRef
(
pTable
,
p
Row
->
pObj
);
atomic_add_fetch_32
(
&
pTable
->
numOfRows
,
1
);
if
(
pTable
->
keyType
==
SDB_KEY_AUTO
)
{
pTable
->
autoIndex
=
MAX
(
pTable
->
autoIndex
,
*
((
uint32_t
*
)
p
Write
->
pRow
));
pTable
->
autoIndex
=
MAX
(
pTable
->
autoIndex
,
*
((
uint32_t
*
)
p
Row
->
pObj
));
}
else
{
atomic_add_fetch_32
(
&
pTable
->
autoIndex
,
1
);
}
sdbDebug
(
"vgId:1, sdb:%s, insert key:%s to hash, rowSize:%d rows:%"
PRId64
", msg:%p"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Write
->
pRow
),
pWrite
->
rowSize
,
pTable
->
numOfRows
,
pWrite
->
pMsg
);
sdbGetRowStr
(
pTable
,
p
Row
->
pObj
),
pRow
->
rowSize
,
pTable
->
numOfRows
,
pRow
->
pMsg
);
int32_t
code
=
(
*
pTable
->
fpInsert
)(
p
Write
);
int32_t
code
=
(
*
pTable
->
fpInsert
)(
p
Row
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
sdbError
(
"vgId:1, sdb:%s, failed to insert key:%s to hash, remove it"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Write
->
pRow
));
sdbDeleteHash
(
pTable
,
p
Write
);
sdbGetRowStr
(
pTable
,
p
Row
->
pObj
));
sdbDeleteHash
(
pTable
,
p
Row
);
}
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
sdbDeleteHash
(
SSdbTable
*
pTable
,
SS
WriteMsg
*
pWrite
)
{
int32_t
*
updateEnd
=
p
Write
->
pRow
+
pTable
->
refCountPos
-
4
;
static
int32_t
sdbDeleteHash
(
SSdbTable
*
pTable
,
SS
dbRow
*
pRow
)
{
int32_t
*
updateEnd
=
p
Row
->
pObj
+
pTable
->
refCountPos
-
4
;
bool
set
=
atomic_val_compare_exchange_32
(
updateEnd
,
0
,
1
)
==
0
;
if
(
!
set
)
{
sdbError
(
"vgId:1, sdb:%s, failed to delete key:%s from hash, for it already removed"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Write
->
pRow
));
sdbGetRowStr
(
pTable
,
p
Row
->
pObj
));
return
TSDB_CODE_MND_SDB_OBJ_NOT_THERE
;
}
(
*
pTable
->
fpDelete
)(
p
Write
);
(
*
pTable
->
fpDelete
)(
p
Row
);
void
*
key
=
sdbGetObjKey
(
pTable
,
p
Write
->
pRow
);
void
*
key
=
sdbGetObjKey
(
pTable
,
p
Row
->
pObj
);
int32_t
keySize
=
sizeof
(
int32_t
);
if
(
pTable
->
keyType
==
SDB_KEY_STRING
||
pTable
->
keyType
==
SDB_KEY_VAR_STRING
)
{
keySize
=
strlen
((
char
*
)
key
);
...
...
@@ -543,23 +543,23 @@ static int32_t sdbDeleteHash(SSdbTable *pTable, SSWriteMsg *pWrite) {
atomic_sub_fetch_32
(
&
pTable
->
numOfRows
,
1
);
sdbDebug
(
"vgId:1, sdb:%s, delete key:%s from hash, numOfRows:%"
PRId64
", msg:%p"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Write
->
pRow
),
pTable
->
numOfRows
,
pWrite
->
pMsg
);
sdbGetRowStr
(
pTable
,
p
Row
->
pObj
),
pTable
->
numOfRows
,
pRow
->
pMsg
);
sdbDecRef
(
pTable
,
p
Write
->
pRow
);
sdbDecRef
(
pTable
,
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
sdbUpdateHash
(
SSdbTable
*
pTable
,
SS
WriteMsg
*
pWrite
)
{
static
int32_t
sdbUpdateHash
(
SSdbTable
*
pTable
,
SS
dbRow
*
pRow
)
{
sdbDebug
(
"vgId:1, sdb:%s, update key:%s in hash, numOfRows:%"
PRId64
", msg:%p"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Write
->
pRow
),
pTable
->
numOfRows
,
pWrite
->
pMsg
);
sdbGetRowStr
(
pTable
,
p
Row
->
pObj
),
pTable
->
numOfRows
,
pRow
->
pMsg
);
(
*
pTable
->
fpUpdate
)(
p
Write
);
(
*
pTable
->
fpUpdate
)(
p
Row
);
return
TSDB_CODE_SUCCESS
;
}
static
int
sdbProcessWrite
(
void
*
wparam
,
void
*
hparam
,
int32_t
qtype
,
void
*
unused
)
{
SS
WriteMsg
*
pWrite
=
wparam
;
SS
dbRow
*
pRow
=
wparam
;
SWalHead
*
pHead
=
hparam
;
int32_t
tableId
=
pHead
->
msgType
/
10
;
int32_t
action
=
pHead
->
msgType
%
10
;
...
...
@@ -598,22 +598,22 @@ static int sdbProcessWrite(void *wparam, void *hparam, int32_t qtype, void *unus
pthread_mutex_unlock
(
&
tsSdbMgmt
.
mutex
);
// from app,
wmsg
is created
if
(
p
Write
!=
NULL
)
{
// from app,
row
is created
if
(
p
Row
!=
NULL
)
{
// forward to peers
p
Write
->
processedCount
=
0
;
int32_t
syncCode
=
syncForwardToPeer
(
tsSdbMgmt
.
sync
,
pHead
,
p
Write
,
TAOS_QTYPE_RPC
);
if
(
syncCode
<=
0
)
p
Write
->
processedCount
=
1
;
p
Row
->
processedCount
=
0
;
int32_t
syncCode
=
syncForwardToPeer
(
tsSdbMgmt
.
sync
,
pHead
,
p
Row
,
TAOS_QTYPE_RPC
);
if
(
syncCode
<=
0
)
p
Row
->
processedCount
=
1
;
if
(
syncCode
<
0
)
{
sdbError
(
"vgId:1, sdb:%s, failed to forward req since %s action:%s key:%s hver:%"
PRIu64
", msg:%p"
,
pTable
->
name
,
tstrerror
(
syncCode
),
actStr
[
action
],
sdbGetKeyStr
(
pTable
,
pHead
->
cont
),
pHead
->
version
,
p
Write
->
pMsg
);
tstrerror
(
syncCode
),
actStr
[
action
],
sdbGetKeyStr
(
pTable
,
pHead
->
cont
),
pHead
->
version
,
p
Row
->
pMsg
);
}
else
if
(
syncCode
>
0
)
{
sdbDebug
(
"vgId:1, sdb:%s, forward req is sent, action:%s key:%s hver:%"
PRIu64
", msg:%p"
,
pTable
->
name
,
actStr
[
action
],
sdbGetKeyStr
(
pTable
,
pHead
->
cont
),
pHead
->
version
,
p
Write
->
pMsg
);
actStr
[
action
],
sdbGetKeyStr
(
pTable
,
pHead
->
cont
),
pHead
->
version
,
p
Row
->
pMsg
);
}
else
{
sdbTrace
(
"vgId:1, sdb:%s, no need to send fwd req, action:%s key:%s hver:%"
PRIu64
", msg:%p"
,
pTable
->
name
,
actStr
[
action
],
sdbGetKeyStr
(
pTable
,
pHead
->
cont
),
pHead
->
version
,
p
Write
->
pMsg
);
actStr
[
action
],
sdbGetKeyStr
(
pTable
,
pHead
->
cont
),
pHead
->
version
,
p
Row
->
pMsg
);
}
return
syncCode
;
}
...
...
@@ -622,71 +622,71 @@ static int sdbProcessWrite(void *wparam, void *hparam, int32_t qtype, void *unus
actStr
[
action
],
sdbGetKeyStr
(
pTable
,
pHead
->
cont
),
pHead
->
version
);
// even it is WAL/FWD, it shall be called to update version in sync
syncForwardToPeer
(
tsSdbMgmt
.
sync
,
pHead
,
p
Write
,
TAOS_QTYPE_RPC
);
syncForwardToPeer
(
tsSdbMgmt
.
sync
,
pHead
,
p
Row
,
TAOS_QTYPE_RPC
);
// from wal or forward msg,
wmsg
not created, should add into hash
// from wal or forward msg,
row
not created, should add into hash
if
(
action
==
SDB_ACTION_INSERT
)
{
SS
WriteMsg
wmsg
=
{.
rowSize
=
pHead
->
len
,
.
rowData
=
pHead
->
cont
,
.
pTable
=
pTable
};
code
=
(
*
pTable
->
fpDecode
)(
&
wmsg
);
return
sdbInsertHash
(
pTable
,
&
wmsg
);
SS
dbRow
row
=
{.
rowSize
=
pHead
->
len
,
.
rowData
=
pHead
->
cont
,
.
pTable
=
pTable
};
code
=
(
*
pTable
->
fpDecode
)(
&
row
);
return
sdbInsertHash
(
pTable
,
&
row
);
}
else
if
(
action
==
SDB_ACTION_DELETE
)
{
void
*
p
Row
=
sdbGetRowMeta
(
pTable
,
pHead
->
cont
);
if
(
p
Row
==
NULL
)
{
void
*
p
Obj
=
sdbGetRowMeta
(
pTable
,
pHead
->
cont
);
if
(
p
Obj
==
NULL
)
{
sdbDebug
(
"vgId:1, sdb:%s, object:%s not exist in hash, ignore delete action"
,
pTable
->
name
,
sdbGetKeyStr
(
pTable
,
pHead
->
cont
));
return
TSDB_CODE_SUCCESS
;
}
SS
WriteMsg
wmsg
=
{.
pTable
=
pTable
,
.
pRow
=
pRow
};
return
sdbDeleteHash
(
pTable
,
&
wmsg
);
SS
dbRow
row
=
{.
pTable
=
pTable
,
.
pObj
=
pObj
};
return
sdbDeleteHash
(
pTable
,
&
row
);
}
else
if
(
action
==
SDB_ACTION_UPDATE
)
{
void
*
p
Row
=
sdbGetRowMeta
(
pTable
,
pHead
->
cont
);
if
(
p
Row
==
NULL
)
{
void
*
p
Obj
=
sdbGetRowMeta
(
pTable
,
pHead
->
cont
);
if
(
p
Obj
==
NULL
)
{
sdbDebug
(
"vgId:1, sdb:%s, object:%s not exist in hash, ignore update action"
,
pTable
->
name
,
sdbGetKeyStr
(
pTable
,
pHead
->
cont
));
return
TSDB_CODE_SUCCESS
;
}
SS
WriteMsg
wmsg
=
{.
rowSize
=
pHead
->
len
,
.
rowData
=
pHead
->
cont
,
.
pTable
=
pTable
};
code
=
(
*
pTable
->
fpDecode
)(
&
wmsg
);
return
sdbUpdateHash
(
pTable
,
&
wmsg
);
SS
dbRow
row
=
{.
rowSize
=
pHead
->
len
,
.
rowData
=
pHead
->
cont
,
.
pTable
=
pTable
};
code
=
(
*
pTable
->
fpDecode
)(
&
row
);
return
sdbUpdateHash
(
pTable
,
&
row
);
}
else
{
return
TSDB_CODE_MND_INVALID_MSG_TYPE
;
}
}
int32_t
sdbInsertRow
(
SS
WriteMsg
*
pWrite
)
{
SSdbTable
*
pTable
=
p
Write
->
pTable
;
int32_t
sdbInsertRow
(
SS
dbRow
*
pRow
)
{
SSdbTable
*
pTable
=
p
Row
->
pTable
;
if
(
pTable
==
NULL
)
return
TSDB_CODE_MND_SDB_INVALID_TABLE_TYPE
;
if
(
sdbGetRowFromObj
(
pTable
,
p
Write
->
pRow
))
{
sdbError
(
"vgId:1, sdb:%s, failed to insert:%s since it exist"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Write
->
pRow
));
sdbDecRef
(
pTable
,
p
Write
->
pRow
);
if
(
sdbGetRowFromObj
(
pTable
,
p
Row
->
pObj
))
{
sdbError
(
"vgId:1, sdb:%s, failed to insert:%s since it exist"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Row
->
pObj
));
sdbDecRef
(
pTable
,
p
Row
->
pObj
);
return
TSDB_CODE_MND_SDB_OBJ_ALREADY_THERE
;
}
if
(
pTable
->
keyType
==
SDB_KEY_AUTO
)
{
*
((
uint32_t
*
)
p
Write
->
pRow
)
=
atomic_add_fetch_32
(
&
pTable
->
autoIndex
,
1
);
*
((
uint32_t
*
)
p
Row
->
pObj
)
=
atomic_add_fetch_32
(
&
pTable
->
autoIndex
,
1
);
// let vgId increase from 2
if
(
pTable
->
autoIndex
==
1
&&
pTable
->
id
==
SDB_TABLE_VGROUP
)
{
*
((
uint32_t
*
)
p
Write
->
pRow
)
=
atomic_add_fetch_32
(
&
pTable
->
autoIndex
,
1
);
*
((
uint32_t
*
)
p
Row
->
pObj
)
=
atomic_add_fetch_32
(
&
pTable
->
autoIndex
,
1
);
}
}
int32_t
code
=
sdbInsertHash
(
pTable
,
p
Write
);
int32_t
code
=
sdbInsertHash
(
pTable
,
p
Row
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
sdbError
(
"vgId:1, sdb:%s, failed to insert:%s into hash"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Write
->
pRow
));
sdbError
(
"vgId:1, sdb:%s, failed to insert:%s into hash"
,
pTable
->
name
,
sdbGetRowStr
(
pTable
,
p
Row
->
pObj
));
return
code
;
}
// just insert data into memory
if
(
p
Write
->
type
!=
SDB_OPER_GLOBAL
)
{
if
(
p
Row
->
type
!=
SDB_OPER_GLOBAL
)
{
return
TSDB_CODE_SUCCESS
;
}
if
(
p
Write
->
fpReq
)
{
return
(
*
p
Write
->
fpReq
)(
pWrite
->
pMsg
);
if
(
p
Row
->
fpReq
)
{
return
(
*
p
Row
->
fpReq
)(
pRow
->
pMsg
);
}
else
{
return
sdbWriteRowToQueue
(
p
Write
,
SDB_ACTION_INSERT
);
return
sdbWriteRowToQueue
(
p
Row
,
SDB_ACTION_INSERT
);
}
}
...
...
@@ -698,59 +698,59 @@ bool sdbCheckRowDeleted(void *tparam, void *pRow) {
return
atomic_val_compare_exchange_32
(
updateEnd
,
1
,
1
)
==
1
;
}
int32_t
sdbDeleteRow
(
SS
WriteMsg
*
pWrite
)
{
SSdbTable
*
pTable
=
p
Write
->
pTable
;
int32_t
sdbDeleteRow
(
SS
dbRow
*
pRow
)
{
SSdbTable
*
pTable
=
p
Row
->
pTable
;
if
(
pTable
==
NULL
)
return
TSDB_CODE_MND_SDB_INVALID_TABLE_TYPE
;
void
*
p
Row
=
sdbGetRowMetaFromObj
(
pTable
,
pWrite
->
pRow
);
if
(
p
Row
==
NULL
)
{
void
*
p
Obj
=
sdbGetRowMetaFromObj
(
pTable
,
pRow
->
pObj
);
if
(
p
Obj
==
NULL
)
{
sdbDebug
(
"vgId:1, sdb:%s, record is not there, delete failed"
,
pTable
->
name
);
return
TSDB_CODE_MND_SDB_OBJ_NOT_THERE
;
}
int32_t
code
=
sdbDeleteHash
(
pTable
,
p
Write
);
int32_t
code
=
sdbDeleteHash
(
pTable
,
p
Row
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
sdbError
(
"vgId:1, sdb:%s, failed to delete from hash"
,
pTable
->
name
);
return
code
;
}
// just delete data from memory
if
(
p
Write
->
type
!=
SDB_OPER_GLOBAL
)
{
if
(
p
Row
->
type
!=
SDB_OPER_GLOBAL
)
{
return
TSDB_CODE_SUCCESS
;
}
if
(
p
Write
->
fpReq
)
{
return
(
*
p
Write
->
fpReq
)(
pWrite
->
pMsg
);
if
(
p
Row
->
fpReq
)
{
return
(
*
p
Row
->
fpReq
)(
pRow
->
pMsg
);
}
else
{
return
sdbWriteRowToQueue
(
p
Write
,
SDB_ACTION_DELETE
);
return
sdbWriteRowToQueue
(
p
Row
,
SDB_ACTION_DELETE
);
}
}
int32_t
sdbUpdateRow
(
SS
WriteMsg
*
pWrite
)
{
SSdbTable
*
pTable
=
p
Write
->
pTable
;
int32_t
sdbUpdateRow
(
SS
dbRow
*
pRow
)
{
SSdbTable
*
pTable
=
p
Row
->
pTable
;
if
(
pTable
==
NULL
)
return
TSDB_CODE_MND_SDB_INVALID_TABLE_TYPE
;
void
*
p
Row
=
sdbGetRowMetaFromObj
(
pTable
,
pWrite
->
pRow
);
if
(
p
Row
==
NULL
)
{
void
*
p
Obj
=
sdbGetRowMetaFromObj
(
pTable
,
pRow
->
pObj
);
if
(
p
Obj
==
NULL
)
{
sdbDebug
(
"vgId:1, sdb:%s, record is not there, update failed"
,
pTable
->
name
);
return
TSDB_CODE_MND_SDB_OBJ_NOT_THERE
;
}
int32_t
code
=
sdbUpdateHash
(
pTable
,
p
Write
);
int32_t
code
=
sdbUpdateHash
(
pTable
,
p
Row
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
sdbError
(
"vgId:1, sdb:%s, failed to update hash"
,
pTable
->
name
);
return
code
;
}
// just update data in memory
if
(
p
Write
->
type
!=
SDB_OPER_GLOBAL
)
{
if
(
p
Row
->
type
!=
SDB_OPER_GLOBAL
)
{
return
TSDB_CODE_SUCCESS
;
}
if
(
p
Write
->
fpReq
)
{
return
(
*
p
Write
->
fpReq
)(
pWrite
->
pMsg
);
if
(
p
Row
->
fpReq
)
{
return
(
*
p
Row
->
fpReq
)(
pRow
->
pMsg
);
}
else
{
return
sdbWriteRowToQueue
(
p
Write
,
SDB_ACTION_UPDATE
);
return
sdbWriteRowToQueue
(
p
Row
,
SDB_ACTION_UPDATE
);
}
}
...
...
@@ -830,12 +830,12 @@ void sdbCloseTable(void *handle) {
void
**
ppRow
=
taosHashIterGet
(
pIter
);
if
(
ppRow
==
NULL
)
continue
;
SS
WriteMsg
wmsg
=
{
.
p
Row
=
*
ppRow
,
SS
dbRow
row
=
{
.
p
Obj
=
*
ppRow
,
.
pTable
=
pTable
,
};
(
*
pTable
->
fpDestroy
)(
&
wmsg
);
(
*
pTable
->
fpDestroy
)(
&
row
);
}
taosHashDestroyIter
(
pIter
);
...
...
@@ -934,12 +934,12 @@ static void sdbFreeQueue() {
tsSdbWQueue
=
NULL
;
}
static
int32_t
sdbWriteToQueue
(
SS
WriteMsg
*
pWrite
,
int32_t
qtype
)
{
SWalHead
*
pHead
=
p
Write
->
pHead
;
static
int32_t
sdbWriteToQueue
(
SS
dbRow
*
pRow
,
int32_t
qtype
)
{
SWalHead
*
pHead
=
p
Row
->
pHead
;
if
(
pHead
->
len
>
TSDB_MAX_WAL_SIZE
)
{
sdbError
(
"vgId:1, wal len:%d exceeds limit, hver:%"
PRIu64
,
pHead
->
len
,
pHead
->
version
);
taosFreeQitem
(
p
Write
);
taosFreeQitem
(
p
Row
);
return
TSDB_CODE_WAL_SIZE_LIMIT
;
}
...
...
@@ -949,64 +949,64 @@ static int32_t sdbWriteToQueue(SSWriteMsg *pWrite, int32_t qtype) {
taosMsleep
(
1
);
}
sdbIncRef
(
p
Write
->
pTable
,
pWrite
->
pRow
);
sdbIncRef
(
p
Row
->
pTable
,
pRow
->
pObj
);
sdbTrace
(
"vgId:1, msg:%p write into to sdb queue"
,
p
Write
->
pMsg
);
taosWriteQitem
(
tsSdbWQueue
,
qtype
,
p
Write
);
sdbTrace
(
"vgId:1, msg:%p write into to sdb queue"
,
p
Row
->
pMsg
);
taosWriteQitem
(
tsSdbWQueue
,
qtype
,
p
Row
);
return
TSDB_CODE_MND_ACTION_IN_PROGRESS
;
}
static
void
sdbFreeFromQueue
(
SS
WriteMsg
*
pWrite
)
{
static
void
sdbFreeFromQueue
(
SS
dbRow
*
pRow
)
{
int32_t
queued
=
atomic_sub_fetch_32
(
&
tsSdbMgmt
.
queuedMsg
,
1
);
sdbTrace
(
"vgId:1, msg:%p free from sdb queue, queued:%d"
,
p
Write
->
pMsg
,
queued
);
sdbTrace
(
"vgId:1, msg:%p free from sdb queue, queued:%d"
,
p
Row
->
pMsg
,
queued
);
sdbDecRef
(
p
Write
->
pTable
,
pWrite
->
pRow
);
taosFreeQitem
(
p
Write
);
sdbDecRef
(
p
Row
->
pTable
,
pRow
->
pObj
);
taosFreeQitem
(
p
Row
);
}
static
int32_t
sdbWriteWalToQueue
(
void
*
vparam
,
void
*
wparam
,
int32_t
qtype
,
void
*
rparam
)
{
SWalHead
*
pHead
=
wparam
;
int32_t
size
=
sizeof
(
SSWriteMsg
)
+
sizeof
(
SWalHead
)
+
pHead
->
len
;
SS
WriteMsg
*
pWrite
=
taosAllocateQitem
(
size
);
if
(
p
Write
==
NULL
)
{
int32_t
size
=
sizeof
(
SSdbRow
)
+
sizeof
(
SWalHead
)
+
pHead
->
len
;
SS
dbRow
*
pRow
=
taosAllocateQitem
(
size
);
if
(
p
Row
==
NULL
)
{
return
TSDB_CODE_VND_OUT_OF_MEMORY
;
}
return
sdbWriteToQueue
(
p
Write
,
qtype
);
return
sdbWriteToQueue
(
p
Row
,
qtype
);
}
static
int32_t
sdbWriteRowToQueue
(
SS
WriteMsg
*
pInputWrite
,
int32_t
action
)
{
SSdbTable
*
pTable
=
pInput
Write
->
pTable
;
static
int32_t
sdbWriteRowToQueue
(
SS
dbRow
*
pInputRow
,
int32_t
action
)
{
SSdbTable
*
pTable
=
pInput
Row
->
pTable
;
if
(
pTable
==
NULL
)
return
TSDB_CODE_MND_SDB_INVALID_TABLE_TYPE
;
int32_t
size
=
sizeof
(
SSWriteMsg
)
+
sizeof
(
SWalHead
)
+
pTable
->
maxRowSize
;
SS
WriteMsg
*
pWrite
=
taosAllocateQitem
(
size
);
if
(
p
Write
==
NULL
)
{
int32_t
size
=
sizeof
(
SSdbRow
)
+
sizeof
(
SWalHead
)
+
pTable
->
maxRowSize
;
SS
dbRow
*
pRow
=
taosAllocateQitem
(
size
);
if
(
p
Row
==
NULL
)
{
return
TSDB_CODE_VND_OUT_OF_MEMORY
;
}
memcpy
(
p
Write
,
pInputWrite
,
sizeof
(
SSWriteMsg
));
p
Write
->
processedCount
=
1
;
memcpy
(
p
Row
,
pInputRow
,
sizeof
(
SSdbRow
));
p
Row
->
processedCount
=
1
;
SWalHead
*
pHead
=
p
Write
->
pHead
;
p
Write
->
rowData
=
pHead
->
cont
;
(
*
pTable
->
fpEncode
)(
p
Write
);
SWalHead
*
pHead
=
p
Row
->
pHead
;
p
Row
->
rowData
=
pHead
->
cont
;
(
*
pTable
->
fpEncode
)(
p
Row
);
pHead
->
len
=
p
Write
->
rowSize
;
pHead
->
len
=
p
Row
->
rowSize
;
pHead
->
version
=
0
;
pHead
->
msgType
=
pTable
->
id
*
10
+
action
;
return
sdbWriteToQueue
(
p
Write
,
TAOS_QTYPE_RPC
);
return
sdbWriteToQueue
(
p
Row
,
TAOS_QTYPE_RPC
);
}
int32_t
sdbInsertRowToQueue
(
SS
WriteMsg
*
pWrite
)
{
return
sdbWriteRowToQueue
(
pWrite
,
SDB_ACTION_INSERT
);
}
int32_t
sdbInsertRowToQueue
(
SS
dbRow
*
pRow
)
{
return
sdbWriteRowToQueue
(
pRow
,
SDB_ACTION_INSERT
);
}
static
void
*
sdbWorkerFp
(
void
*
pWorker
)
{
SS
WriteMsg
*
pWrite
;
int32_t
qtype
;
void
*
unUsed
;
SS
dbRow
*
pRow
;
int32_t
qtype
;
void
*
unUsed
;
while
(
1
)
{
int32_t
numOfMsgs
=
taosReadAllQitemsFromQset
(
tsSdbWQset
,
tsSdbWQall
,
&
unUsed
);
...
...
@@ -1016,14 +1016,14 @@ static void *sdbWorkerFp(void *pWorker) {
}
for
(
int32_t
i
=
0
;
i
<
numOfMsgs
;
++
i
)
{
taosGetQitem
(
tsSdbWQall
,
&
qtype
,
(
void
**
)
&
p
Write
);
sdbTrace
(
"vgId:1, msg:%p, row:%p hver:%"
PRIu64
", will be processed in sdb queue"
,
p
Write
->
pMsg
,
pWrite
->
pRow
,
p
Write
->
pHead
->
version
);
taosGetQitem
(
tsSdbWQall
,
&
qtype
,
(
void
**
)
&
p
Row
);
sdbTrace
(
"vgId:1, msg:%p, row:%p hver:%"
PRIu64
", will be processed in sdb queue"
,
p
Row
->
pMsg
,
pRow
->
pObj
,
p
Row
->
pHead
->
version
);
p
Write
->
code
=
sdbProcessWrite
((
qtype
==
TAOS_QTYPE_RPC
)
?
pWrite
:
NULL
,
pWrite
->
pHead
,
qtype
,
NULL
);
if
(
p
Write
->
code
>
0
)
pWrite
->
code
=
0
;
p
Row
->
code
=
sdbProcessWrite
((
qtype
==
TAOS_QTYPE_RPC
)
?
pRow
:
NULL
,
pRow
->
pHead
,
qtype
,
NULL
);
if
(
p
Row
->
code
>
0
)
pRow
->
code
=
0
;
sdbTrace
(
"vgId:1, msg:%p is processed in sdb queue, code:%x"
,
p
Write
->
pMsg
,
pWrite
->
code
);
sdbTrace
(
"vgId:1, msg:%p is processed in sdb queue, code:%x"
,
p
Row
->
pMsg
,
pRow
->
code
);
}
walFsync
(
tsSdbMgmt
.
wal
,
true
);
...
...
@@ -1031,16 +1031,16 @@ static void *sdbWorkerFp(void *pWorker) {
// browse all items, and process them one by one
taosResetQitems
(
tsSdbWQall
);
for
(
int32_t
i
=
0
;
i
<
numOfMsgs
;
++
i
)
{
taosGetQitem
(
tsSdbWQall
,
&
qtype
,
(
void
**
)
&
p
Write
);
taosGetQitem
(
tsSdbWQall
,
&
qtype
,
(
void
**
)
&
p
Row
);
if
(
qtype
==
TAOS_QTYPE_RPC
)
{
sdbConfirmForward
(
NULL
,
p
Write
,
pWrite
->
code
);
sdbConfirmForward
(
NULL
,
p
Row
,
pRow
->
code
);
}
else
if
(
qtype
==
TAOS_QTYPE_FWD
)
{
syncConfirmForward
(
tsSdbMgmt
.
sync
,
p
Write
->
pHead
->
version
,
pWrite
->
code
);
syncConfirmForward
(
tsSdbMgmt
.
sync
,
p
Row
->
pHead
->
version
,
pRow
->
code
);
}
else
{
}
sdbFreeFromQueue
(
p
Write
);
sdbFreeFromQueue
(
p
Row
);
}
}
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
f323186f
...
...
@@ -99,13 +99,13 @@ static void mnodeDestroyChildTable(SCTableObj *pTable) {
tfree
(
pTable
);
}
static
int32_t
mnodeChildTableActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
mnodeDestroyChildTable
(
p
WMsg
->
pRow
);
static
int32_t
mnodeChildTableActionDestroy
(
SS
dbRow
*
pRow
)
{
mnodeDestroyChildTable
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeChildTableActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
SCTableObj
*
pTable
=
p
WMsg
->
pRow
;
static
int32_t
mnodeChildTableActionInsert
(
SS
dbRow
*
pRow
)
{
SCTableObj
*
pTable
=
p
Row
->
pObj
;
SVgObj
*
pVgroup
=
mnodeGetVgroup
(
pTable
->
vgId
);
if
(
pVgroup
==
NULL
)
{
...
...
@@ -153,8 +153,8 @@ static int32_t mnodeChildTableActionInsert(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeChildTableActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
SCTableObj
*
pTable
=
p
WMsg
->
pRow
;
static
int32_t
mnodeChildTableActionDelete
(
SS
dbRow
*
pRow
)
{
SCTableObj
*
pTable
=
p
Row
->
pObj
;
if
(
pTable
->
vgId
==
0
)
{
return
TSDB_CODE_MND_VGROUP_NOT_EXIST
;
}
...
...
@@ -189,8 +189,8 @@ static int32_t mnodeChildTableActionDelete(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeChildTableActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
SCTableObj
*
pNew
=
p
WMsg
->
pRow
;
static
int32_t
mnodeChildTableActionUpdate
(
SS
dbRow
*
pRow
)
{
SCTableObj
*
pNew
=
p
Row
->
pObj
;
SCTableObj
*
pTable
=
mnodeGetChildTable
(
pNew
->
info
.
tableId
);
if
(
pTable
!=
pNew
)
{
void
*
oldTableId
=
pTable
->
info
.
tableId
;
...
...
@@ -216,50 +216,50 @@ static int32_t mnodeChildTableActionUpdate(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeChildTableActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SCTableObj
*
pTable
=
p
WMsg
->
pRow
;
assert
(
pTable
!=
NULL
&&
p
WMsg
->
rowData
!=
NULL
);
static
int32_t
mnodeChildTableActionEncode
(
SS
dbRow
*
pRow
)
{
SCTableObj
*
pTable
=
p
Row
->
pObj
;
assert
(
pTable
!=
NULL
&&
p
Row
->
rowData
!=
NULL
);
int32_t
len
=
strlen
(
pTable
->
info
.
tableId
);
if
(
len
>=
TSDB_TABLE_FNAME_LEN
)
return
TSDB_CODE_MND_INVALID_TABLE_ID
;
memcpy
(
p
WMsg
->
rowData
,
pTable
->
info
.
tableId
,
len
);
memset
(
p
WMsg
->
rowData
+
len
,
0
,
1
);
memcpy
(
p
Row
->
rowData
,
pTable
->
info
.
tableId
,
len
);
memset
(
p
Row
->
rowData
+
len
,
0
,
1
);
len
++
;
memcpy
(
p
WMsg
->
rowData
+
len
,
(
char
*
)
pTable
+
sizeof
(
char
*
),
tsChildTableUpdateSize
);
memcpy
(
p
Row
->
rowData
+
len
,
(
char
*
)
pTable
+
sizeof
(
char
*
),
tsChildTableUpdateSize
);
len
+=
tsChildTableUpdateSize
;
if
(
pTable
->
info
.
type
!=
TSDB_CHILD_TABLE
)
{
int32_t
schemaSize
=
pTable
->
numOfColumns
*
sizeof
(
SSchema
);
memcpy
(
p
WMsg
->
rowData
+
len
,
pTable
->
schema
,
schemaSize
);
memcpy
(
p
Row
->
rowData
+
len
,
pTable
->
schema
,
schemaSize
);
len
+=
schemaSize
;
if
(
pTable
->
sqlLen
!=
0
)
{
memcpy
(
p
WMsg
->
rowData
+
len
,
pTable
->
sql
,
pTable
->
sqlLen
);
memcpy
(
p
Row
->
rowData
+
len
,
pTable
->
sql
,
pTable
->
sqlLen
);
len
+=
pTable
->
sqlLen
;
}
}
p
WMsg
->
rowSize
=
len
;
p
Row
->
rowSize
=
len
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeChildTableActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
assert
(
p
WMsg
->
rowData
!=
NULL
);
static
int32_t
mnodeChildTableActionDecode
(
SS
dbRow
*
pRow
)
{
assert
(
p
Row
->
rowData
!=
NULL
);
SCTableObj
*
pTable
=
calloc
(
1
,
sizeof
(
SCTableObj
));
if
(
pTable
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
int32_t
len
=
strlen
(
p
WMsg
->
rowData
);
int32_t
len
=
strlen
(
p
Row
->
rowData
);
if
(
len
>=
TSDB_TABLE_FNAME_LEN
)
{
free
(
pTable
);
return
TSDB_CODE_MND_INVALID_TABLE_ID
;
}
pTable
->
info
.
tableId
=
strdup
(
p
WMsg
->
rowData
);
pTable
->
info
.
tableId
=
strdup
(
p
Row
->
rowData
);
len
++
;
memcpy
((
char
*
)
pTable
+
sizeof
(
char
*
),
p
WMsg
->
rowData
+
len
,
tsChildTableUpdateSize
);
memcpy
((
char
*
)
pTable
+
sizeof
(
char
*
),
p
Row
->
rowData
+
len
,
tsChildTableUpdateSize
);
len
+=
tsChildTableUpdateSize
;
if
(
pTable
->
info
.
type
!=
TSDB_CHILD_TABLE
)
{
...
...
@@ -269,7 +269,7 @@ static int32_t mnodeChildTableActionDecode(SSWriteMsg *pWMsg) {
mnodeDestroyChildTable
(
pTable
);
return
TSDB_CODE_MND_INVALID_TABLE_TYPE
;
}
memcpy
(
pTable
->
schema
,
p
WMsg
->
rowData
+
len
,
schemaSize
);
memcpy
(
pTable
->
schema
,
p
Row
->
rowData
+
len
,
schemaSize
);
len
+=
schemaSize
;
if
(
pTable
->
sqlLen
!=
0
)
{
...
...
@@ -278,11 +278,11 @@ static int32_t mnodeChildTableActionDecode(SSWriteMsg *pWMsg) {
mnodeDestroyChildTable
(
pTable
);
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
}
memcpy
(
pTable
->
sql
,
p
WMsg
->
rowData
+
len
,
pTable
->
sqlLen
);
memcpy
(
pTable
->
sql
,
p
Row
->
rowData
+
len
,
pTable
->
sqlLen
);
}
}
p
WMsg
->
pRow
=
pTable
;
p
Row
->
pObj
=
pTable
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -297,7 +297,7 @@ static int32_t mnodeChildTableActionRestored() {
SDbObj
*
pDb
=
mnodeGetDbByTableId
(
pTable
->
info
.
tableId
);
if
(
pDb
==
NULL
||
pDb
->
status
!=
TSDB_DB_STATUS_READY
)
{
mError
(
"ctable:%s, failed to get db or db in dropping, discard it"
,
pTable
->
info
.
tableId
);
SS
WriteMsg
desc
=
{.
type
=
SDB_OPER_LOCAL
,
.
pRow
=
pTable
,
.
pTable
=
tsChildTableSdb
};
SS
dbRow
desc
=
{.
type
=
SDB_OPER_LOCAL
,
.
pObj
=
pTable
,
.
pTable
=
tsChildTableSdb
};
sdbDeleteRow
(
&
desc
);
mnodeDecTableRef
(
pTable
);
mnodeDecDbRef
(
pDb
);
...
...
@@ -309,7 +309,7 @@ static int32_t mnodeChildTableActionRestored() {
if
(
pVgroup
==
NULL
)
{
mError
(
"ctable:%s, failed to get vgId:%d tid:%d, discard it"
,
pTable
->
info
.
tableId
,
pTable
->
vgId
,
pTable
->
tid
);
pTable
->
vgId
=
0
;
SS
WriteMsg
desc
=
{.
type
=
SDB_OPER_LOCAL
,
.
pRow
=
pTable
,
.
pTable
=
tsChildTableSdb
};
SS
dbRow
desc
=
{.
type
=
SDB_OPER_LOCAL
,
.
pObj
=
pTable
,
.
pTable
=
tsChildTableSdb
};
sdbDeleteRow
(
&
desc
);
mnodeDecTableRef
(
pTable
);
continue
;
...
...
@@ -320,7 +320,7 @@ static int32_t mnodeChildTableActionRestored() {
mError
(
"ctable:%s, db:%s not match with vgId:%d db:%s sid:%d, discard it"
,
pTable
->
info
.
tableId
,
pDb
->
name
,
pTable
->
vgId
,
pVgroup
->
dbName
,
pTable
->
tid
);
pTable
->
vgId
=
0
;
SS
WriteMsg
desc
=
{.
type
=
SDB_OPER_LOCAL
,
.
pRow
=
pTable
,
.
pTable
=
tsChildTableSdb
};
SS
dbRow
desc
=
{.
type
=
SDB_OPER_LOCAL
,
.
pObj
=
pTable
,
.
pTable
=
tsChildTableSdb
};
sdbDeleteRow
(
&
desc
);
mnodeDecTableRef
(
pTable
);
continue
;
...
...
@@ -331,7 +331,7 @@ static int32_t mnodeChildTableActionRestored() {
if
(
pSuperTable
==
NULL
)
{
mError
(
"ctable:%s, stable:%"
PRIu64
" not exist"
,
pTable
->
info
.
tableId
,
pTable
->
suid
);
pTable
->
vgId
=
0
;
SS
WriteMsg
desc
=
{.
type
=
SDB_OPER_LOCAL
,
.
pRow
=
pTable
,
.
pTable
=
tsChildTableSdb
};
SS
dbRow
desc
=
{.
type
=
SDB_OPER_LOCAL
,
.
pObj
=
pTable
,
.
pTable
=
tsChildTableSdb
};
sdbDeleteRow
(
&
desc
);
mnodeDecTableRef
(
pTable
);
continue
;
...
...
@@ -430,13 +430,13 @@ static void mnodeDestroySuperTable(SSTableObj *pStable) {
tfree
(
pStable
);
}
static
int32_t
mnodeSuperTableActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
mnodeDestroySuperTable
(
p
WMsg
->
pRow
);
static
int32_t
mnodeSuperTableActionDestroy
(
SS
dbRow
*
pRow
)
{
mnodeDestroySuperTable
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeSuperTableActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
SSTableObj
*
pStable
=
p
WMsg
->
pRow
;
static
int32_t
mnodeSuperTableActionInsert
(
SS
dbRow
*
pRow
)
{
SSTableObj
*
pStable
=
p
Row
->
pObj
;
SDbObj
*
pDb
=
mnodeGetDbByTableId
(
pStable
->
info
.
tableId
);
if
(
pDb
!=
NULL
&&
pDb
->
status
==
TSDB_DB_STATUS_READY
)
{
mnodeAddSuperTableIntoDb
(
pDb
);
...
...
@@ -446,8 +446,8 @@ static int32_t mnodeSuperTableActionInsert(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeSuperTableActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
SSTableObj
*
pStable
=
p
WMsg
->
pRow
;
static
int32_t
mnodeSuperTableActionDelete
(
SS
dbRow
*
pRow
)
{
SSTableObj
*
pStable
=
p
Row
->
pObj
;
SDbObj
*
pDb
=
mnodeGetDbByTableId
(
pStable
->
info
.
tableId
);
if
(
pDb
!=
NULL
)
{
mnodeRemoveSuperTableFromDb
(
pDb
);
...
...
@@ -458,8 +458,8 @@ static int32_t mnodeSuperTableActionDelete(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeSuperTableActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
SSTableObj
*
pNew
=
p
WMsg
->
pRow
;
static
int32_t
mnodeSuperTableActionUpdate
(
SS
dbRow
*
pRow
)
{
SSTableObj
*
pNew
=
p
Row
->
pObj
;
SSTableObj
*
pTable
=
mnodeGetSuperTable
(
pNew
->
info
.
tableId
);
if
(
pTable
!=
NULL
&&
pTable
!=
pNew
)
{
void
*
oldTableId
=
pTable
->
info
.
tableId
;
...
...
@@ -483,43 +483,43 @@ static int32_t mnodeSuperTableActionUpdate(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeSuperTableActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SSTableObj
*
pStable
=
p
WMsg
->
pRow
;
assert
(
p
WMsg
->
pRow
!=
NULL
&&
pWMsg
->
rowData
!=
NULL
);
static
int32_t
mnodeSuperTableActionEncode
(
SS
dbRow
*
pRow
)
{
SSTableObj
*
pStable
=
p
Row
->
pObj
;
assert
(
p
Row
->
pObj
!=
NULL
&&
pRow
->
rowData
!=
NULL
);
int32_t
len
=
strlen
(
pStable
->
info
.
tableId
);
if
(
len
>=
TSDB_TABLE_FNAME_LEN
)
len
=
TSDB_CODE_MND_INVALID_TABLE_ID
;
memcpy
(
p
WMsg
->
rowData
,
pStable
->
info
.
tableId
,
len
);
memset
(
p
WMsg
->
rowData
+
len
,
0
,
1
);
memcpy
(
p
Row
->
rowData
,
pStable
->
info
.
tableId
,
len
);
memset
(
p
Row
->
rowData
+
len
,
0
,
1
);
len
++
;
memcpy
(
p
WMsg
->
rowData
+
len
,
(
char
*
)
pStable
+
sizeof
(
char
*
),
tsSuperTableUpdateSize
);
memcpy
(
p
Row
->
rowData
+
len
,
(
char
*
)
pStable
+
sizeof
(
char
*
),
tsSuperTableUpdateSize
);
len
+=
tsSuperTableUpdateSize
;
int32_t
schemaSize
=
sizeof
(
SSchema
)
*
(
pStable
->
numOfColumns
+
pStable
->
numOfTags
);
memcpy
(
p
WMsg
->
rowData
+
len
,
pStable
->
schema
,
schemaSize
);
memcpy
(
p
Row
->
rowData
+
len
,
pStable
->
schema
,
schemaSize
);
len
+=
schemaSize
;
p
WMsg
->
rowSize
=
len
;
p
Row
->
rowSize
=
len
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeSuperTableActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
assert
(
p
WMsg
->
rowData
!=
NULL
);
static
int32_t
mnodeSuperTableActionDecode
(
SS
dbRow
*
pRow
)
{
assert
(
p
Row
->
rowData
!=
NULL
);
SSTableObj
*
pStable
=
(
SSTableObj
*
)
calloc
(
1
,
sizeof
(
SSTableObj
));
if
(
pStable
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
int32_t
len
=
strlen
(
p
WMsg
->
rowData
);
int32_t
len
=
strlen
(
p
Row
->
rowData
);
if
(
len
>=
TSDB_TABLE_FNAME_LEN
){
free
(
pStable
);
return
TSDB_CODE_MND_INVALID_TABLE_ID
;
}
pStable
->
info
.
tableId
=
strdup
(
p
WMsg
->
rowData
);
pStable
->
info
.
tableId
=
strdup
(
p
Row
->
rowData
);
len
++
;
memcpy
((
char
*
)
pStable
+
sizeof
(
char
*
),
p
WMsg
->
rowData
+
len
,
tsSuperTableUpdateSize
);
memcpy
((
char
*
)
pStable
+
sizeof
(
char
*
),
p
Row
->
rowData
+
len
,
tsSuperTableUpdateSize
);
len
+=
tsSuperTableUpdateSize
;
int32_t
schemaSize
=
sizeof
(
SSchema
)
*
(
pStable
->
numOfColumns
+
pStable
->
numOfTags
);
...
...
@@ -529,9 +529,9 @@ static int32_t mnodeSuperTableActionDecode(SSWriteMsg *pWMsg) {
return
TSDB_CODE_MND_NOT_SUPER_TABLE
;
}
memcpy
(
pStable
->
schema
,
p
WMsg
->
rowData
+
len
,
schemaSize
);
memcpy
(
pStable
->
schema
,
p
Row
->
rowData
+
len
,
schemaSize
);
p
WMsg
->
pRow
=
pStable
;
p
Row
->
pObj
=
pStable
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -828,7 +828,7 @@ static int32_t mnodeCreateSuperTableCb(SMnodeMsg *pMsg, int32_t code) {
}
else
{
mError
(
"app:%p:%p, stable:%s, failed to create in sdb, reason:%s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pTable
->
info
.
tableId
,
tstrerror
(
code
));
SS
WriteMsg
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pRow
=
pTable
,
.
pTable
=
tsSuperTableSdb
};
SS
dbRow
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pObj
=
pTable
,
.
pTable
=
tsSuperTableSdb
};
sdbDeleteRow
(
&
desc
);
}
...
...
@@ -878,16 +878,16 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) {
pMsg
->
pTable
=
(
STableObj
*
)
pStable
;
mnodeIncTableRef
(
pMsg
->
pTable
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pStable
,
.
p
Obj
=
pStable
,
.
rowSize
=
sizeof
(
SSTableObj
)
+
schemaSize
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeCreateSuperTableCb
};
int32_t
code
=
sdbInsertRow
(
&
wmsg
);
int32_t
code
=
sdbInsertRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mnodeDestroySuperTable
(
pStable
);
pMsg
->
pTable
=
NULL
;
...
...
@@ -937,15 +937,15 @@ static int32_t mnodeProcessDropSuperTableMsg(SMnodeMsg *pMsg) {
mnodeDropAllChildTablesInStable
(
pStable
);
}
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pStable
,
.
p
Obj
=
pStable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeDropSuperTableCb
};
int32_t
code
=
sdbDeleteRow
(
&
wmsg
);
int32_t
code
=
sdbDeleteRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"app:%p:%p, table:%s, failed to drop, reason:%s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pStable
->
info
.
tableId
,
tstrerror
(
code
));
...
...
@@ -1010,15 +1010,15 @@ static int32_t mnodeAddSuperTableTag(SMnodeMsg *pMsg, SSchema schema[], int32_t
mInfo
(
"app:%p:%p, stable %s, start to add tag %s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pStable
->
info
.
tableId
,
schema
[
0
].
name
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pStable
,
.
p
Obj
=
pStable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeAddSuperTableTagCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
static
int32_t
mnodeDropSuperTableTagCb
(
SMnodeMsg
*
pMsg
,
int32_t
code
)
{
...
...
@@ -1044,15 +1044,15 @@ static int32_t mnodeDropSuperTableTag(SMnodeMsg *pMsg, char *tagName) {
mInfo
(
"app:%p:%p, stable %s, start to drop tag %s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pStable
->
info
.
tableId
,
tagName
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pStable
,
.
p
Obj
=
pStable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeDropSuperTableTagCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
static
int32_t
mnodeModifySuperTableTagNameCb
(
SMnodeMsg
*
pMsg
,
int32_t
code
)
{
...
...
@@ -1088,15 +1088,15 @@ static int32_t mnodeModifySuperTableTagName(SMnodeMsg *pMsg, char *oldTagName, c
mInfo
(
"app:%p:%p, stable %s, start to modify tag %s to %s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pStable
->
info
.
tableId
,
oldTagName
,
newTagName
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pStable
,
.
p
Obj
=
pStable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeModifySuperTableTagNameCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
static
int32_t
mnodeFindSuperTableColumnIndex
(
SSTableObj
*
pStable
,
char
*
colName
)
{
...
...
@@ -1162,15 +1162,15 @@ static int32_t mnodeAddSuperTableColumn(SMnodeMsg *pMsg, SSchema schema[], int32
mInfo
(
"app:%p:%p, stable %s, start to add column"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pStable
->
info
.
tableId
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pStable
,
.
p
Obj
=
pStable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeAddSuperTableColumnCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
static
int32_t
mnodeDropSuperTableColumnCb
(
SMnodeMsg
*
pMsg
,
int32_t
code
)
{
...
...
@@ -1207,15 +1207,15 @@ static int32_t mnodeDropSuperTableColumn(SMnodeMsg *pMsg, char *colName) {
mInfo
(
"app:%p:%p, stable %s, start to delete column"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pStable
->
info
.
tableId
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pStable
,
.
p
Obj
=
pStable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeDropSuperTableColumnCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
static
int32_t
mnodeChangeSuperTableColumnCb
(
SMnodeMsg
*
pMsg
,
int32_t
code
)
{
...
...
@@ -1251,15 +1251,15 @@ static int32_t mnodeChangeSuperTableColumn(SMnodeMsg *pMsg, char *oldName, char
mInfo
(
"app:%p:%p, stable %s, start to modify column %s to %s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pStable
->
info
.
tableId
,
oldName
,
newName
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pStable
,
.
p
Obj
=
pStable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeChangeSuperTableColumnCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
// show super tables
...
...
@@ -1417,12 +1417,12 @@ void mnodeDropAllSuperTables(SDbObj *pDropDb) {
if
(
pTable
==
NULL
)
break
;
if
(
strncmp
(
prefix
,
pTable
->
info
.
tableId
,
prefixLen
)
==
0
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsSuperTableSdb
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
numOfTables
++
;
}
...
...
@@ -1694,7 +1694,7 @@ static int32_t mnodeDoCreateChildTableCb(SMnodeMsg *pMsg, int32_t code) {
}
else
{
mError
(
"app:%p:%p, table:%s, failed to create table sid:%d, uid:%"
PRIu64
", reason:%s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pTable
->
info
.
tableId
,
pTable
->
tid
,
pTable
->
uid
,
tstrerror
(
code
));
SS
WriteMsg
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pRow
=
pTable
,
.
pTable
=
tsChildTableSdb
};
SS
dbRow
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pObj
=
pTable
,
.
pTable
=
tsChildTableSdb
};
sdbDeleteRow
(
&
desc
);
return
code
;
}
...
...
@@ -1780,9 +1780,9 @@ static int32_t mnodeDoCreateChildTable(SMnodeMsg *pMsg, int32_t tid) {
pMsg
->
pTable
=
(
STableObj
*
)
pTable
;
mnodeIncTableRef
(
pMsg
->
pTable
);
SS
WriteMsg
desc
=
{
SS
dbRow
desc
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
.
pTable
=
tsChildTableSdb
,
.
pMsg
=
pMsg
,
.
fpReq
=
mnodeDoCreateChildTableFp
...
...
@@ -1901,15 +1901,15 @@ static int32_t mnodeProcessDropChildTableMsg(SMnodeMsg *pMsg) {
return
TSDB_CODE_MND_APP_ERROR
;
}
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsChildTableSdb
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeDropChildTableCb
};
int32_t
code
=
sdbDeleteRow
(
&
wmsg
);
int32_t
code
=
sdbDeleteRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"app:%p:%p, ctable:%s, failed to drop, reason:%s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pTable
->
info
.
tableId
,
tstrerror
(
code
));
...
...
@@ -2005,15 +2005,15 @@ static int32_t mnodeAddNormalTableColumn(SMnodeMsg *pMsg, SSchema schema[], int3
mInfo
(
"app:%p:%p, ctable %s, start to add column"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pTable
->
info
.
tableId
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsChildTableSdb
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeAlterNormalTableColumnCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
static
int32_t
mnodeDropNormalTableColumn
(
SMnodeMsg
*
pMsg
,
char
*
colName
)
{
...
...
@@ -2038,15 +2038,15 @@ static int32_t mnodeDropNormalTableColumn(SMnodeMsg *pMsg, char *colName) {
mInfo
(
"app:%p:%p, ctable %s, start to drop column %s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pTable
->
info
.
tableId
,
colName
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsChildTableSdb
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeAlterNormalTableColumnCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
static
int32_t
mnodeChangeNormalTableColumn
(
SMnodeMsg
*
pMsg
,
char
*
oldName
,
char
*
newName
)
{
...
...
@@ -2075,15 +2075,15 @@ static int32_t mnodeChangeNormalTableColumn(SMnodeMsg *pMsg, char *oldName, char
mInfo
(
"app:%p:%p, ctable %s, start to modify column %s to %s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pTable
->
info
.
tableId
,
oldName
,
newName
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsChildTableSdb
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
.
pMsg
=
pMsg
,
.
fpRsp
=
mnodeAlterNormalTableColumnCb
};
return
sdbUpdateRow
(
&
wmsg
);
return
sdbUpdateRow
(
&
row
);
}
static
int32_t
mnodeSetSchemaFromNormalTable
(
SSchema
*
pSchema
,
SCTableObj
*
pTable
)
{
...
...
@@ -2218,12 +2218,12 @@ void mnodeDropAllChildTablesInVgroups(SVgObj *pVgroup) {
if
(
pTable
==
NULL
)
break
;
if
(
pTable
->
vgId
==
pVgroup
->
vgId
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsChildTableSdb
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
numOfTables
++
;
}
mnodeDecTableRef
(
pTable
);
...
...
@@ -2251,12 +2251,12 @@ void mnodeDropAllChildTables(SDbObj *pDropDb) {
if
(
pTable
==
NULL
)
break
;
if
(
strncmp
(
prefix
,
pTable
->
info
.
tableId
,
prefixLen
)
==
0
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsChildTableSdb
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
numOfTables
++
;
}
mnodeDecTableRef
(
pTable
);
...
...
@@ -2280,12 +2280,12 @@ static void mnodeDropAllChildTablesInStable(SSTableObj *pStable) {
if
(
pTable
==
NULL
)
break
;
if
(
pTable
->
superTable
==
pStable
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsChildTableSdb
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
numOfTables
++
;
}
...
...
@@ -2410,9 +2410,9 @@ static void mnodeProcessCreateChildTableRsp(SRpcMsg *rpcMsg) {
}
if
(
rpcMsg
->
code
==
TSDB_CODE_SUCCESS
||
rpcMsg
->
code
==
TSDB_CODE_TDB_TABLE_ALREADY_EXIST
)
{
SS
WriteMsg
desc
=
{
SS
dbRow
desc
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
p
Row
=
pTable
,
.
p
Obj
=
pTable
,
.
pTable
=
tsChildTableSdb
,
.
pMsg
=
mnodeMsg
,
.
fpRsp
=
mnodeDoCreateChildTableCb
...
...
@@ -2440,8 +2440,8 @@ static void mnodeProcessCreateChildTableRsp(SRpcMsg *rpcMsg) {
mnodeMsg
->
rpcMsg
.
ahandle
,
mnodeMsg
,
pTable
->
info
.
tableId
,
pTable
->
vgId
,
pTable
->
tid
,
pTable
->
uid
,
tstrerror
(
rpcMsg
->
code
),
mnodeMsg
->
rpcMsg
.
handle
,
mnodeMsg
->
incomingTs
,
sec
,
mnodeMsg
->
retry
);
SS
WriteMsg
wmsg
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsChildTableSdb
,
.
pRow
=
pTable
};
sdbDeleteRow
(
&
wmsg
);
SS
dbRow
row
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsChildTableSdb
,
.
pObj
=
pTable
};
sdbDeleteRow
(
&
row
);
if
(
rpcMsg
->
code
==
TSDB_CODE_APP_NOT_READY
)
{
//Avoid retry again in client
...
...
src/mnode/src/mnodeUser.c
浏览文件 @
f323186f
...
...
@@ -42,13 +42,13 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg);
static
int32_t
mnodeProcessDropUserMsg
(
SMnodeMsg
*
pMsg
);
static
int32_t
mnodeProcessAuthMsg
(
SMnodeMsg
*
pMsg
);
static
int32_t
mnodeUserActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
tfree
(
p
WMsg
->
pRow
);
static
int32_t
mnodeUserActionDestroy
(
SS
dbRow
*
pRow
)
{
tfree
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeUserActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
SUserObj
*
pUser
=
p
WMsg
->
pRow
;
static
int32_t
mnodeUserActionInsert
(
SS
dbRow
*
pRow
)
{
SUserObj
*
pUser
=
p
Row
->
pObj
;
SAcctObj
*
pAcct
=
mnodeGetAcct
(
pUser
->
acct
);
if
(
pAcct
!=
NULL
)
{
...
...
@@ -62,8 +62,8 @@ static int32_t mnodeUserActionInsert(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeUserActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
SUserObj
*
pUser
=
p
WMsg
->
pRow
;
static
int32_t
mnodeUserActionDelete
(
SS
dbRow
*
pRow
)
{
SUserObj
*
pUser
=
p
Row
->
pObj
;
SAcctObj
*
pAcct
=
mnodeGetAcct
(
pUser
->
acct
);
if
(
pAcct
!=
NULL
)
{
...
...
@@ -74,8 +74,8 @@ static int32_t mnodeUserActionDelete(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeUserActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
SUserObj
*
pUser
=
p
WMsg
->
pRow
;
static
int32_t
mnodeUserActionUpdate
(
SS
dbRow
*
pRow
)
{
SUserObj
*
pUser
=
p
Row
->
pObj
;
SUserObj
*
pSaved
=
mnodeGetUser
(
pUser
->
user
);
if
(
pUser
!=
pSaved
)
{
memcpy
(
pSaved
,
pUser
,
tsUserUpdateSize
);
...
...
@@ -85,19 +85,19 @@ static int32_t mnodeUserActionUpdate(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeUserActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SUserObj
*
pUser
=
p
WMsg
->
pRow
;
memcpy
(
p
WMsg
->
rowData
,
pUser
,
tsUserUpdateSize
);
p
WMsg
->
rowSize
=
tsUserUpdateSize
;
static
int32_t
mnodeUserActionEncode
(
SS
dbRow
*
pRow
)
{
SUserObj
*
pUser
=
p
Row
->
pObj
;
memcpy
(
p
Row
->
rowData
,
pUser
,
tsUserUpdateSize
);
p
Row
->
rowSize
=
tsUserUpdateSize
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeUserActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeUserActionDecode
(
SS
dbRow
*
pRow
)
{
SUserObj
*
pUser
=
(
SUserObj
*
)
calloc
(
1
,
sizeof
(
SUserObj
));
if
(
pUser
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
memcpy
(
pUser
,
p
WMsg
->
rowData
,
tsUserUpdateSize
);
p
WMsg
->
pRow
=
pUser
;
memcpy
(
pUser
,
p
Row
->
rowData
,
tsUserUpdateSize
);
p
Row
->
pObj
=
pUser
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -205,14 +205,14 @@ void mnodeDecUserRef(SUserObj *pUser) {
}
static
int32_t
mnodeUpdateUser
(
SUserObj
*
pUser
,
void
*
pMsg
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsUserSdb
,
.
p
Row
=
pUser
,
.
p
Obj
=
pUser
,
.
pMsg
=
pMsg
};
int32_t
code
=
sdbUpdateRow
(
&
wmsg
);
int32_t
code
=
sdbUpdateRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"user:%s, failed to alter by %s, reason:%s"
,
pUser
->
user
,
mnodeGetUserFromMsg
(
pMsg
),
tstrerror
(
code
));
}
else
{
...
...
@@ -259,15 +259,15 @@ int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, void *pMsg) {
pUser
->
superAuth
=
1
;
}
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsUserSdb
,
.
p
Row
=
pUser
,
.
p
Obj
=
pUser
,
.
rowSize
=
sizeof
(
SUserObj
),
.
pMsg
=
pMsg
};
code
=
sdbInsertRow
(
&
wmsg
);
code
=
sdbInsertRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"user:%s, failed to create by %s, reason:%s"
,
pUser
->
user
,
mnodeGetUserFromMsg
(
pMsg
),
tstrerror
(
code
));
tfree
(
pUser
);
...
...
@@ -279,14 +279,14 @@ int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass, void *pMsg) {
}
static
int32_t
mnodeDropUser
(
SUserObj
*
pUser
,
void
*
pMsg
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsUserSdb
,
.
p
Row
=
pUser
,
.
p
Obj
=
pUser
,
.
pMsg
=
pMsg
};
int32_t
code
=
sdbDeleteRow
(
&
wmsg
);
int32_t
code
=
sdbDeleteRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"user:%s, failed to drop by %s, reason:%s"
,
pUser
->
user
,
mnodeGetUserFromMsg
(
pMsg
),
tstrerror
(
code
));
}
else
{
...
...
@@ -562,12 +562,12 @@ void mnodeDropAllUsers(SAcctObj *pAcct) {
if
(
pUser
==
NULL
)
break
;
if
(
strncmp
(
pUser
->
acct
,
pAcct
->
user
,
acctNameLen
)
==
0
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsUserSdb
,
.
p
Row
=
pUser
,
.
p
Obj
=
pUser
,
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
numOfUsers
++
;
}
...
...
src/mnode/src/mnodeVgroup.c
浏览文件 @
f323186f
...
...
@@ -72,13 +72,13 @@ static void mnodeDestroyVgroup(SVgObj *pVgroup) {
tfree
(
pVgroup
);
}
static
int32_t
mnodeVgroupActionDestroy
(
SS
WriteMsg
*
pWMsg
)
{
mnodeDestroyVgroup
(
p
WMsg
->
pRow
);
static
int32_t
mnodeVgroupActionDestroy
(
SS
dbRow
*
pRow
)
{
mnodeDestroyVgroup
(
p
Row
->
pObj
);
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeVgroupActionInsert
(
SS
WriteMsg
*
pWMsg
)
{
SVgObj
*
pVgroup
=
p
WMsg
->
pRow
;
static
int32_t
mnodeVgroupActionInsert
(
SS
dbRow
*
pRow
)
{
SVgObj
*
pVgroup
=
p
Row
->
pObj
;
// refer to db
SDbObj
*
pDb
=
mnodeGetDb
(
pVgroup
->
dbName
);
...
...
@@ -115,8 +115,8 @@ static int32_t mnodeVgroupActionInsert(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeVgroupActionDelete
(
SS
WriteMsg
*
pWMsg
)
{
SVgObj
*
pVgroup
=
p
WMsg
->
pRow
;
static
int32_t
mnodeVgroupActionDelete
(
SS
dbRow
*
pRow
)
{
SVgObj
*
pVgroup
=
p
Row
->
pObj
;
if
(
pVgroup
->
pDb
==
NULL
)
{
mError
(
"vgId:%d, db:%s is not exist while insert into hash"
,
pVgroup
->
vgId
,
pVgroup
->
dbName
);
...
...
@@ -137,8 +137,8 @@ static int32_t mnodeVgroupActionDelete(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeVgroupActionUpdate
(
SS
WriteMsg
*
pWMsg
)
{
SVgObj
*
pNew
=
p
WMsg
->
pRow
;
static
int32_t
mnodeVgroupActionUpdate
(
SS
dbRow
*
pRow
)
{
SVgObj
*
pNew
=
p
Row
->
pObj
;
SVgObj
*
pVgroup
=
mnodeGetVgroup
(
pNew
->
vgId
);
if
(
pVgroup
!=
pNew
)
{
...
...
@@ -176,25 +176,25 @@ static int32_t mnodeVgroupActionUpdate(SSWriteMsg *pWMsg) {
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeVgroupActionEncode
(
SS
WriteMsg
*
pWMsg
)
{
SVgObj
*
pVgroup
=
p
WMsg
->
pRow
;
memcpy
(
p
WMsg
->
rowData
,
pVgroup
,
tsVgUpdateSize
);
SVgObj
*
pTmpVgroup
=
p
WMsg
->
rowData
;
static
int32_t
mnodeVgroupActionEncode
(
SS
dbRow
*
pRow
)
{
SVgObj
*
pVgroup
=
p
Row
->
pObj
;
memcpy
(
p
Row
->
rowData
,
pVgroup
,
tsVgUpdateSize
);
SVgObj
*
pTmpVgroup
=
p
Row
->
rowData
;
for
(
int32_t
i
=
0
;
i
<
TSDB_MAX_REPLICA
;
++
i
)
{
pTmpVgroup
->
vnodeGid
[
i
].
pDnode
=
NULL
;
pTmpVgroup
->
vnodeGid
[
i
].
role
=
0
;
}
p
WMsg
->
rowSize
=
tsVgUpdateSize
;
p
Row
->
rowSize
=
tsVgUpdateSize
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
mnodeVgroupActionDecode
(
SS
WriteMsg
*
pWMsg
)
{
static
int32_t
mnodeVgroupActionDecode
(
SS
dbRow
*
pRow
)
{
SVgObj
*
pVgroup
=
(
SVgObj
*
)
calloc
(
1
,
sizeof
(
SVgObj
));
if
(
pVgroup
==
NULL
)
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
memcpy
(
pVgroup
,
p
WMsg
->
rowData
,
tsVgUpdateSize
);
p
WMsg
->
pRow
=
pVgroup
;
memcpy
(
pVgroup
,
p
Row
->
rowData
,
tsVgUpdateSize
);
p
Row
->
pObj
=
pVgroup
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -253,13 +253,13 @@ SVgObj *mnodeGetVgroup(int32_t vgId) {
}
void
mnodeUpdateVgroup
(
SVgObj
*
pVgroup
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsVgroupSdb
,
.
p
Row
=
pVgroup
.
p
Obj
=
pVgroup
};
int32_t
code
=
sdbUpdateRow
(
&
wmsg
);
int32_t
code
=
sdbUpdateRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mError
(
"vgId:%d, failed to update vgroup"
,
pVgroup
->
vgId
);
}
...
...
@@ -519,14 +519,14 @@ static int32_t mnodeCreateVgroupCb(SMnodeMsg *pMsg, int32_t code) {
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
mError
(
"app:%p:%p, vgId:%d, failed to create in sdb, reason:%s"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pVgroup
->
vgId
,
tstrerror
(
code
));
SS
WriteMsg
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pRow
=
pVgroup
,
.
pTable
=
tsVgroupSdb
};
SS
dbRow
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pObj
=
pVgroup
,
.
pTable
=
tsVgroupSdb
};
sdbDeleteRow
(
&
desc
);
return
code
;
}
else
{
mInfo
(
"app:%p:%p, vgId:%d, is created in sdb, db:%s replica:%d"
,
pMsg
->
rpcMsg
.
ahandle
,
pMsg
,
pVgroup
->
vgId
,
pDb
->
name
,
pVgroup
->
numOfVnodes
);
pVgroup
->
status
=
TAOS_VG_STATUS_READY
;
SS
WriteMsg
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pRow
=
pVgroup
,
.
pTable
=
tsVgroupSdb
};
SS
dbRow
desc
=
{.
type
=
SDB_OPER_GLOBAL
,
.
pObj
=
pVgroup
,
.
pTable
=
tsVgroupSdb
};
(
void
)
sdbUpdateRow
(
&
desc
);
dnodeReprocessMWriteMsg
(
pMsg
);
...
...
@@ -535,7 +535,7 @@ static int32_t mnodeCreateVgroupCb(SMnodeMsg *pMsg, int32_t code) {
// mInfo("app:%p:%p, vgId:%d, is created in sdb, db:%s replica:%d", pMsg->rpcMsg.ahandle, pMsg, pVgroup->vgId,
// pDb->name, pVgroup->numOfVnodes);
// pVgroup->status = TAOS_VG_STATUS_READY;
// SS
WriteMsg desc = {.type = SDB_OPER_GLOBAL, .pRow
= pVgroup, .pTable = tsVgroupSdb};
// SS
dbRow desc = {.type = SDB_OPER_GLOBAL, .pObj
= pVgroup, .pTable = tsVgroupSdb};
// (void)sdbUpdateRow(&desc);
// dnodeReprocessMWriteMsg(pMsg);
// return TSDB_CODE_MND_ACTION_IN_PROGRESS;
...
...
@@ -571,16 +571,16 @@ int32_t mnodeCreateVgroup(SMnodeMsg *pMsg) {
pMsg
->
pVgroup
=
pVgroup
;
mnodeIncVgroupRef
(
pVgroup
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsVgroupSdb
,
.
p
Row
=
pVgroup
,
.
p
Obj
=
pVgroup
,
.
rowSize
=
sizeof
(
SVgObj
),
.
pMsg
=
pMsg
,
.
fpReq
=
mnodeCreateVgroupFp
};
code
=
sdbInsertRow
(
&
wmsg
);
code
=
sdbInsertRow
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
pMsg
->
pVgroup
=
NULL
;
mnodeDestroyVgroup
(
pVgroup
);
...
...
@@ -595,12 +595,12 @@ void mnodeDropVgroup(SVgObj *pVgroup, void *ahandle) {
}
else
{
mDebug
(
"vgId:%d, replica:%d is deleting from sdb"
,
pVgroup
->
vgId
,
pVgroup
->
numOfVnodes
);
mnodeSendDropVgroupMsg
(
pVgroup
,
NULL
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsVgroupSdb
,
.
p
Row
=
pVgroup
.
p
Obj
=
pVgroup
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
}
}
...
...
@@ -957,28 +957,28 @@ static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg) {
if
(
mnodeMsg
->
received
!=
mnodeMsg
->
expected
)
return
;
if
(
mnodeMsg
->
received
==
mnodeMsg
->
successed
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsVgroupSdb
,
.
p
Row
=
pVgroup
,
.
p
Obj
=
pVgroup
,
.
rowSize
=
sizeof
(
SVgObj
),
.
pMsg
=
mnodeMsg
,
.
fpRsp
=
mnodeCreateVgroupCb
};
int32_t
code
=
sdbInsertRowToQueue
(
&
wmsg
);
int32_t
code
=
sdbInsertRowToQueue
(
&
row
);
if
(
code
!=
TSDB_CODE_SUCCESS
&&
code
!=
TSDB_CODE_MND_ACTION_IN_PROGRESS
)
{
mnodeMsg
->
pVgroup
=
NULL
;
mnodeDestroyVgroup
(
pVgroup
);
dnodeSendRpcMWriteRsp
(
mnodeMsg
,
code
);
}
}
else
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsVgroupSdb
,
.
p
Row
=
pVgroup
.
p
Obj
=
pVgroup
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
dnodeSendRpcMWriteRsp
(
mnodeMsg
,
mnodeMsg
->
code
);
}
}
...
...
@@ -1031,12 +1031,12 @@ static void mnodeProcessDropVnodeRsp(SRpcMsg *rpcMsg) {
if
(
mnodeMsg
->
received
!=
mnodeMsg
->
expected
)
return
;
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_GLOBAL
,
.
pTable
=
tsVgroupSdb
,
.
p
Row
=
pVgroup
.
p
Obj
=
pVgroup
};
int32_t
code
=
sdbDeleteRow
(
&
wmsg
);
int32_t
code
=
sdbDeleteRow
(
&
row
);
if
(
code
!=
0
)
{
code
=
TSDB_CODE_MND_SDB_ERROR
;
}
...
...
@@ -1084,12 +1084,12 @@ void mnodeDropAllDnodeVgroups(SDnodeObj *pDropDnode) {
if
(
pVgroup
->
vnodeGid
[
0
].
dnodeId
==
pDropDnode
->
dnodeId
)
{
mnodeDropAllChildTablesInVgroups
(
pVgroup
);
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsVgroupSdb
,
.
p
Row
=
pVgroup
,
.
p
Obj
=
pVgroup
,
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
numOfVgroups
++
;
}
mnodeDecVgroupRef
(
pVgroup
);
...
...
@@ -1135,12 +1135,12 @@ void mnodeDropAllDbVgroups(SDbObj *pDropDb) {
if
(
pVgroup
==
NULL
)
break
;
if
(
pVgroup
->
pDb
==
pDropDb
)
{
SS
WriteMsg
wmsg
=
{
SS
dbRow
row
=
{
.
type
=
SDB_OPER_LOCAL
,
.
pTable
=
tsVgroupSdb
,
.
p
Row
=
pVgroup
,
.
p
Obj
=
pVgroup
,
};
sdbDeleteRow
(
&
wmsg
);
sdbDeleteRow
(
&
row
);
numOfVgroups
++
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录