Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e7411183
T
TDengine
项目概览
taosdata
/
TDengine
9 个月 前同步成功
通知
1176
Star
22014
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看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e7411183
编写于
8月 18, 2023
作者:
B
Benguang Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: create SDB_DB entry in prepareAction
上级
f01a26f6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
59 addition
and
15 deletion
+59
-15
source/dnode/mnode/impl/src/mndDb.c
source/dnode/mnode/impl/src/mndDb.c
+12
-1
source/dnode/mnode/impl/src/mndSync.c
source/dnode/mnode/impl/src/mndSync.c
+45
-14
source/dnode/mnode/sdb/src/sdbHash.c
source/dnode/mnode/sdb/src/sdbHash.c
+2
-0
未找到文件。
source/dnode/mnode/impl/src/mndDb.c
浏览文件 @
e7411183
...
@@ -448,6 +448,16 @@ static void mndSetDefaultDbCfg(SDbCfg *pCfg) {
...
@@ -448,6 +448,16 @@ static void mndSetDefaultDbCfg(SDbCfg *pCfg) {
if
(
pCfg
->
tsdbPageSize
<=
0
)
pCfg
->
tsdbPageSize
=
TSDB_DEFAULT_TSDB_PAGESIZE
;
if
(
pCfg
->
tsdbPageSize
<=
0
)
pCfg
->
tsdbPageSize
=
TSDB_DEFAULT_TSDB_PAGESIZE
;
}
}
static
int32_t
mndSetCreateDbPrepareActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SDbObj
*
pDb
)
{
SSdbRaw
*
pDbRaw
=
mndDbActionEncode
(
pDb
);
if
(
pDbRaw
==
NULL
)
return
-
1
;
STransAction
action
=
{.
pRaw
=
pDbRaw
,
.
msgType
=
TDMT_MND_CREATE_DB
};
if
(
mndTransAppendPrepareAction
(
pTrans
,
&
action
)
!=
0
)
return
-
1
;
if
(
sdbSetRawStatus
(
pDbRaw
,
SDB_STATUS_CREATING
)
!=
0
)
return
-
1
;
return
0
;
}
static
int32_t
mndSetNewVgPrepareActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SDbObj
*
pDb
,
SVgObj
*
pVgroups
)
{
static
int32_t
mndSetNewVgPrepareActions
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
SDbObj
*
pDb
,
SVgObj
*
pVgroups
)
{
for
(
int32_t
v
=
0
;
v
<
pDb
->
cfg
.
numOfVgroups
;
++
v
)
{
for
(
int32_t
v
=
0
;
v
<
pDb
->
cfg
.
numOfVgroups
;
++
v
)
{
if
(
mndAddNewVgPrepareAction
(
pMnode
,
pTrans
,
(
pVgroups
+
v
))
!=
0
)
return
-
1
;
if
(
mndAddNewVgPrepareAction
(
pMnode
,
pTrans
,
(
pVgroups
+
v
))
!=
0
)
return
-
1
;
...
@@ -459,7 +469,7 @@ static int32_t mndSetCreateDbRedoLogs(SMnode *pMnode, STrans *pTrans, SDbObj *pD
...
@@ -459,7 +469,7 @@ static int32_t mndSetCreateDbRedoLogs(SMnode *pMnode, STrans *pTrans, SDbObj *pD
SSdbRaw
*
pDbRaw
=
mndDbActionEncode
(
pDb
);
SSdbRaw
*
pDbRaw
=
mndDbActionEncode
(
pDb
);
if
(
pDbRaw
==
NULL
)
return
-
1
;
if
(
pDbRaw
==
NULL
)
return
-
1
;
if
(
mndTransAppendRedolog
(
pTrans
,
pDbRaw
)
!=
0
)
return
-
1
;
if
(
mndTransAppendRedolog
(
pTrans
,
pDbRaw
)
!=
0
)
return
-
1
;
if
(
sdbSetRawStatus
(
pDbRaw
,
SDB_STATUS_
CREATING
)
!=
0
)
return
-
1
;
if
(
sdbSetRawStatus
(
pDbRaw
,
SDB_STATUS_
UPDATE
)
!=
0
)
return
-
1
;
for
(
int32_t
v
=
0
;
v
<
pDb
->
cfg
.
numOfVgroups
;
++
v
)
{
for
(
int32_t
v
=
0
;
v
<
pDb
->
cfg
.
numOfVgroups
;
++
v
)
{
SSdbRaw
*
pVgRaw
=
mndVgroupActionEncode
(
pVgroups
+
v
);
SSdbRaw
*
pVgRaw
=
mndVgroupActionEncode
(
pVgroups
+
v
);
...
@@ -633,6 +643,7 @@ static int32_t mndCreateDb(SMnode *pMnode, SRpcMsg *pReq, SCreateDbReq *pCreate,
...
@@ -633,6 +643,7 @@ static int32_t mndCreateDb(SMnode *pMnode, SRpcMsg *pReq, SCreateDbReq *pCreate,
if
(
mndTransCheckConflict
(
pMnode
,
pTrans
)
!=
0
)
goto
_OVER
;
if
(
mndTransCheckConflict
(
pMnode
,
pTrans
)
!=
0
)
goto
_OVER
;
mndTransSetOper
(
pTrans
,
MND_OPER_CREATE_DB
);
mndTransSetOper
(
pTrans
,
MND_OPER_CREATE_DB
);
if
(
mndSetCreateDbPrepareActions
(
pMnode
,
pTrans
,
&
dbObj
)
!=
0
)
goto
_OVER
;
if
(
mndSetNewVgPrepareActions
(
pMnode
,
pTrans
,
&
dbObj
,
pVgroups
)
!=
0
)
goto
_OVER
;
if
(
mndSetNewVgPrepareActions
(
pMnode
,
pTrans
,
&
dbObj
,
pVgroups
)
!=
0
)
goto
_OVER
;
if
(
mndSetCreateDbRedoLogs
(
pMnode
,
pTrans
,
&
dbObj
,
pVgroups
)
!=
0
)
goto
_OVER
;
if
(
mndSetCreateDbRedoLogs
(
pMnode
,
pTrans
,
&
dbObj
,
pVgroups
)
!=
0
)
goto
_OVER
;
if
(
mndSetCreateDbUndoLogs
(
pMnode
,
pTrans
,
&
dbObj
,
pVgroups
)
!=
0
)
goto
_OVER
;
if
(
mndSetCreateDbUndoLogs
(
pMnode
,
pTrans
,
&
dbObj
,
pVgroups
)
!=
0
)
goto
_OVER
;
...
...
source/dnode/mnode/impl/src/mndSync.c
浏览文件 @
e7411183
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
#define _DEFAULT_SOURCE
#define _DEFAULT_SOURCE
#include "mndSync.h"
#include "mndSync.h"
#include "mndCluster.h"
#include "mndCluster.h"
#include "mndDb.h"
#include "mndTrans.h"
#include "mndTrans.h"
#include "mndVgroup.h"
#include "mndVgroup.h"
...
@@ -74,23 +75,37 @@ static int32_t mndSyncSendMsg(const SEpSet *pEpSet, SRpcMsg *pMsg) {
...
@@ -74,23 +75,37 @@ static int32_t mndSyncSendMsg(const SEpSet *pEpSet, SRpcMsg *pMsg) {
return
code
;
return
code
;
}
}
static
int32_t
mndTransValidatePrepareAction
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
STransAction
*
pAction
)
{
static
int32_t
mndValidateNewVgPrepareAction
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
STransAction
*
pAction
)
{
SSdbRow
*
pRow
=
NULL
;
int
code
=
-
1
;
int32_t
code
=
-
1
;
SSdbRow
*
pRow
=
(
pMnode
->
pSdb
->
decodeFps
[
SDB_VGROUP
])(
pAction
->
pRaw
);
if
(
pRow
==
NULL
)
goto
_OUT
;
SVgObj
*
pVgroup
=
sdbGetRowObj
(
pRow
);
if
(
pVgroup
==
NULL
)
goto
_OUT
;
if
(
pAction
->
msgType
==
TDMT_MND_CREATE_VG
)
{
int32_t
maxVgId
=
sdbGetMaxId
(
pMnode
->
pSdb
,
SDB_VGROUP
);
pRow
=
mndVgroupActionDecode
(
pAction
->
pRaw
);
if
(
maxVgId
>
pVgroup
->
vgId
)
{
if
(
pRow
==
NULL
)
goto
_OUT
;
mError
(
"trans:%d, vgroup id %d already in use. maxVgId:%d"
,
pTrans
->
id
,
pVgroup
->
vgId
,
maxVgId
);
goto
_OUT
;
}
SVgObj
*
pVgroup
=
sdbGetRowObj
(
pRow
);
code
=
0
;
if
(
pVgroup
==
NULL
)
goto
_OUT
;
_OUT:
taosMemoryFreeClear
(
pRow
);
return
code
;
}
int32_t
maxVgId
=
sdbGetMaxId
(
pMnode
->
pSdb
,
SDB_VGROUP
);
static
int32_t
mndValidateCreateDbPrepareAction
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
STransAction
*
pAction
)
{
if
(
maxVgId
>
pVgroup
->
vgId
)
{
int
code
=
-
1
;
mError
(
"trans:%d, failed to satisfy vgroup id %d of prepare action. maxVgId:%d"
,
pTrans
->
id
,
pVgroup
->
vgId
,
SSdbRow
*
pRow
=
(
pMnode
->
pSdb
->
decodeFps
[
SDB_DB
])(
pAction
->
pRaw
);
maxVgId
);
if
(
pRow
==
NULL
)
goto
_OUT
;
goto
_OUT
;
SDbObj
*
pNewDb
=
sdbGetRowObj
(
pRow
);
}
if
(
pNewDb
==
NULL
)
goto
_OUT
;
SDbObj
*
pOldDb
=
sdbAcquire
(
pMnode
->
pSdb
,
SDB_DB
,
pNewDb
->
name
);
if
(
pOldDb
!=
NULL
)
{
mError
(
"trans:%d, db name already in use. name: %s"
,
pTrans
->
id
,
pNewDb
->
name
);
sdbRelease
(
pMnode
->
pSdb
,
pOldDb
);
goto
_OUT
;
}
}
code
=
0
;
code
=
0
;
...
@@ -99,6 +114,22 @@ _OUT:
...
@@ -99,6 +114,22 @@ _OUT:
return
code
;
return
code
;
}
}
static
int32_t
mndTransValidatePrepareAction
(
SMnode
*
pMnode
,
STrans
*
pTrans
,
STransAction
*
pAction
)
{
int32_t
code
=
0
;
switch
(
pAction
->
pRaw
->
type
)
{
case
SDB_VGROUP
:
code
=
mndValidateNewVgPrepareAction
(
pMnode
,
pTrans
,
pAction
);
break
;
case
SDB_DB
:
code
=
mndValidateCreateDbPrepareAction
(
pMnode
,
pTrans
,
pAction
);
break
;
default:
}
return
code
;
}
static
int32_t
mndTransValidatePrepareStage
(
SMnode
*
pMnode
,
STrans
*
pTrans
)
{
static
int32_t
mndTransValidatePrepareStage
(
SMnode
*
pMnode
,
STrans
*
pTrans
)
{
int32_t
code
=
-
1
;
int32_t
code
=
-
1
;
int32_t
action
=
0
;
int32_t
action
=
0
;
...
...
source/dnode/mnode/sdb/src/sdbHash.c
浏览文件 @
e7411183
...
@@ -79,6 +79,8 @@ const char *sdbStatusName(ESdbStatus status) {
...
@@ -79,6 +79,8 @@ const char *sdbStatusName(ESdbStatus status) {
return
"dropped"
;
return
"dropped"
;
case
SDB_STATUS_INIT
:
case
SDB_STATUS_INIT
:
return
"init"
;
return
"init"
;
case
SDB_STATUS_UPDATE
:
return
"update"
;
default:
default:
return
"undefine"
;
return
"undefine"
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录