Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
93775b1f
T
TDengine
项目概览
taosdata
/
TDengine
接近 2 年 前同步成功
通知
1191
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看板
提交
93775b1f
编写于
4月 29, 2020
作者:
H
hzcheng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into feature/2.0tsdb
上级
db14d1e0
19d226be
变更
79
隐藏空白更改
内联
并排
Showing
79 changed file
with
772 addition
and
1188 deletion
+772
-1188
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+1
-1
src/client/src/tscServer.c
src/client/src/tscServer.c
+17
-24
src/client/src/tscSql.c
src/client/src/tscSql.c
+12
-16
src/client/src/tscSub.c
src/client/src/tscSub.c
+4
-4
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+3
-3
src/client/src/tscSystem.c
src/client/src/tscSystem.c
+7
-16
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+10
-7
src/common/src/tglobal.c
src/common/src/tglobal.c
+45
-148
src/dnode/src/dnodeMClient.c
src/dnode/src/dnodeMClient.c
+21
-58
src/dnode/src/dnodeMain.c
src/dnode/src/dnodeMain.c
+11
-12
src/dnode/src/dnodeMgmt.c
src/dnode/src/dnodeMgmt.c
+0
-2
src/dnode/src/dnodeMnode.c
src/dnode/src/dnodeMnode.c
+0
-1
src/dnode/src/dnodeShell.c
src/dnode/src/dnodeShell.c
+0
-1
src/inc/dnode.h
src/inc/dnode.h
+2
-2
src/inc/taosdef.h
src/inc/taosdef.h
+8
-4
src/inc/taosmsg.h
src/inc/taosmsg.h
+9
-15
src/inc/trpc.h
src/inc/trpc.h
+2
-3
src/inc/tsync.h
src/inc/tsync.h
+4
-3
src/kit/shell/src/shellEngine.c
src/kit/shell/src/shellEngine.c
+1
-1
src/mnode/inc/mgmtDef.h
src/mnode/inc/mgmtDef.h
+4
-9
src/mnode/inc/mgmtDnode.h
src/mnode/inc/mgmtDnode.h
+1
-1
src/mnode/inc/mgmtMnode.h
src/mnode/inc/mgmtMnode.h
+1
-1
src/mnode/inc/mgmtVgroup.h
src/mnode/inc/mgmtVgroup.h
+1
-1
src/mnode/src/mgmtDClient.c
src/mnode/src/mgmtDClient.c
+0
-1
src/mnode/src/mgmtDServer.c
src/mnode/src/mgmtDServer.c
+2
-5
src/mnode/src/mgmtDb.c
src/mnode/src/mgmtDb.c
+7
-1
src/mnode/src/mgmtDnode.c
src/mnode/src/mgmtDnode.c
+42
-72
src/mnode/src/mgmtMain.c
src/mnode/src/mgmtMain.c
+1
-1
src/mnode/src/mgmtMnode.c
src/mnode/src/mgmtMnode.c
+7
-27
src/mnode/src/mgmtSdb.c
src/mnode/src/mgmtSdb.c
+8
-8
src/mnode/src/mgmtShell.c
src/mnode/src/mgmtShell.c
+4
-7
src/mnode/src/mgmtTable.c
src/mnode/src/mgmtTable.c
+43
-47
src/mnode/src/mgmtVgroup.c
src/mnode/src/mgmtVgroup.c
+21
-28
src/os/darwin/src/darwinEnv.c
src/os/darwin/src/darwinEnv.c
+4
-4
src/os/linux/src/linuxEnv.c
src/os/linux/src/linuxEnv.c
+4
-4
src/os/linux/src/linuxSysPara.c
src/os/linux/src/linuxSysPara.c
+14
-9
src/os/windows/src/twinenv.c
src/os/windows/src/twinenv.c
+4
-4
src/plugins/http/inc/httpHandle.h
src/plugins/http/inc/httpHandle.h
+1
-1
src/plugins/http/src/httpSystem.c
src/plugins/http/src/httpSystem.c
+2
-2
src/plugins/monitor/src/monitorMain.c
src/plugins/monitor/src/monitorMain.c
+7
-13
src/rpc/inc/rpcCache.h
src/rpc/inc/rpcCache.h
+2
-2
src/rpc/inc/rpcTcp.h
src/rpc/inc/rpcTcp.h
+3
-3
src/rpc/inc/rpcUdp.h
src/rpc/inc/rpcUdp.h
+2
-2
src/rpc/src/rpcCache.c
src/rpc/src/rpcCache.c
+18
-14
src/rpc/src/rpcMain.c
src/rpc/src/rpcMain.c
+29
-32
src/rpc/src/rpcTcp.c
src/rpc/src/rpcTcp.c
+12
-14
src/rpc/src/rpcUdp.c
src/rpc/src/rpcUdp.c
+7
-7
src/rpc/test/rclient.c
src/rpc/test/rclient.c
+7
-10
src/rpc/test/rsclient.c
src/rpc/test/rsclient.c
+8
-10
src/rpc/test/rserver.c
src/rpc/test/rserver.c
+0
-5
src/tsdb/src/tsdbMain.c
src/tsdb/src/tsdbMain.c
+1
-1
src/util/inc/tsocket.h
src/util/inc/tsocket.h
+14
-31
src/util/src/hash.c
src/util/src/hash.c
+1
-1
src/util/src/tconfig.c
src/util/src/tconfig.c
+1
-1
src/util/src/tlog.c
src/util/src/tlog.c
+4
-4
src/util/src/tnote.c
src/util/src/tnote.c
+2
-2
src/util/src/tsocket.c
src/util/src/tsocket.c
+30
-98
src/vnode/src/vnodeMain.c
src/vnode/src/vnodeMain.c
+25
-41
tests/script/sh/exec_up.sh
tests/script/sh/exec_up.sh
+6
-15
tests/script/unique/db/commit.sim
tests/script/unique/db/commit.sim
+6
-6
tests/script/unique/db/delete.sim
tests/script/unique/db/delete.sim
+3
-3
tests/script/unique/db/delete_part.sim
tests/script/unique/db/delete_part.sim
+4
-4
tests/script/unique/db/replica_add12.sim
tests/script/unique/db/replica_add12.sim
+39
-21
tests/script/unique/db/replica_add13.sim
tests/script/unique/db/replica_add13.sim
+27
-30
tests/script/unique/db/replica_add23.sim
tests/script/unique/db/replica_add23.sim
+31
-45
tests/script/unique/db/replica_part.sim
tests/script/unique/db/replica_part.sim
+31
-78
tests/script/unique/db/replica_reduce21.sim
tests/script/unique/db/replica_reduce21.sim
+7
-11
tests/script/unique/db/replica_reduce31.sim
tests/script/unique/db/replica_reduce31.sim
+44
-78
tests/script/unique/db/replica_reduce32.sim
tests/script/unique/db/replica_reduce32.sim
+22
-37
tests/script/unique/db/testSuite.sim
tests/script/unique/db/testSuite.sim
+2
-2
tests/script/unique/mnode/mgmt22.sim
tests/script/unique/mnode/mgmt22.sim
+2
-0
tests/script/unique/mnode/mgmt24.sim
tests/script/unique/mnode/mgmt24.sim
+3
-0
tests/test/c/importOneRow.c
tests/test/c/importOneRow.c
+6
-1
tests/test/c/importPerTabe.c
tests/test/c/importPerTabe.c
+11
-2
tests/test/c/insertPerRow.c
tests/test/c/insertPerRow.c
+9
-2
tests/test/c/insertPerTable.c
tests/test/c/insertPerTable.c
+12
-2
tests/tsim/inc/sim.h
tests/tsim/inc/sim.h
+1
-1
tests/tsim/src/simExe.c
tests/tsim/src/simExe.c
+4
-4
tests/tsim/src/simParse.c
tests/tsim/src/simParse.c
+1
-1
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
93775b1f
...
...
@@ -385,7 +385,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pMsg
+=
sizeof
(
SMgmtHead
);
SCMCfgDnodeMsg
*
pCfg
=
(
SCMCfgDnodeMsg
*
)
pMsg
;
strncpy
(
pCfg
->
i
p
,
pDCL
->
a
[
0
].
z
,
pDCL
->
a
[
0
].
n
);
strncpy
(
pCfg
->
e
p
,
pDCL
->
a
[
0
].
z
,
pDCL
->
a
[
0
].
n
);
strncpy
(
pCfg
->
config
,
pDCL
->
a
[
1
].
z
,
pDCL
->
a
[
1
].
n
);
...
...
src/client/src/tscServer.c
浏览文件 @
93775b1f
...
...
@@ -49,11 +49,11 @@ static void tscSetDnodeIpList(SSqlObj* pSql, STableMeta* pTableMeta) {
SRpcIpSet
*
pIpList
=
&
pSql
->
ipList
;
pIpList
->
numOfIps
=
pTableMeta
->
vgroupInfo
.
numOfIps
;
pIpList
->
port
=
tsDnodeShellPort
;
pIpList
->
inUse
=
0
;
for
(
int32_t
i
=
0
;
i
<
pTableMeta
->
vgroupInfo
.
numOfIps
;
++
i
)
{
pIpList
->
ip
[
i
]
=
pTableMeta
->
vgroupInfo
.
ipAddr
[
i
].
ip
;
strcpy
(
pIpList
->
fqdn
[
i
],
pTableMeta
->
vgroupInfo
.
ipAddr
[
i
].
fqdn
);
pIpList
->
port
[
i
]
=
pTableMeta
->
vgroupInfo
.
ipAddr
[
i
].
port
;
}
}
...
...
@@ -62,7 +62,7 @@ void tscPrintMgmtIp() {
tscError
(
"invalid mgmt IP list:%d"
,
tscMgmtIpSet
.
numOfIps
);
}
else
{
for
(
int
i
=
0
;
i
<
tscMgmtIpSet
.
numOfIps
;
++
i
)
{
tscTrace
(
"mgmt index:%d
ip:%d"
,
i
,
tscMgmtIpSet
.
ip
[
i
]);
tscTrace
(
"mgmt index:%d
%s:%d"
,
i
,
tscMgmtIpSet
.
fqdn
[
i
],
tscMgmtIpSet
.
port
[
i
]);
}
}
}
...
...
@@ -70,9 +70,8 @@ void tscPrintMgmtIp() {
void
tscSetMgmtIpListFromCluster
(
SRpcIpSet
*
pIpList
)
{
tscMgmtIpSet
.
numOfIps
=
pIpList
->
numOfIps
;
tscMgmtIpSet
.
inUse
=
pIpList
->
inUse
;
tscMgmtIpSet
.
port
=
htons
(
pIpList
->
port
);
for
(
int32_t
i
=
0
;
i
<
tscMgmtIpSet
.
numOfIps
;
++
i
)
{
tscMgmtIpSet
.
ip
[
i
]
=
htonl
(
pIpList
->
ip
[
i
]);
tscMgmtIpSet
.
port
[
i
]
=
htons
(
pIpList
->
port
[
i
]);
}
}
...
...
@@ -80,8 +79,7 @@ void tscSetMgmtIpListFromEdge() {
if
(
tscMgmtIpSet
.
numOfIps
!=
1
)
{
tscMgmtIpSet
.
numOfIps
=
1
;
tscMgmtIpSet
.
inUse
=
0
;
tscMgmtIpSet
.
port
=
tsMnodeShellPort
;
tscMgmtIpSet
.
ip
[
0
]
=
inet_addr
(
tsMasterIp
);
taosGetFqdnPortFromEp
(
tsMaster
,
tscMgmtIpSet
.
fqdn
[
0
],
&
tscMgmtIpSet
.
port
[
0
]);
tscTrace
(
"edge mgmt IP list:"
);
tscPrintMgmtIp
();
}
...
...
@@ -213,9 +211,6 @@ int tscSendMsgToServer(SSqlObj *pSql) {
rpcSendRequest
(
pVnodeConn
,
&
pSql
->
ipList
,
&
rpcMsg
);
}
else
{
pSql
->
ipList
=
tscMgmtIpSet
;
pSql
->
ipList
.
port
=
tsMnodeShellPort
;
tscTrace
(
"%p msg:%s is sent to server %d"
,
pSql
,
taosMsg
[
pSql
->
cmd
.
msgType
],
pSql
->
ipList
.
port
);
memcpy
(
pMsg
,
pSql
->
cmd
.
payload
,
pSql
->
cmd
.
payloadLen
);
SRpcMsg
rpcMsg
=
{
.
msgType
=
pSql
->
cmd
.
msgType
,
...
...
@@ -224,6 +219,7 @@ int tscSendMsgToServer(SSqlObj *pSql) {
.
handle
=
pSql
,
.
code
=
0
};
tscTrace
(
"%p msg:%s is sent to server"
,
pSql
,
taosMsg
[
pSql
->
cmd
.
msgType
]);
rpcSendRequest
(
pObj
->
pMgmtConn
,
&
pSql
->
ipList
,
&
rpcMsg
);
}
...
...
@@ -294,11 +290,6 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg) {
}
}
}
if
(
pRes
->
code
==
TSDB_CODE_SUCCESS
)
{
tscTrace
(
"%p reset retry counter to be 0 due to success rsp, old:%d"
,
pSql
,
pSql
->
retry
);
pSql
->
retry
=
0
;
}
pRes
->
rspLen
=
0
;
...
...
@@ -308,6 +299,11 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg) {
tscTrace
(
"%p query is cancelled, code:%d"
,
pSql
,
tstrerror
(
pRes
->
code
));
}
if
(
pRes
->
code
==
TSDB_CODE_SUCCESS
)
{
tscTrace
(
"%p reset retry counter to be 0 due to success rsp, old:%d"
,
pSql
,
pSql
->
retry
);
pSql
->
retry
=
0
;
}
if
(
pRes
->
code
!=
TSDB_CODE_QUERY_CANCELLED
)
{
assert
(
rpcMsg
->
msgType
==
pCmd
->
msgType
+
1
);
pRes
->
code
=
rpcMsg
->
code
;
...
...
@@ -569,7 +565,7 @@ int tscBuildSubmitMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pSql
->
cmd
.
msgType
=
TSDB_MSG_TYPE_SUBMIT
;
tscSetDnodeIpList
(
pSql
,
pTableMeta
);
tscTrace
(
"%p build submit msg, vgId:%d numOfVgroup:%d
"
,
pSql
,
vgId
,
htonl
(
pMsgDesc
->
numOfVnodes
)
);
tscTrace
(
"%p build submit msg, vgId:%d numOfVgroup:%d
numberOfIP:%d"
,
pSql
,
vgId
,
htonl
(
pMsgDesc
->
numOfVnodes
),
pSql
->
ipList
.
numOfIps
);
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -664,11 +660,11 @@ int tscBuildQueryMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
SCMVgroupInfo
*
pVgroupInfo
=
&
pTableMetaInfo
->
vgroupList
->
vgroups
[
index
];
pSql
->
ipList
.
numOfIps
=
pVgroupInfo
->
numOfIps
;
// todo fix me
pSql
->
ipList
.
port
=
tsDnodeShellPort
;
pSql
->
ipList
.
inUse
=
0
;
for
(
int32_t
i
=
0
;
i
<
pVgroupInfo
->
numOfIps
;
++
i
)
{
pSql
->
ipList
.
ip
[
i
]
=
pVgroupInfo
->
ipAddr
[
i
].
ip
;
strcpy
(
pSql
->
ipList
.
fqdn
[
i
],
pVgroupInfo
->
ipAddr
[
i
].
fqdn
);
pSql
->
ipList
.
port
[
i
]
=
pVgroupInfo
->
ipAddr
[
i
].
port
;
}
tscTrace
(
"%p query on super table, numOfVgroup:%d, vgroupIndex:%d"
,
pSql
,
pTableMetaInfo
->
vgroupList
->
numOfVgroups
,
index
);
...
...
@@ -935,7 +931,8 @@ int32_t tscBuildCreateDnodeMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
}
SCMCreateDnodeMsg
*
pCreate
=
(
SCMCreateDnodeMsg
*
)
pCmd
->
payload
;
strncpy
(
pCreate
->
ip
,
pInfo
->
pDCLInfo
->
a
[
0
].
z
,
pInfo
->
pDCLInfo
->
a
[
0
].
n
);
strncpy
(
pCreate
->
ep
,
pInfo
->
pDCLInfo
->
a
[
0
].
z
,
pInfo
->
pDCLInfo
->
a
[
0
].
n
);
pCmd
->
msgType
=
TSDB_MSG_TYPE_CM_CREATE_DNODE
;
return
TSDB_CODE_SUCCESS
;
...
...
@@ -1078,7 +1075,7 @@ int32_t tscBuildDropDnodeMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
SCMDropDnodeMsg
*
pDrop
=
(
SCMDropDnodeMsg
*
)
pCmd
->
payload
;
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
pCmd
,
pCmd
->
clauseIndex
,
0
);
strcpy
(
pDrop
->
i
p
,
pTableMetaInfo
->
name
);
strcpy
(
pDrop
->
e
p
,
pTableMetaInfo
->
name
);
pCmd
->
msgType
=
TSDB_MSG_TYPE_CM_DROP_DNODE
;
return
TSDB_CODE_SUCCESS
;
...
...
@@ -1857,10 +1854,7 @@ int tscProcessTableMetaRsp(SSqlObj *pSql) {
}
for
(
int
i
=
0
;
i
<
pMetaMsg
->
vgroup
.
numOfIps
;
++
i
)
{
pMetaMsg
->
vgroup
.
ipAddr
[
i
].
ip
=
htonl
(
pMetaMsg
->
vgroup
.
ipAddr
[
i
].
ip
);
pMetaMsg
->
vgroup
.
ipAddr
[
i
].
port
=
htons
(
pMetaMsg
->
vgroup
.
ipAddr
[
i
].
port
);
assert
(
pMetaMsg
->
vgroup
.
ipAddr
[
i
].
ip
!=
0
);
}
SSchema
*
pSchema
=
pMetaMsg
->
schema
;
...
...
@@ -2144,7 +2138,6 @@ _error_clean:
assert
(
pVgroups
->
numOfIps
>=
1
);
for
(
int32_t
j
=
0
;
j
<
pVgroups
->
numOfIps
;
++
j
)
{
pVgroups
->
ipAddr
[
j
].
ip
=
htonl
(
pVgroups
->
ipAddr
[
j
].
ip
);
pVgroups
->
ipAddr
[
j
].
port
=
htons
(
pVgroups
->
ipAddr
[
j
].
port
);
}
}
...
...
src/client/src/tscSql.c
浏览文件 @
93775b1f
...
...
@@ -72,24 +72,24 @@ STscObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
return
NULL
;
}
tscMgmtIpSet
.
numOfIps
=
0
;
if
(
ip
&&
ip
[
0
])
{
tscMgmtIpSet
.
inUse
=
0
;
tscMgmtIpSet
.
port
=
tsMnodeShellPort
;
tscMgmtIpSet
.
numOfIps
=
1
;
tscMgmtIpSet
.
ip
[
0
]
=
inet_addr
(
ip
);
if
(
tsMasterIp
[
0
]
&&
strcmp
(
ip
,
tsMasterIp
)
!=
0
)
{
tscMgmtIpSet
.
numOfIps
=
2
;
tscMgmtIpSet
.
ip
[
1
]
=
inet_addr
(
tsMasterIp
);
strcpy
(
tscMgmtIpSet
.
fqdn
[
0
],
ip
);
tscMgmtIpSet
.
port
[
0
]
=
port
?
port
:
tsMnodeShellPort
;
}
else
{
if
(
tsMaster
[
0
]
!=
0
)
{
taosGetFqdnPortFromEp
(
tsMaster
,
tscMgmtIpSet
.
fqdn
[
tscMgmtIpSet
.
numOfIps
],
&
tscMgmtIpSet
.
port
[
tscMgmtIpSet
.
numOfIps
]);
tscMgmtIpSet
.
numOfIps
++
;
}
if
(
tsSecond
Ip
[
0
]
&&
strcmp
(
tsSecondIp
,
tsMasterIp
)
!=
0
)
{
t
scMgmtIpSet
.
numOfIps
=
3
;
tscMgmtIpSet
.
ip
[
2
]
=
inet_addr
(
tsSecondIp
)
;
if
(
tsSecond
[
0
]
!=
0
)
{
t
aosGetFqdnPortFromEp
(
tsSecond
,
tscMgmtIpSet
.
fqdn
[
tscMgmtIpSet
.
numOfIps
],
&
tscMgmtIpSet
.
port
[
tscMgmtIpSet
.
numOfIps
])
;
tscMgmtIpSet
.
numOfIps
++
;
}
}
tscMgmtIpSet
.
port
=
port
?
port
:
tsMnodeShellPort
;
STscObj
*
pObj
=
(
STscObj
*
)
calloc
(
1
,
sizeof
(
STscObj
));
if
(
NULL
==
pObj
)
{
...
...
@@ -167,10 +167,6 @@ static void syncConnCallback(void *param, TAOS_RES *tres, int code) {
}
TAOS
*
taos_connect
(
const
char
*
ip
,
const
char
*
user
,
const
char
*
pass
,
const
char
*
db
,
uint16_t
port
)
{
if
(
ip
==
NULL
||
(
ip
!=
NULL
&&
(
strcmp
(
"127.0.0.1"
,
ip
)
==
0
||
strcasecmp
(
"localhost"
,
ip
)
==
0
)))
{
ip
=
tsMasterIp
;
}
tscTrace
(
"try to create a connection to %s"
,
ip
);
STscObj
*
pObj
=
taosConnectImpl
(
ip
,
user
,
pass
,
db
,
port
,
NULL
,
NULL
,
NULL
);
...
...
@@ -939,7 +935,7 @@ char *taos_errstr(TAOS *taos) {
void
taos_config
(
int
debug
,
char
*
log_path
)
{
uDebugFlag
=
debug
;
strcpy
(
l
ogDir
,
log_path
);
strcpy
(
tsL
ogDir
,
log_path
);
}
char
*
taos_get_server_info
(
TAOS
*
taos
)
{
...
...
src/client/src/tscSub.c
浏览文件 @
93775b1f
...
...
@@ -220,7 +220,7 @@ int tscUpdateSubscription(STscObj* pObj, SSub* pSub) {
static
int
tscLoadSubscriptionProgress
(
SSub
*
pSub
)
{
char
buf
[
TSDB_MAX_SQL_LEN
];
sprintf
(
buf
,
"%s/subscribe/%s"
,
d
ataDir
,
pSub
->
topic
);
sprintf
(
buf
,
"%s/subscribe/%s"
,
tsD
ataDir
,
pSub
->
topic
);
FILE
*
fp
=
fopen
(
buf
,
"r"
);
if
(
fp
==
NULL
)
{
...
...
@@ -281,12 +281,12 @@ void tscSaveSubscriptionProgress(void* sub) {
SSub
*
pSub
=
(
SSub
*
)
sub
;
char
path
[
256
];
sprintf
(
path
,
"%s/subscribe"
,
d
ataDir
);
sprintf
(
path
,
"%s/subscribe"
,
tsD
ataDir
);
if
(
access
(
path
,
0
)
!=
0
)
{
mkdir
(
path
,
0777
);
}
sprintf
(
path
,
"%s/subscribe/%s"
,
d
ataDir
,
pSub
->
topic
);
sprintf
(
path
,
"%s/subscribe/%s"
,
tsD
ataDir
,
pSub
->
topic
);
FILE
*
fp
=
fopen
(
path
,
"w+"
);
if
(
fp
==
NULL
)
{
tscError
(
"failed to create progress file for subscription: %s"
,
pSub
->
topic
);
...
...
@@ -416,7 +416,7 @@ void taos_unsubscribe(TAOS_SUB *tsub, int keepProgress) {
tscSaveSubscriptionProgress
(
pSub
);
}
else
{
char
path
[
256
];
sprintf
(
path
,
"%s/subscribe/%s"
,
d
ataDir
,
pSub
->
topic
);
sprintf
(
path
,
"%s/subscribe/%s"
,
tsD
ataDir
,
pSub
->
topic
);
remove
(
path
);
}
...
...
src/client/src/tscSubquery.c
浏览文件 @
93775b1f
...
...
@@ -1245,7 +1245,7 @@ static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* p
// data in from current vnode is stored in cache and disk
uint32_t
numOfRowsFromSubquery
=
trsupport
->
pExtMemBuffer
[
idx
]
->
numOfTotalElems
+
trsupport
->
localBuffer
->
numOfElems
;
tscTrace
(
"%p sub:%p all data retrieved from ip:%u,vgId:%d, numOfRows:%d, orderOfSub:%d"
,
pPObj
,
pSql
,
pTableMetaInfo
->
vgroupList
->
vgroups
[
0
].
ipAddr
[
0
].
ip
,
pTableMetaInfo
->
vgroupList
->
vgroups
[
0
].
vgId
,
pTableMetaInfo
->
vgroupList
->
vgroups
[
0
].
ipAddr
[
0
].
fqdn
,
pTableMetaInfo
->
vgroupList
->
vgroups
[
0
].
vgId
,
numOfRowsFromSubquery
,
idx
);
tColModelCompact
(
pDesc
->
pColumnModel
,
trsupport
->
localBuffer
,
pDesc
->
pColumnModel
->
capacity
);
...
...
@@ -1473,12 +1473,12 @@ void tscRetrieveDataRes(void *param, TAOS_RES *tres, int code) {
if
(
pState
->
code
!=
TSDB_CODE_SUCCESS
)
{
// at least one peer subquery failed, abort current query
tscTrace
(
"%p sub:%p query failed,ip:%u,vgId:%d,orderOfSub:%d,global code:%d"
,
pParentSql
,
pSql
,
pVgroup
->
ipAddr
[
0
].
ip
,
pVgroup
->
vgId
,
trsupport
->
subqueryIndex
,
pState
->
code
);
pVgroup
->
ipAddr
[
0
].
fqdn
,
pVgroup
->
vgId
,
trsupport
->
subqueryIndex
,
pState
->
code
);
tscHandleSubqueryError
(
param
,
tres
,
pState
->
code
);
}
else
{
// success, proceed to retrieve data from dnode
tscTrace
(
"%p sub:%p query complete, ip:%u, vgId:%d, orderOfSub:%d, retrieve data"
,
trsupport
->
pParentSqlObj
,
pSql
,
pVgroup
->
ipAddr
[
0
].
ip
,
pVgroup
->
vgId
,
trsupport
->
subqueryIndex
);
pVgroup
->
ipAddr
[
0
].
fqdn
,
pVgroup
->
vgId
,
trsupport
->
subqueryIndex
);
if
(
pSql
->
res
.
qhandle
==
0
)
{
// qhandle is NULL, code is TSDB_CODE_SUCCESS means no results generated from this vnode
tscRetrieveFromDnodeCallBack
(
param
,
pSql
,
0
);
...
...
src/client/src/tscSystem.c
浏览文件 @
93775b1f
...
...
@@ -55,7 +55,6 @@ int32_t tscInitRpc(const char *user, const char *secret, void** pMgmtConn) {
if
(
pVnodeConn
==
NULL
)
{
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
rpcInit
.
localIp
=
tsLocalIp
;
rpcInit
.
localPort
=
0
;
rpcInit
.
label
=
"TSC-vnode"
;
rpcInit
.
numOfThreads
=
tscNumOfThreads
;
...
...
@@ -76,7 +75,6 @@ int32_t tscInitRpc(const char *user, const char *secret, void** pMgmtConn) {
if
(
*
pMgmtConn
==
NULL
)
{
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
rpcInit
.
localIp
=
tsLocalIp
;
rpcInit
.
localPort
=
0
;
rpcInit
.
label
=
"TSC-mgmt"
;
rpcInit
.
numOfThreads
=
1
;
...
...
@@ -109,23 +107,17 @@ void taos_init_imp() {
deltaToUtcInitOnce
();
if
(
tscEmbedded
==
0
)
{
/*
* set localIp = 0
* means unset tsLocalIp in client
* except read from config file
*/
strcpy
(
tsLocalIp
,
"0.0.0.0"
);
// Read global configuration.
taosInitGlobalCfg
();
taosReadGlobalLogCfg
();
// For log directory
if
(
stat
(
logDir
,
&
dirstat
)
<
0
)
mkdir
(
l
ogDir
,
0755
);
if
(
stat
(
tsLogDir
,
&
dirstat
)
<
0
)
mkdir
(
tsL
ogDir
,
0755
);
sprintf
(
temp
,
"%s/taoslog"
,
l
ogDir
);
sprintf
(
temp
,
"%s/taoslog"
,
tsL
ogDir
);
if
(
taosInitLog
(
temp
,
tsNumOfLogLines
,
10
)
<
0
)
{
printf
(
"failed to open log file in directory:%s
\n
"
,
l
ogDir
);
printf
(
"failed to open log file in directory:%s
\n
"
,
tsL
ogDir
);
}
taosReadGlobalCfg
();
...
...
@@ -133,7 +125,7 @@ void taos_init_imp() {
taosPrintGlobalCfg
();
tscTrace
(
"starting to initialize TAOS client ..."
);
tscTrace
(
"Local
IP address is:%s"
,
tsLocalI
p
);
tscTrace
(
"Local
End Point is:%s"
,
tsLocalE
p
);
}
taosSetCoreDump
();
...
...
@@ -143,13 +135,12 @@ void taos_init_imp() {
}
tscMgmtIpSet
.
inUse
=
0
;
tscMgmtIpSet
.
port
=
tsMnodeShellPort
;
tscMgmtIpSet
.
numOfIps
=
1
;
t
scMgmtIpSet
.
ip
[
0
]
=
inet_addr
(
tsMasterIp
);
t
aosGetFqdnPortFromEp
(
tsMaster
,
tscMgmtIpSet
.
fqdn
[
0
],
&
tscMgmtIpSet
.
port
[
0
]
);
if
(
tsSecond
Ip
[
0
]
&&
strcmp
(
tsSecondIp
,
tsMasterIp
)
!=
0
)
{
if
(
tsSecond
[
0
]
&&
strcmp
(
tsSecond
,
tsMaster
)
!=
0
)
{
tscMgmtIpSet
.
numOfIps
=
2
;
t
scMgmtIpSet
.
ip
[
1
]
=
inet_addr
(
tsSecondIp
);
t
aosGetFqdnPortFromEp
(
tsSecond
,
tscMgmtIpSet
.
fqdn
[
1
],
&
tscMgmtIpSet
.
port
[
1
]
);
}
tscInitMsgsFp
();
...
...
src/common/inc/tglobal.h
浏览文件 @
93775b1f
...
...
@@ -24,10 +24,10 @@ extern char configDir[];
extern
char
tsVnodeDir
[];
extern
char
tsDnodeDir
[];
extern
char
tsMnodeDir
[];
extern
char
d
ataDir
[];
extern
char
l
ogDir
[];
extern
char
s
criptDir
[];
extern
char
o
sName
[];
extern
char
tsD
ataDir
[];
extern
char
tsL
ogDir
[];
extern
char
tsS
criptDir
[];
extern
char
tsO
sName
[];
// system info
extern
int64_t
tsPageSize
;
...
...
@@ -51,8 +51,10 @@ extern int32_t tsVersion;
extern
int32_t
tscEmbedded
;
extern
int64_t
tsMsPerDay
[
2
];
extern
char
tsMasterIp
[];
extern
char
tsSecondIp
[];
extern
char
tsMaster
[];
extern
char
tsSecond
[];
extern
char
tsLocalEp
[];
extern
uint16_t
tsServerPort
;
extern
uint16_t
tsMnodeDnodePort
;
extern
uint16_t
tsMnodeShellPort
;
extern
uint16_t
tsDnodeShellPort
;
...
...
@@ -178,7 +180,8 @@ void taosInitGlobalCfg();
bool
taosCheckGlobalCfg
();
void
taosSetAllDebugFlag
();
bool
taosCfgDynamicOptions
(
char
*
msg
);
int
taosGetFqdnPortFromEp
(
char
*
ep
,
char
*
fqdn
,
uint16_t
*
port
);
#ifdef __cplusplus
}
#endif
...
...
src/common/src/tglobal.c
浏览文件 @
93775b1f
...
...
@@ -30,9 +30,9 @@ char configDir[TSDB_FILENAME_LEN] = "/etc/taos";
char
tsVnodeDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsDnodeDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsMnodeDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
d
ataDir
[
TSDB_FILENAME_LEN
]
=
"/var/lib/taos"
;
char
s
criptDir
[
TSDB_FILENAME_LEN
]
=
"/etc/taos"
;
char
o
sName
[
10
]
=
"Linux"
;
char
tsD
ataDir
[
TSDB_FILENAME_LEN
]
=
"/var/lib/taos"
;
char
tsS
criptDir
[
TSDB_FILENAME_LEN
]
=
"/etc/taos"
;
char
tsO
sName
[
10
]
=
"Linux"
;
// system info, not configurable
int64_t
tsPageSize
;
...
...
@@ -60,8 +60,10 @@ int32_t tscEmbedded = 0;
*/
int64_t
tsMsPerDay
[]
=
{
86400000L
,
86400000000L
};
char
tsMasterIp
[
TSDB_IPv4ADDR_LEN
]
=
{
0
};
char
tsSecondIp
[
TSDB_IPv4ADDR_LEN
]
=
{
0
};
char
tsMaster
[
TSDB_FQDN_LEN
]
=
{
0
};
char
tsSecond
[
TSDB_FQDN_LEN
]
=
{
0
};
char
tsLocalEp
[
TSDB_FQDN_LEN
]
=
{
0
};
// Local End Point, hostname:port
uint16_t
tsServerPort
=
6030
;
uint16_t
tsMnodeShellPort
=
6030
;
// udp[6030-6034] tcp[6030]
uint16_t
tsDnodeShellPort
=
6035
;
// udp[6035-6039] tcp[6035]
uint16_t
tsMnodeDnodePort
=
6040
;
// udp/tcp
...
...
@@ -70,8 +72,6 @@ uint16_t tsSyncPort = 6050;
int32_t
tsStatusInterval
=
1
;
// second
int32_t
tsShellActivityTimer
=
3
;
// second
int32_t
tsVnodePeerHBTimer
=
1
;
// second
int32_t
tsMgmtPeerHBTimer
=
1
;
// second
int32_t
tsMeterMetaKeepTimer
=
7200
;
// second
int32_t
tsMetricMetaKeepTimer
=
600
;
// second
int32_t
tsRpcTimer
=
300
;
...
...
@@ -79,8 +79,6 @@ int32_t tsRpcMaxTime = 600; // seconds;
float
tsNumOfThreadsPerCore
=
1
.
0
;
float
tsRatioOfQueryThreads
=
0
.
5
;
char
tsPublicIp
[
TSDB_IPv4ADDR_LEN
]
=
{
0
};
char
tsPrivateIp
[
TSDB_IPv4ADDR_LEN
]
=
{
0
};
int16_t
tsNumOfVnodesPerCore
=
8
;
int16_t
tsNumOfTotalVnodes
=
TSDB_INVALID_VNODE_NUM
;
...
...
@@ -112,7 +110,6 @@ int32_t tsNumOfMPeers = 3;
int32_t
tsMaxShellConns
=
2000
;
int32_t
tsMaxTables
=
100000
;
char
tsLocalIp
[
TSDB_IPv4ADDR_LEN
]
=
{
0
};
char
tsDefaultDB
[
TSDB_DB_NAME_LEN
]
=
{
0
};
char
tsDefaultUser
[
64
]
=
"root"
;
char
tsDefaultPass
[
64
]
=
"taosdata"
;
...
...
@@ -183,7 +180,6 @@ float tsStreamComputDelayRatio = 0.1;
int32_t
tsProjectExecInterval
=
10000
;
// every 10sec, the projection will be executed once
int64_t
tsMaxRetentWindow
=
24
*
3600L
;
// maximum time window tolerance
char
tsHttpIp
[
TSDB_IPv4ADDR_LEN
]
=
"0.0.0.0"
;
uint16_t
tsHttpPort
=
6020
;
// only tcp, range tcp[6020]
// uint16_t tsNginxPort = 6060; //only tcp, range tcp[6060]
int32_t
tsHttpCacheSessions
=
100
;
...
...
@@ -194,7 +190,6 @@ int32_t tsHttpEnableRecordSql = 0;
int32_t
tsTelegrafUseFieldNum
=
0
;
int32_t
tsTscEnableRecordSql
=
0
;
int32_t
tsAnyIp
=
1
;
uint32_t
tsPublicIpInt
=
0
;
char
tsMonitorDbName
[
TSDB_DB_NAME_LEN
]
=
"log"
;
...
...
@@ -274,69 +269,29 @@ static void doInitGlobalConfig() {
SGlobalCfg
cfg
=
{
0
};
// ip address
cfg
.
option
=
"master
Ip
"
;
cfg
.
ptr
=
tsMaster
Ip
;
cfg
.
option
=
"master"
;
cfg
.
ptr
=
tsMaster
;
cfg
.
valType
=
TAOS_CFG_VTYPE_IPSTR
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_
IPv4ADDR
_LEN
;
cfg
.
ptrLength
=
TSDB_
FQDN
_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"second
Ip
"
;
cfg
.
ptr
=
tsSecond
Ip
;
cfg
.
option
=
"second"
;
cfg
.
ptr
=
tsSecond
;
cfg
.
valType
=
TAOS_CFG_VTYPE_IPSTR
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_IPv4ADDR_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"publicIp"
;
cfg
.
ptr
=
tsPublicIp
;
cfg
.
valType
=
TAOS_CFG_VTYPE_IPSTR
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_IPv4ADDR_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"privateIp"
;
cfg
.
ptr
=
tsPrivateIp
;
cfg
.
valType
=
TAOS_CFG_VTYPE_IPSTR
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_IPv4ADDR_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"localIp"
;
cfg
.
ptr
=
tsLocalIp
;
cfg
.
valType
=
TAOS_CFG_VTYPE_IPSTR
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_IPv4ADDR_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"httpIp"
;
cfg
.
ptr
=
tsHttpIp
;
cfg
.
valType
=
TAOS_CFG_VTYPE_IPSTR
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_IPv4ADDR_LEN
;
cfg
.
ptrLength
=
TSDB_FQDN_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
// port
cfg
.
option
=
"
mnodeShell
Port"
;
cfg
.
ptr
=
&
ts
MnodeShell
Port
;
cfg
.
option
=
"
server
Port"
;
cfg
.
ptr
=
&
ts
Server
Port
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT16
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
1
;
...
...
@@ -345,56 +300,6 @@ static void doInitGlobalConfig() {
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"dnodeShellPort"
;
cfg
.
ptr
=
&
tsDnodeShellPort
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT16
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
1
;
cfg
.
maxValue
=
65535
;
cfg
.
ptrLength
=
0
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"mnodeDnodePort"
;
cfg
.
ptr
=
&
tsMnodeDnodePort
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT16
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
;
cfg
.
minValue
=
1
;
cfg
.
maxValue
=
65535
;
cfg
.
ptrLength
=
0
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"dnodeMnodePort"
;
cfg
.
ptr
=
&
tsDnodeMnodePort
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT16
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
;
cfg
.
minValue
=
1
;
cfg
.
maxValue
=
65535
;
cfg
.
ptrLength
=
0
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
// cfg.option = "syncPort";
// cfg.ptr = &syncPort;
// cfg.valType = TAOS_CFG_VTYPE_INT16;
// cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW;
// cfg.minValue = 1;
// cfg.maxValue = 65535;
// cfg.ptrLength = 0;
// cfg.unitType = TAOS_CFG_UTYPE_NONE;
// taosInitConfigOption(cfg);
cfg
.
option
=
"httpPort"
;
cfg
.
ptr
=
&
tsHttpPort
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT16
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
;
cfg
.
minValue
=
1
;
cfg
.
maxValue
=
65535
;
cfg
.
ptrLength
=
0
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
// directory
cfg
.
option
=
"configDir"
;
cfg
.
ptr
=
configDir
;
...
...
@@ -407,7 +312,7 @@ static void doInitGlobalConfig() {
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"logDir"
;
cfg
.
ptr
=
l
ogDir
;
cfg
.
ptr
=
tsL
ogDir
;
cfg
.
valType
=
TAOS_CFG_VTYPE_DIRECTORY
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
|
TSDB_CFG_CTYPE_B_LOG
;
cfg
.
minValue
=
0
;
...
...
@@ -417,7 +322,7 @@ static void doInitGlobalConfig() {
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"scriptDir"
;
cfg
.
ptr
=
s
criptDir
;
cfg
.
ptr
=
tsS
criptDir
;
cfg
.
valType
=
TAOS_CFG_VTYPE_DIRECTORY
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
0
;
...
...
@@ -427,7 +332,7 @@ static void doInitGlobalConfig() {
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"dataDir"
;
cfg
.
ptr
=
d
ataDir
;
cfg
.
ptr
=
tsD
ataDir
;
cfg
.
valType
=
TAOS_CFG_VTYPE_DIRECTORY
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
;
cfg
.
minValue
=
0
;
...
...
@@ -1227,16 +1132,6 @@ static void doInitGlobalConfig() {
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"anyIp"
;
cfg
.
ptr
=
&
tsAnyIp
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
1
;
cfg
.
ptrLength
=
0
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
// version info
cfg
.
option
=
"gitinfo"
;
cfg
.
ptr
=
gitinfo
;
...
...
@@ -1284,25 +1179,15 @@ void taosInitGlobalCfg() {
}
bool
taosCheckGlobalCfg
()
{
if
(
tsPrivateIp
[
0
]
==
0
)
{
taosGetPrivateIp
(
tsPrivateIp
);
}
if
(
tsPublicIp
[
0
]
==
0
)
{
strcpy
(
tsPublicIp
,
tsPrivateIp
);
}
tsPublicIpInt
=
inet_addr
(
tsPublicIp
);
if
(
tsLocalIp
[
0
]
==
0
)
{
strcpy
(
tsLocalIp
,
tsPrivateIp
);
}
taosGetFqdn
(
tsLocalEp
);
sprintf
(
tsLocalEp
+
strlen
(
tsLocalEp
),
":%d"
,
tsServerPort
);
if
(
tsMaster
Ip
[
0
]
==
0
)
{
strcpy
(
tsMaster
Ip
,
tsPrivateI
p
);
if
(
tsMaster
[
0
]
==
0
)
{
strcpy
(
tsMaster
,
tsLocalE
p
);
}
if
(
tsSecond
Ip
[
0
]
==
0
)
{
strcpy
(
tsSecond
Ip
,
tsMasterI
p
);
if
(
tsSecond
[
0
]
==
0
)
{
strcpy
(
tsSecond
,
tsLocalE
p
);
}
taosGetSystemInfo
();
...
...
@@ -1324,15 +1209,6 @@ bool taosCheckGlobalCfg() {
tsNumOfTotalVnodes
=
tsNumOfTotalVnodes
<
TSDB_MIN_VNODES
?
TSDB_MIN_VNODES
:
tsNumOfTotalVnodes
;
}
if
(
strlen
(
tsPrivateIp
)
==
0
)
{
uError
(
"privateIp is null"
);
return
false
;
}
if
(
tscEmbedded
)
{
strcpy
(
tsLocalIp
,
tsPrivateIp
);
}
// todo refactor
tsVersion
=
0
;
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
...
...
@@ -1345,5 +1221,26 @@ bool taosCheckGlobalCfg() {
tsVersion
=
10
*
tsVersion
;
tsMnodeShellPort
=
tsServerPort
+
TSDB_PORT_MNODESHELL
;
// udp[6030-6034] tcp[6030]
tsDnodeShellPort
=
tsServerPort
+
TSDB_PORT_DNODESHELL
;
// udp[6035-6039] tcp[6035]
tsMnodeDnodePort
=
tsServerPort
+
TSDB_PORT_MNODEDNODE
;
// udp/tcp
tsDnodeMnodePort
=
tsServerPort
+
TSDB_PORT_DNODEMNODE
;
// udp/tcp
tsSyncPort
=
tsServerPort
+
TSDB_PORT_SYNC
;
return
true
;
}
int
taosGetFqdnPortFromEp
(
char
*
ep
,
char
*
fqdn
,
uint16_t
*
port
)
{
*
port
=
0
;
strcpy
(
fqdn
,
ep
);
char
*
temp
=
strchr
(
fqdn
,
':'
);
if
(
temp
)
{
*
temp
=
0
;
*
port
=
atoi
(
temp
+
1
);
}
if
(
*
port
==
0
)
*
port
=
tsServerPort
;
return
0
;
}
src/dnode/src/dnodeMClient.c
浏览文件 @
93775b1f
...
...
@@ -59,16 +59,13 @@ void dnodeUpdateIpSet(void *ahandle, SRpcIpSet *pIpSet) {
tsMnodeIpSet
=
*
pIpSet
;
}
void
dnodeGetMnode
IpSet
(
void
*
ipSetRaw
,
bool
usePublicIp
)
{
void
dnodeGetMnode
DnodeIpSet
(
void
*
ipSetRaw
)
{
SRpcIpSet
*
ipSet
=
ipSetRaw
;
ipSet
->
numOfIps
=
tsMnodeInfos
.
nodeNum
;
ipSet
->
inUse
=
tsMnodeInfos
.
inUse
;
for
(
int32_t
i
=
0
;
i
<
tsMnodeInfos
.
nodeNum
;
++
i
)
{
if
(
usePublicIp
)
{
ipSet
->
ip
[
i
]
=
tsMnodeInfos
.
nodeInfos
[
i
].
nodeIp
;
}
else
{
ipSet
->
ip
[
i
]
=
tsMnodeInfos
.
nodeInfos
[
i
].
nodeIp
;
}
taosGetFqdnPortFromEp
(
tsMnodeInfos
.
nodeInfos
[
i
].
nodeEp
,
ipSet
->
fqdn
[
i
],
&
ipSet
->
port
[
i
]);
ipSet
->
port
[
i
]
+=
TSDB_PORT_MNODEDNODE
;
}
}
...
...
@@ -85,26 +82,23 @@ int32_t dnodeInitMClient() {
if
(
!
dnodeReadMnodeInfos
())
{
memset
(
&
tsMnodeIpSet
,
0
,
sizeof
(
SRpcIpSet
));
memset
(
&
tsMnodeInfos
,
0
,
sizeof
(
SDMMnodeInfos
));
tsMnodeIpSet
.
port
=
tsMnodeDnodePort
;
tsMnodeIpSet
.
numOfIps
=
1
;
tsMnodeIpSet
.
ip
[
0
]
=
inet_addr
(
tsMasterIp
);
if
(
strcmp
(
tsSecondIp
,
tsMasterIp
)
!=
0
)
{
taosGetFqdnPortFromEp
(
tsMaster
,
tsMnodeIpSet
.
fqdn
[
0
],
&
tsMnodeIpSet
.
port
[
0
]);
tsMnodeIpSet
.
port
[
0
]
+=
TSDB_PORT_MNODEDNODE
;
if
(
strcmp
(
tsSecond
,
tsMaster
)
!=
0
)
{
tsMnodeIpSet
.
numOfIps
=
2
;
t
sMnodeIpSet
.
ip
[
1
]
=
inet_addr
(
tsSecondIp
);
t
aosGetFqdnPortFromEp
(
tsSecond
,
tsMnodeIpSet
.
fqdn
[
1
],
&
tsMnodeIpSet
.
port
[
1
]
);
}
}
else
{
tsMnodeIpSet
.
inUse
=
tsMnodeInfos
.
inUse
;
tsMnodeIpSet
.
numOfIps
=
tsMnodeInfos
.
nodeNum
;
tsMnodeIpSet
.
port
=
tsMnodeInfos
.
nodeInfos
[
0
].
nodePort
;
for
(
int32_t
i
=
0
;
i
<
tsMnodeInfos
.
nodeNum
;
i
++
)
{
t
sMnodeIpSet
.
ip
[
i
]
=
tsMnodeInfos
.
nodeInfos
[
i
].
nodeIp
;
t
aosGetFqdnPortFromEp
(
tsMnodeInfos
.
nodeInfos
[
i
].
nodeEp
,
tsMnodeIpSet
.
fqdn
[
i
],
&
tsMnodeIpSet
.
port
[
i
])
;
}
}
SRpcInit
rpcInit
;
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
rpcInit
.
localIp
=
tsAnyIp
?
"0.0.0.0"
:
tsPrivateIp
;
rpcInit
.
localPort
=
0
;
rpcInit
.
label
=
"DND-MC"
;
rpcInit
.
numOfThreads
=
1
;
rpcInit
.
cfp
=
dnodeProcessRspFromMnode
;
...
...
@@ -182,9 +176,6 @@ static void dnodeProcessStatusRsp(SRpcMsg *pMsg) {
for
(
int32_t
i
=
0
;
i
<
pMnodes
->
nodeNum
;
++
i
)
{
SDMMnodeInfo
*
pMnodeInfo
=
&
pMnodes
->
nodeInfos
[
i
];
pMnodeInfo
->
nodeId
=
htonl
(
pMnodeInfo
->
nodeId
);
pMnodeInfo
->
nodeIp
=
htonl
(
pMnodeInfo
->
nodeIp
);
pMnodeInfo
->
nodePort
=
htons
(
pMnodeInfo
->
nodePort
);
pMnodeInfo
->
syncPort
=
htons
(
pMnodeInfo
->
syncPort
);
}
SDMVgroupAccess
*
pVgAcccess
=
pStatusRsp
->
vgAccess
;
...
...
@@ -207,15 +198,14 @@ static void dnodeUpdateMnodeInfos(SDMMnodeInfos *pMnodes) {
tsMnodeIpSet
.
inUse
=
tsMnodeInfos
.
inUse
;
tsMnodeIpSet
.
numOfIps
=
tsMnodeInfos
.
nodeNum
;
tsMnodeIpSet
.
port
=
tsMnodeInfos
.
nodeInfos
[
0
].
nodePort
;
for
(
int32_t
i
=
0
;
i
<
tsMnodeInfos
.
nodeNum
;
i
++
)
{
tsMnodeIpSet
.
ip
[
i
]
=
tsMnodeInfos
.
nodeInfos
[
i
].
nodeIp
;
taosGetFqdnPortFromEp
(
tsMnodeInfos
.
nodeInfos
[
i
].
nodeEp
,
tsMnodeIpSet
.
fqdn
[
i
],
&
tsMnodeIpSet
.
port
[
i
]);
tsMnodeIpSet
.
port
[
i
]
+=
TSDB_PORT_MNODEDNODE
;
}
dPrint
(
"mnodes is changed, nodeNum:%d inUse:%d"
,
tsMnodeInfos
.
nodeNum
,
tsMnodeInfos
.
inUse
);
for
(
int32_t
i
=
0
;
i
<
tsMnodeInfos
.
nodeNum
;
i
++
)
{
dPrint
(
"mnode:%d, ip:%s:%u name:%s"
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeId
,
taosIpStr
(
tsMnodeInfos
.
nodeInfos
[
i
].
nodeIp
),
tsMnodeInfos
.
nodeInfos
[
i
].
nodePort
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeName
);
dPrint
(
"mnode:%d, %s"
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeId
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeEp
);
}
dnodeSaveMnodeInfos
();
...
...
@@ -291,42 +281,19 @@ static bool dnodeReadMnodeInfos() {
}
tsMnodeInfos
.
nodeInfos
[
i
].
nodeId
=
nodeId
->
valueint
;
cJSON
*
nodeIp
=
cJSON_GetObjectItem
(
nodeInfo
,
"nodeIp"
);
if
(
!
nodeIp
||
nodeIp
->
type
!=
cJSON_String
||
nodeIp
->
valuestring
==
NULL
)
{
dError
(
"failed to read mnode mgmtIpList.json, nodeIp not found"
);
goto
PARSE_OVER
;
}
tsMnodeInfos
.
nodeInfos
[
i
].
nodeIp
=
inet_addr
(
nodeIp
->
valuestring
);
cJSON
*
nodePort
=
cJSON_GetObjectItem
(
nodeInfo
,
"nodePort"
);
if
(
!
nodePort
||
nodePort
->
type
!=
cJSON_Number
)
{
dError
(
"failed to read mnode mgmtIpList.json, nodePort not found"
);
goto
PARSE_OVER
;
}
tsMnodeInfos
.
nodeInfos
[
i
].
nodePort
=
(
uint16_t
)
nodePort
->
valueint
;
cJSON
*
syncPort
=
cJSON_GetObjectItem
(
nodeInfo
,
"syncPort"
);
if
(
!
syncPort
||
syncPort
->
type
!=
cJSON_Number
)
{
dError
(
"failed to read mnode mgmtIpList.json, syncPort not found"
);
goto
PARSE_OVER
;
}
tsMnodeInfos
.
nodeInfos
[
i
].
syncPort
=
(
uint16_t
)
syncPort
->
valueint
;
cJSON
*
nodeName
=
cJSON_GetObjectItem
(
nodeInfo
,
"nodeName"
);
if
(
!
nodeName
||
nodeName
->
type
!=
cJSON_String
||
nodeName
->
valuestring
==
NULL
)
{
cJSON
*
nodeEp
=
cJSON_GetObjectItem
(
nodeInfo
,
"nodeEp"
);
if
(
!
nodeEp
||
nodeEp
->
type
!=
cJSON_String
||
nodeEp
->
valuestring
==
NULL
)
{
dError
(
"failed to read mnode mgmtIpList.json, nodeName not found"
);
goto
PARSE_OVER
;
}
strncpy
(
tsMnodeInfos
.
nodeInfos
[
i
].
node
Name
,
nodeName
->
valuestring
,
TSDB_NODE_NAME
_LEN
);
}
strncpy
(
tsMnodeInfos
.
nodeInfos
[
i
].
node
Ep
,
nodeEp
->
valuestring
,
TSDB_FQDN
_LEN
);
}
ret
=
true
;
dPrint
(
"read mnode iplist successed, numOfIps:%d inUse:%d"
,
tsMnodeInfos
.
nodeNum
,
tsMnodeInfos
.
inUse
);
for
(
int32_t
i
=
0
;
i
<
tsMnodeInfos
.
nodeNum
;
i
++
)
{
dPrint
(
"mnode:%d, ip:%s:%u name:%s"
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeId
,
taosIpStr
(
tsMnodeInfos
.
nodeInfos
[
i
].
nodeIp
),
tsMnodeInfos
.
nodeInfos
[
i
].
nodePort
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeName
);
dPrint
(
"mnode:%d, %s"
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeId
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeEp
);
}
PARSE_OVER:
...
...
@@ -352,10 +319,7 @@ static void dnodeSaveMnodeInfos() {
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeInfos
\"
: [{
\n
"
);
for
(
int32_t
i
=
0
;
i
<
tsMnodeInfos
.
nodeNum
;
i
++
)
{
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeId
\"
: %d,
\n
"
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeId
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeIp
\"
:
\"
%s
\"
,
\n
"
,
taosIpStr
(
tsMnodeInfos
.
nodeInfos
[
i
].
nodeIp
));
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodePort
\"
: %u,
\n
"
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodePort
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
syncPort
\"
: %u,
\n
"
,
tsMnodeInfos
.
nodeInfos
[
i
].
syncPort
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeName
\"
:
\"
%s
\"\n
"
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeName
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeEp
\"
:
\"
%s
\"\n
"
,
tsMnodeInfos
.
nodeInfos
[
i
].
nodeEp
);
if
(
i
<
tsMnodeInfos
.
nodeNum
-
1
)
{
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
" },{
\n
"
);
}
else
{
...
...
@@ -371,8 +335,8 @@ static void dnodeSaveMnodeInfos() {
dPrint
(
"save mnode iplist successed"
);
}
uint32_t
dnodeGetMnodeMasteI
p
()
{
return
tsMnodeI
pSet
.
ip
[
tsMnodeIpSet
.
inUse
]
;
char
*
dnodeGetMnodeMasterE
p
()
{
return
tsMnodeI
nfos
.
nodeInfos
[
tsMnodeIpSet
.
inUse
].
nodeEp
;
}
void
*
dnodeGetMnodeInfos
()
{
...
...
@@ -402,8 +366,7 @@ static void dnodeSendStatusMsg(void *handle, void *tmrId) {
//strcpy(pStatus->dnodeName, tsDnodeName);
pStatus
->
version
=
htonl
(
tsVersion
);
pStatus
->
dnodeId
=
htonl
(
tsDnodeCfg
.
dnodeId
);
pStatus
->
privateIp
=
htonl
(
inet_addr
(
tsPrivateIp
));
pStatus
->
publicIp
=
htonl
(
inet_addr
(
tsPublicIp
));
strcpy
(
pStatus
->
dnodeEp
,
tsLocalEp
);
pStatus
->
lastReboot
=
htonl
(
tsRebootTime
);
pStatus
->
numOfTotalVnodes
=
htons
((
uint16_t
)
tsNumOfTotalVnodes
);
pStatus
->
numOfCores
=
htons
((
uint16_t
)
tsNumOfCores
);
...
...
@@ -500,4 +463,4 @@ void dnodeUpdateDnodeCfg(SDMDnodeCfg *pCfg) {
int32_t
dnodeGetDnodeId
()
{
return
tsDnodeCfg
.
dnodeId
;
}
\ No newline at end of file
}
src/dnode/src/dnodeMain.c
浏览文件 @
93775b1f
...
...
@@ -144,12 +144,12 @@ static int32_t dnodeInitSystem() {
signal
(
SIGPIPE
,
SIG_IGN
);
struct
stat
dirstat
;
if
(
stat
(
l
ogDir
,
&
dirstat
)
<
0
)
{
mkdir
(
l
ogDir
,
0755
);
if
(
stat
(
tsL
ogDir
,
&
dirstat
)
<
0
)
{
mkdir
(
tsL
ogDir
,
0755
);
}
char
temp
[
TSDB_FILENAME_LEN
];
sprintf
(
temp
,
"%s/taosdlog"
,
l
ogDir
);
sprintf
(
temp
,
"%s/taosdlog"
,
tsL
ogDir
);
if
(
taosInitLog
(
temp
,
tsNumOfLogLines
,
1
)
<
0
)
{
printf
(
"failed to init log file
\n
"
);
}
...
...
@@ -161,8 +161,7 @@ static int32_t dnodeInitSystem() {
}
taosPrintGlobalCfg
();
dPrint
(
"Server IP address is:%s"
,
tsPrivateIp
);
dPrint
(
"starting to initialize TDengine ..."
);
dPrint
(
"start to initialize TDengine on %s"
,
tsLocalEp
);
if
(
dnodeInitStorage
()
!=
0
)
return
-
1
;
if
(
dnodeInitRead
()
!=
0
)
return
-
1
;
...
...
@@ -218,13 +217,13 @@ static void dnodeCheckDataDirOpenned(char *dir) {
static
int32_t
dnodeInitStorage
()
{
struct
stat
dirstat
;
if
(
stat
(
d
ataDir
,
&
dirstat
)
<
0
)
{
mkdir
(
d
ataDir
,
0755
);
if
(
stat
(
tsD
ataDir
,
&
dirstat
)
<
0
)
{
mkdir
(
tsD
ataDir
,
0755
);
}
sprintf
(
tsMnodeDir
,
"%s/mnode"
,
d
ataDir
);
sprintf
(
tsVnodeDir
,
"%s/vnode"
,
d
ataDir
);
sprintf
(
tsDnodeDir
,
"%s/dnode"
,
d
ataDir
);
sprintf
(
tsMnodeDir
,
"%s/mnode"
,
tsD
ataDir
);
sprintf
(
tsVnodeDir
,
"%s/vnode"
,
tsD
ataDir
);
sprintf
(
tsDnodeDir
,
"%s/dnode"
,
tsD
ataDir
);
mkdir
(
tsVnodeDir
,
0755
);
mkdir
(
tsDnodeDir
,
0755
);
...
...
@@ -237,5 +236,5 @@ static int32_t dnodeInitStorage() {
static
void
dnodeCleanupStorage
()
{}
bool
dnodeIsFirstDeploy
()
{
return
strcmp
(
tsMasterIp
,
tsPrivateIp
)
==
0
;
}
\ No newline at end of file
return
strcmp
(
tsMaster
,
tsLocalEp
)
==
0
;
}
src/dnode/src/dnodeMgmt.c
浏览文件 @
93775b1f
...
...
@@ -139,11 +139,9 @@ static int32_t dnodeProcessCreateVnodeMsg(SRpcMsg *rpcMsg) {
pCreate
->
cfg
.
minRowsPerFileBlock
=
htonl
(
pCreate
->
cfg
.
minRowsPerFileBlock
);
pCreate
->
cfg
.
maxRowsPerFileBlock
=
htonl
(
pCreate
->
cfg
.
maxRowsPerFileBlock
);
pCreate
->
cfg
.
commitTime
=
htonl
(
pCreate
->
cfg
.
commitTime
);
pCreate
->
cfg
.
arbitratorIp
=
htonl
(
pCreate
->
cfg
.
arbitratorIp
);
for
(
int32_t
j
=
0
;
j
<
pCreate
->
cfg
.
replications
;
++
j
)
{
pCreate
->
nodes
[
j
].
nodeId
=
htonl
(
pCreate
->
nodes
[
j
].
nodeId
);
pCreate
->
nodes
[
j
].
nodeIp
=
htonl
(
pCreate
->
nodes
[
j
].
nodeIp
);
}
void
*
pVnode
=
vnodeAccquireVnode
(
pCreate
->
cfg
.
vgId
);
...
...
src/dnode/src/dnodeMnode.c
浏览文件 @
93775b1f
...
...
@@ -38,7 +38,6 @@ int32_t dnodeInitMnode() {
SRpcInit
rpcInit
;
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
rpcInit
.
localIp
=
tsAnyIp
?
"0.0.0.0"
:
tsPrivateIp
;
rpcInit
.
localPort
=
tsDnodeMnodePort
;
rpcInit
.
label
=
"DND-MS"
;
rpcInit
.
numOfThreads
=
1
;
...
...
src/dnode/src/dnodeShell.c
浏览文件 @
93775b1f
...
...
@@ -47,7 +47,6 @@ int32_t dnodeInitShell() {
SRpcInit
rpcInit
;
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
rpcInit
.
localIp
=
tsAnyIp
?
"0.0.0.0"
:
tsPrivateIp
;
rpcInit
.
localPort
=
tsDnodeShellPort
;
rpcInit
.
label
=
"DND-shell"
;
rpcInit
.
numOfThreads
=
numOfThreads
;
...
...
src/inc/dnode.h
浏览文件 @
93775b1f
...
...
@@ -42,8 +42,8 @@ void dnodeFreeRqueue(void *rqueue);
void
dnodeSendRpcWriteRsp
(
void
*
pVnode
,
void
*
param
,
int32_t
code
);
bool
dnodeIsFirstDeploy
();
uint32_t
dnodeGetMnodeMasteI
p
();
void
dnodeGetMnode
IpSet
(
void
*
ipSet
,
bool
usePublicIp
);
char
*
dnodeGetMnodeMasterE
p
();
void
dnodeGetMnode
DnodeIpSet
(
void
*
ipSet
);
void
*
dnodeGetMnodeInfos
();
int32_t
dnodeGetDnodeId
();
...
...
src/inc/taosdef.h
浏览文件 @
93775b1f
...
...
@@ -191,11 +191,10 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size);
#define TSDB_CITY_LEN 20
#define TSDB_STATE_LEN 20
#define TSDB_COUNTRY_LEN 20
#define TSDB_VNODES_SUPPORT 6
#define TSDB_MGMT_SUPPORT 4
#define TSDB_LOCALE_LEN 64
#define TSDB_TIMEZONE_LEN 64
#define TSDB_FQDN_LEN 64
#define TSDB_IPv4ADDR_LEN 16
#define TSDB_FILENAME_LEN 128
#define TSDB_METER_VNODE_BITS 20
...
...
@@ -222,8 +221,7 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size);
#define TSDB_DNODE_ROLE_MGMT 1
#define TSDB_DNODE_ROLE_VNODE 2
#define TSDB_MAX_MPEERS 5
#define TSDB_MAX_MGMT_IPS (TSDB_MAX_MPEERS+1)
#define TSDB_MAX_REPLICA 5
#define TSDB_TBNAME_COLUMN_INDEX (-1)
#define TSDB_MULTI_METERMETA_MAX_NUM 100000 // maximum batch size allowed to load metermeta
...
...
@@ -324,6 +322,12 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size);
#define TSDB_MAX_NORMAL_TABLES 1000
#define TSDB_MAX_CHILD_TABLES 100000
#define TSDB_PORT_MNODESHELL 0
#define TSDB_PORT_DNODESHELL 5
#define TSDB_PORT_DNODEMNODE 10
#define TSDB_PORT_MNODEDNODE 15
#define TSDB_PORT_SYNC 20
typedef
enum
{
TSDB_PRECISION_MILLI
,
TSDB_PRECISION_MICRO
,
...
...
src/inc/taosmsg.h
浏览文件 @
93775b1f
...
...
@@ -187,7 +187,7 @@ extern char *taosMsg[];
#pragma pack(push, 1)
typedef
struct
{
uint32_t
ip
;
char
fqdn
[
TSDB_FQDN_LEN
]
;
uint16_t
port
;
}
SIpAddr
;
...
...
@@ -265,6 +265,7 @@ typedef struct {
char
tableId
[
TSDB_TABLE_ID_LEN
+
1
];
char
db
[
TSDB_DB_NAME_LEN
+
1
];
int8_t
igExists
;
int8_t
getMeta
;
int16_t
numOfTags
;
int16_t
numOfColumns
;
int16_t
sqlLen
;
// the length of SQL, it starts after schema , sql is a null-terminated string
...
...
@@ -549,24 +550,19 @@ typedef struct {
typedef
struct
{
int32_t
nodeId
;
uint32_t
nodeIp
;
uint16_t
nodePort
;
uint16_t
syncPort
;
char
nodeName
[
TSDB_NODE_NAME_LEN
+
1
];
char
nodeEp
[
TSDB_FQDN_LEN
];
}
SDMMnodeInfo
;
typedef
struct
{
int8_t
inUse
;
int8_t
nodeNum
;
SDMMnodeInfo
nodeInfos
[
TSDB_MAX_
MPEERS
];
SDMMnodeInfo
nodeInfos
[
TSDB_MAX_
REPLICA
];
}
SDMMnodeInfos
;
typedef
struct
{
uint32_t
version
;
int32_t
dnodeId
;
char
dnodeName
[
TSDB_NODE_NAME_LEN
+
1
];
uint32_t
privateIp
;
uint32_t
publicIp
;
char
dnodeEp
[
TSDB_FQDN_LEN
];
uint32_t
moduleStatus
;
uint32_t
lastReboot
;
// time stamp for last reboot
uint16_t
numOfTotalVnodes
;
// from config file
...
...
@@ -603,19 +599,17 @@ typedef struct {
int8_t
replications
;
int8_t
wals
;
int8_t
quorum
;
uint32_t
arbitratorIp
;
int8_t
reserved
[
16
];
}
SMDVnodeCfg
;
typedef
struct
{
int32_t
nodeId
;
uint32_t
nodeIp
;
char
nodeName
[
TSDB_NODE_NAME_LEN
+
1
];
char
nodeEp
[
TSDB_FQDN_LEN
];
}
SMDVnodeDesc
;
typedef
struct
{
SMDVnodeCfg
cfg
;
SMDVnodeDesc
nodes
[
TSDB_MAX_
MPEERS
];
SMDVnodeDesc
nodes
[
TSDB_MAX_
REPLICA
];
}
SMDCreateVnodeMsg
;
typedef
struct
{
...
...
@@ -738,7 +732,7 @@ typedef struct SCMShowRsp {
}
SCMShowRsp
;
typedef
struct
{
char
ip
[
32
];
char
ep
[
TSDB_FQDN_LEN
];
// end point, hostname:port
}
SCMCreateDnodeMsg
,
SCMDropDnodeMsg
;
typedef
struct
{
...
...
@@ -753,7 +747,7 @@ typedef struct {
}
SDMConfigVnodeMsg
;
typedef
struct
{
char
ip
[
32
];
char
ep
[
TSDB_FQDN_LEN
];
// end point, hostname:port
char
config
[
64
];
}
SMDCfgDnodeMsg
,
SCMCfgDnodeMsg
;
...
...
src/inc/trpc.h
浏览文件 @
93775b1f
...
...
@@ -31,8 +31,8 @@ extern int tsRpcHeadSize;
typedef
struct
{
int8_t
inUse
;
int8_t
numOfIps
;
uint16_t
port
;
uint32_t
ip
[
TSDB_MAX_MPEERS
];
uint16_t
port
[
TSDB_MAX_REPLICA
]
;
char
fqdn
[
TSDB_MAX_REPLICA
][
TSDB_FQDN_LEN
];
}
SRpcIpSet
;
typedef
struct
{
...
...
@@ -51,7 +51,6 @@ typedef struct {
}
SRpcMsg
;
typedef
struct
{
char
*
localIp
;
// local IP used
uint16_t
localPort
;
// local port
char
*
label
;
// for debug purpose
int
numOfThreads
;
// number of threads to handle connections
...
...
src/inc/tsync.h
浏览文件 @
93775b1f
...
...
@@ -38,14 +38,15 @@ typedef enum _TAOS_SYNC_STATUS {
typedef
struct
{
uint32_t
nodeId
;
// node ID assigned by TDengine
uint
32_t
nodeIp
;
// node IP address
char
n
ame
[
TSDB_FILENAME_LEN
];
// external node name
uint
16_t
nodePort
;
// node sync Port
char
n
odeFqdn
[
TSDB_FQDN_LEN
];
// node FQDN
}
SNodeInfo
;
typedef
struct
{
uint32_t
arbitratorIp
;
// arbitrator IP address
int8_t
quorum
;
// number of confirms required, >=1
int8_t
replica
;
// number of replications, >=1
uint16_t
arbitratorPort
;
// arbitrator port
char
arbitratorFqdn
[
TSDB_FQDN_LEN
];
// arbitrator IP address
SNodeInfo
nodeInfo
[
TAOS_SYNC_MAX_REPLICA
];
}
SSyncCfg
;
...
...
src/kit/shell/src/shellEngine.c
浏览文件 @
93775b1f
...
...
@@ -40,7 +40,7 @@ History history;
*/
TAOS
*
shellInit
(
struct
arguments
*
args
)
{
printf
(
"
\n
"
);
printf
(
CLIENT_VERSION
,
o
sName
,
taos_get_client_info
());
printf
(
CLIENT_VERSION
,
tsO
sName
,
taos_get_client_info
());
fflush
(
stdout
);
// set options before initializing
...
...
src/mnode/inc/mgmtDef.h
浏览文件 @
93775b1f
...
...
@@ -31,13 +31,9 @@ struct SMnodeObj;
typedef
struct
SDnodeObj
{
int32_t
dnodeId
;
uint32_t
privateIp
;
uint32_t
publicIp
;
uint16_t
mnodeShellPort
;
uint16_t
mnodeDnodePort
;
uint16_t
dnodeShellPort
;
uint16_t
dnodeMnodePort
;
uint16_t
syncPort
;
uint16_t
dnodePort
;
char
dnodeFqdn
[
TSDB_FQDN_LEN
];
char
dnodeEp
[
TSDB_FQDN_LEN
];
int64_t
createdTime
;
uint32_t
lastAccess
;
int32_t
openVnodes
;
...
...
@@ -47,7 +43,6 @@ typedef struct SDnodeObj {
int8_t
alternativeRole
;
// from dnode status msg, 0-any, 1-mgmt, 2-dnode
int8_t
status
;
// set in balance function
int8_t
isMgmt
;
char
dnodeName
[
TSDB_NODE_NAME_LEN
+
1
];
int8_t
reserved
[
15
];
int8_t
updateEnd
[
1
];
int32_t
refCount
;
...
...
@@ -123,7 +118,7 @@ typedef struct SVgObj {
uint32_t
vgId
;
char
dbName
[
TSDB_DB_NAME_LEN
+
1
];
int64_t
createdTime
;
SVnodeGid
vnodeGid
[
TSDB_
VNODES_SUPPORT
];
SVnodeGid
vnodeGid
[
TSDB_
MAX_REPLICA
];
int32_t
numOfVnodes
;
int32_t
lbDnodeId
;
int32_t
lbTime
;
...
...
src/mnode/inc/mgmtDnode.h
浏览文件 @
93775b1f
...
...
@@ -38,7 +38,7 @@ void * mgmtGetNextDnode(void *pNode, SDnodeObj **pDnode);
void
mgmtIncDnodeRef
(
SDnodeObj
*
pDnode
);
void
mgmtDecDnodeRef
(
SDnodeObj
*
pDnode
);
void
*
mgmtGetDnode
(
int32_t
dnodeId
);
void
*
mgmtGetDnodeByIp
(
uint32_t
i
p
);
void
*
mgmtGetDnodeByIp
(
char
*
e
p
);
void
mgmtUpdateDnode
(
SDnodeObj
*
pDnode
);
int32_t
mgmtDropDnode
(
SDnodeObj
*
pDnode
);
...
...
src/mnode/inc/mgmtMnode.h
浏览文件 @
93775b1f
...
...
@@ -40,7 +40,7 @@ void * mgmtGetNextMnode(void *pNode, struct SMnodeObj **pMnode);
void
mgmtReleaseMnode
(
struct
SMnodeObj
*
pMnode
);
char
*
mgmtGetMnodeRoleStr
();
void
mgmtGetMnodeIpSet
(
SRpcIpSet
*
ipSet
,
bool
usePublicIp
);
void
mgmtGetMnodeIpSet
(
SRpcIpSet
*
ipSet
);
void
mgmtGetMnodeInfos
(
void
*
mnodes
);
#ifdef __cplusplus
...
...
src/mnode/inc/mgmtVgroup.h
浏览文件 @
93775b1f
...
...
@@ -50,7 +50,7 @@ void mgmtSendDropVnodeMsg(int32_t vgId, SRpcIpSet *ipSet, void *ahandle);
void
mgmtSendCreateVgroupMsg
(
SVgObj
*
pVgroup
,
void
*
ahandle
);
SRpcIpSet
mgmtGetIpSetFromVgroup
(
SVgObj
*
pVgroup
);
SRpcIpSet
mgmtGetIpSetFromIp
(
uint32_t
i
p
);
SRpcIpSet
mgmtGetIpSetFromIp
(
char
*
e
p
);
#ifdef __cplusplus
}
...
...
src/mnode/src/mgmtDClient.c
浏览文件 @
93775b1f
...
...
@@ -38,7 +38,6 @@ static void *tsMgmtDClientRpc = NULL;
int32_t
mgmtInitDClient
()
{
SRpcInit
rpcInit
=
{
0
};
rpcInit
.
localIp
=
tsAnyIp
?
"0.0.0.0"
:
tsPrivateIp
;
rpcInit
.
localPort
=
0
;
rpcInit
.
label
=
"MND-DC"
;
rpcInit
.
numOfThreads
=
1
;
...
...
src/mnode/src/mgmtDServer.c
浏览文件 @
93775b1f
...
...
@@ -43,7 +43,6 @@ static void *tsMgmtDServerQhandle = NULL;
int32_t
mgmtInitDServer
()
{
SRpcInit
rpcInit
=
{
0
};
rpcInit
.
localIp
=
tsAnyIp
?
"0.0.0.0"
:
tsPrivateIp
;;
rpcInit
.
localPort
=
tsMnodeDnodePort
;
rpcInit
.
label
=
"MND-DS"
;
rpcInit
.
numOfThreads
=
1
;
...
...
@@ -105,14 +104,12 @@ static void mgmtProcessMsgFromDnode(SRpcMsg *rpcMsg) {
if
(
!
sdbIsMaster
())
{
SRpcConnInfo
connInfo
;
rpcGetConnInfo
(
rpcMsg
->
handle
,
&
connInfo
);
bool
usePublicIp
=
false
;
SRpcIpSet
ipSet
=
{
0
};
ipSet
.
port
=
tsMnodeDnodePort
;
dnodeGetMnodeIpSet
(
&
ipSet
,
usePublicIp
);
dnodeGetMnodeDnodeIpSet
(
&
ipSet
);
mTrace
(
"conn from dnode ip:%s user:%s redirect msg, inUse:%d"
,
taosIpStr
(
connInfo
.
clientIp
),
connInfo
.
user
,
ipSet
.
inUse
);
for
(
int32_t
i
=
0
;
i
<
ipSet
.
numOfIps
;
++
i
)
{
mTrace
(
"index:%d
ip:%s"
,
i
,
taosIpStr
(
ipSet
.
ip
[
i
])
);
mTrace
(
"index:%d
%s:%d"
,
i
,
ipSet
.
fqdn
[
i
],
ipSet
.
port
[
i
]
);
}
rpcSendRedirectRsp
(
rpcMsg
->
handle
,
&
ipSet
);
return
;
...
...
src/mnode/src/mgmtDb.c
浏览文件 @
93775b1f
...
...
@@ -770,11 +770,17 @@ static SDbCfg mgmtGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) {
mTrace
(
"db:%s, replications:%d change to %d"
,
pDb
->
name
,
pDb
->
cfg
.
replications
,
replications
);
newCfg
.
replications
=
replications
;
}
if
(
replications
>
mgmtGetDnodesNum
())
{
mError
(
"db:%s, no enough dnode to change replica:%d"
,
pDb
->
name
,
replications
);
terrno
=
TSDB_CODE_NO_ENOUGH_DNODES
;
}
if
(
pDb
->
cfg
.
replications
-
replications
>=
2
)
{
mError
(
"db:%s, replica number can't change from 3 to 1"
,
pDb
->
name
,
replications
);
terrno
=
TSDB_CODE_INVALID_OPTION
;
}
return
newCfg
;
}
...
...
src/mnode/src/mgmtDnode.c
浏览文件 @
93775b1f
...
...
@@ -42,7 +42,7 @@ int32_t tsAccessSquence = 0;
extern
void
*
tsMnodeSdb
;
extern
void
*
tsVgroupSdb
;
static
int32_t
mgmtCreateDnode
(
uint32_t
i
p
);
static
int32_t
mgmtCreateDnode
(
char
*
e
p
);
static
void
mgmtProcessCreateDnodeMsg
(
SQueuedMsg
*
pMsg
);
static
void
mgmtProcessDropDnodeMsg
(
SQueuedMsg
*
pMsg
);
static
void
mgmtProcessCfgDnodeMsg
(
SQueuedMsg
*
pMsg
);
...
...
@@ -68,12 +68,6 @@ static int32_t mgmtDnodeActionInsert(SSdbOper *pOper) {
pDnode
->
status
=
TAOS_DN_STATUS_OFFLINE
;
}
pDnode
->
mnodeShellPort
=
tsMnodeShellPort
;
pDnode
->
mnodeDnodePort
=
tsMnodeDnodePort
;
pDnode
->
dnodeShellPort
=
tsDnodeShellPort
;
pDnode
->
dnodeMnodePort
=
tsDnodeMnodePort
;
pDnode
->
syncPort
=
tsSyncPort
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -144,9 +138,8 @@ static int32_t mgmtDnodeActionDecode(SSdbOper *pOper) {
static
int32_t
mgmtDnodeActionRestored
()
{
int32_t
numOfRows
=
sdbGetNumOfRows
(
tsDnodeSdb
);
if
(
numOfRows
<=
0
&&
dnodeIsFirstDeploy
())
{
uint32_t
ip
=
inet_addr
(
tsPrivateIp
);
mgmtCreateDnode
(
ip
);
SDnodeObj
*
pDnode
=
mgmtGetDnodeByIp
(
ip
);
mgmtCreateDnode
(
tsLocalEp
);
SDnodeObj
*
pDnode
=
mgmtGetDnodeByIp
(
tsLocalEp
);
mgmtAddMnode
(
pDnode
->
dnodeId
);
mgmtDecDnodeRef
(
pDnode
);
}
...
...
@@ -214,14 +207,14 @@ void *mgmtGetDnode(int32_t dnodeId) {
return
sdbGetRow
(
tsDnodeSdb
,
&
dnodeId
);
}
void
*
mgmtGetDnodeByIp
(
uint32_t
i
p
)
{
void
*
mgmtGetDnodeByIp
(
char
*
e
p
)
{
SDnodeObj
*
pDnode
=
NULL
;
void
*
pNode
=
NULL
;
while
(
1
)
{
pNode
=
sdbFetchRow
(
tsDnodeSdb
,
pNode
,
(
void
**
)
&
pDnode
);
if
(
pDnode
==
NULL
)
break
;
if
(
ip
==
pDnode
->
privateIp
)
{
if
(
strcmp
(
ep
,
pDnode
->
dnodeEp
)
==
0
)
{
return
pDnode
;
}
mgmtDecDnodeRef
(
pDnode
);
...
...
@@ -253,19 +246,18 @@ void mgmtProcessCfgDnodeMsg(SQueuedMsg *pMsg) {
SRpcMsg
rpcRsp
=
{.
handle
=
pMsg
->
thandle
,
.
pCont
=
NULL
,
.
contLen
=
0
,
.
code
=
0
,
.
msgType
=
0
};
SCMCfgDnodeMsg
*
pCmCfgDnode
=
pMsg
->
pCont
;
if
(
pCmCfgDnode
->
i
p
[
0
]
==
0
)
{
strcpy
(
pCmCfgDnode
->
ip
,
tsPrivateI
p
);
if
(
pCmCfgDnode
->
e
p
[
0
]
==
0
)
{
strcpy
(
pCmCfgDnode
->
ep
,
tsLocalE
p
);
}
else
{
strcpy
(
pCmCfgDnode
->
ip
,
pCmCfgDnode
->
i
p
);
strcpy
(
pCmCfgDnode
->
ep
,
pCmCfgDnode
->
e
p
);
}
uint32_t
dnodeIp
=
inet_addr
(
pCmCfgDnode
->
ip
);
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
rpcRsp
.
code
=
TSDB_CODE_NO_RIGHTS
;
}
else
{
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
dnodeI
p
);
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pCmCfgDnode
->
e
p
);
SMDCfgDnodeMsg
*
pMdCfgDnode
=
rpcMallocCont
(
sizeof
(
SMDCfgDnodeMsg
));
strcpy
(
pMdCfgDnode
->
ip
,
pCmCfgDnode
->
i
p
);
strcpy
(
pMdCfgDnode
->
ep
,
pCmCfgDnode
->
e
p
);
strcpy
(
pMdCfgDnode
->
config
,
pCmCfgDnode
->
config
);
SRpcMsg
rpcMdCfgDnodeMsg
=
{
.
handle
=
0
,
...
...
@@ -279,7 +271,7 @@ void mgmtProcessCfgDnodeMsg(SQueuedMsg *pMsg) {
}
if
(
rpcRsp
.
code
==
TSDB_CODE_SUCCESS
)
{
mPrint
(
"dnode:%s, is configured by %s"
,
pCmCfgDnode
->
i
p
,
pMsg
->
pUser
->
user
);
mPrint
(
"dnode:%s, is configured by %s"
,
pCmCfgDnode
->
e
p
,
pMsg
->
pUser
->
user
);
}
rpcSendResponse
(
&
rpcRsp
);
...
...
@@ -292,8 +284,6 @@ static void mgmtProcessCfgDnodeMsgRsp(SRpcMsg *rpcMsg) {
void
mgmtProcessDnodeStatusMsg
(
SRpcMsg
*
rpcMsg
)
{
SDMStatusMsg
*
pStatus
=
rpcMsg
->
pCont
;
pStatus
->
dnodeId
=
htonl
(
pStatus
->
dnodeId
);
pStatus
->
privateIp
=
htonl
(
pStatus
->
privateIp
);
pStatus
->
publicIp
=
htonl
(
pStatus
->
publicIp
);
pStatus
->
moduleStatus
=
htonl
(
pStatus
->
moduleStatus
);
pStatus
->
lastReboot
=
htonl
(
pStatus
->
lastReboot
);
pStatus
->
numOfCores
=
htons
(
pStatus
->
numOfCores
);
...
...
@@ -308,23 +298,21 @@ void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) {
SDnodeObj
*
pDnode
=
NULL
;
if
(
pStatus
->
dnodeId
==
0
)
{
pDnode
=
mgmtGetDnodeByIp
(
pStatus
->
privateI
p
);
pDnode
=
mgmtGetDnodeByIp
(
pStatus
->
dnodeE
p
);
if
(
pDnode
==
NULL
)
{
mTrace
(
"dnode
not created, privateIp:%s"
,
taosIpStr
(
pStatus
->
privateIp
)
);
mTrace
(
"dnode
%s not created"
,
pStatus
->
dnodeEp
);
mgmtSendSimpleResp
(
rpcMsg
->
handle
,
TSDB_CODE_DNODE_NOT_EXIST
);
return
;
}
}
else
{
pDnode
=
mgmtGetDnode
(
pStatus
->
dnodeId
);
if
(
pDnode
==
NULL
)
{
mError
(
"dnode
:%d, not exist, privateIp:%s"
,
pStatus
->
dnodeId
,
taosIpStr
(
pStatus
->
privateIp
)
);
mError
(
"dnode
id:%d, %s not exist"
,
pStatus
->
dnodeId
,
pStatus
->
dnodeEp
);
mgmtSendSimpleResp
(
rpcMsg
->
handle
,
TSDB_CODE_DNODE_NOT_EXIST
);
return
;
}
}
pDnode
->
privateIp
=
pStatus
->
privateIp
;
pDnode
->
publicIp
=
pStatus
->
publicIp
;
pDnode
->
lastReboot
=
pStatus
->
lastReboot
;
pDnode
->
numOfCores
=
pStatus
->
numOfCores
;
pDnode
->
diskAvailable
=
pStatus
->
diskAvailable
;
...
...
@@ -334,7 +322,7 @@ void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) {
pDnode
->
lastAccess
=
tsAccessSquence
;
if
(
pStatus
->
dnodeId
==
0
)
{
mTrace
(
"dnode:%d
, first access, privateIp:%s, name:%s"
,
pDnode
->
dnodeId
,
taosIpStr
(
pDnode
->
privateIp
),
pDnode
->
dnodeName
);
mTrace
(
"dnode:%d
%s, first access"
,
pDnode
->
dnodeId
,
pDnode
->
dnodeEp
);
}
else
{
//mTrace("dnode:%d, status received, access times %d", pDnode->dnodeId, pDnode->lastAccess);
}
...
...
@@ -347,7 +335,7 @@ void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) {
SVgObj
*
pVgroup
=
mgmtGetVgroup
(
pVload
->
vgId
);
if
(
pVgroup
==
NULL
)
{
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pDnode
->
privateI
p
);
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pDnode
->
dnodeE
p
);
mPrint
(
"dnode:%d, vgroup:%d not exist in mnode, drop it"
,
pDnode
->
dnodeId
,
pVload
->
vgId
);
mgmtSendDropVnodeMsg
(
pVload
->
vgId
,
&
ipSet
,
NULL
);
}
else
{
...
...
@@ -391,25 +379,24 @@ void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) {
rpcSendResponse
(
&
rpcRsp
);
}
static
int32_t
mgmtCreateDnode
(
uint32_t
i
p
)
{
static
int32_t
mgmtCreateDnode
(
char
*
e
p
)
{
int32_t
grantCode
=
grantCheck
(
TSDB_GRANT_DNODE
);
if
(
grantCode
!=
TSDB_CODE_SUCCESS
)
{
return
grantCode
;
}
SDnodeObj
*
pDnode
=
mgmtGetDnodeByIp
(
i
p
);
SDnodeObj
*
pDnode
=
mgmtGetDnodeByIp
(
e
p
);
if
(
pDnode
!=
NULL
)
{
mError
(
"dnode:%d is alredy exist,
ip:%s"
,
pDnode
->
dnodeId
,
taosIpStr
(
pDnode
->
privateIp
)
);
mError
(
"dnode:%d is alredy exist,
%s:%d"
,
pDnode
->
dnodeId
,
pDnode
->
dnodeFqdn
,
pDnode
->
dnodePort
);
return
TSDB_CODE_DNODE_ALREADY_EXIST
;
}
pDnode
=
(
SDnodeObj
*
)
calloc
(
1
,
sizeof
(
SDnodeObj
));
pDnode
->
privateIp
=
ip
;
pDnode
->
publicIp
=
ip
;
pDnode
->
createdTime
=
taosGetTimestampMs
();
pDnode
->
status
=
TAOS_DN_STATUS_OFFLINE
;
pDnode
->
totalVnodes
=
TSDB_INVALID_VNODE_NUM
;
sprintf
(
pDnode
->
dnodeName
,
"n%d"
,
sdbGetId
(
tsDnodeSdb
)
+
1
);
strcpy
(
pDnode
->
dnodeEp
,
ep
);
taosGetFqdnPortFromEp
(
ep
,
pDnode
->
dnodeFqdn
,
&
pDnode
->
dnodePort
);
SSdbOper
oper
=
{
.
type
=
SDB_OPER_GLOBAL
,
...
...
@@ -446,15 +433,15 @@ int32_t mgmtDropDnode(SDnodeObj *pDnode) {
return
code
;
}
static
int32_t
mgmtDropDnodeByIp
(
uint32_t
i
p
)
{
SDnodeObj
*
pDnode
=
mgmtGetDnodeByIp
(
i
p
);
static
int32_t
mgmtDropDnodeByIp
(
char
*
e
p
)
{
SDnodeObj
*
pDnode
=
mgmtGetDnodeByIp
(
e
p
);
if
(
pDnode
==
NULL
)
{
mError
(
"dnode:%s, is not exist"
,
taosIpStr
(
ip
)
);
mError
(
"dnode:%s, is not exist"
,
ep
);
return
TSDB_CODE_DNODE_NOT_EXIST
;
}
if
(
pDnode
->
privateIp
==
dnodeGetMnodeMasteIp
()
)
{
mError
(
"dnode:%d, can't drop dnode
which is master"
,
pDnode
->
dnodeId
);
if
(
strcmp
(
pDnode
->
dnodeEp
,
dnodeGetMnodeMasterEp
())
==
0
)
{
mError
(
"dnode:%d, can't drop dnode
:%s which is master"
,
pDnode
->
dnodeId
,
ep
);
return
TSDB_CODE_NO_REMOVE_MASTER
;
}
...
...
@@ -473,13 +460,12 @@ static void mgmtProcessCreateDnodeMsg(SQueuedMsg *pMsg) {
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
rpcRsp
.
code
=
TSDB_CODE_NO_RIGHTS
;
}
else
{
uint32_t
ip
=
inet_addr
(
pCreate
->
ip
);
rpcRsp
.
code
=
mgmtCreateDnode
(
ip
);
rpcRsp
.
code
=
mgmtCreateDnode
(
pCreate
->
ep
);
if
(
rpcRsp
.
code
==
TSDB_CODE_SUCCESS
)
{
SDnodeObj
*
pDnode
=
mgmtGetDnodeByIp
(
i
p
);
mLPrint
(
"dnode:%d,
ip:%s is created by %s"
,
pDnode
->
dnodeId
,
pCreate
->
i
p
,
pMsg
->
pUser
->
user
);
SDnodeObj
*
pDnode
=
mgmtGetDnodeByIp
(
pCreate
->
e
p
);
mLPrint
(
"dnode:%d,
%s is created by %s"
,
pDnode
->
dnodeId
,
pCreate
->
e
p
,
pMsg
->
pUser
->
user
);
}
else
{
mError
(
"failed to create dnode:%s, reason:%s"
,
pCreate
->
i
p
,
tstrerror
(
rpcRsp
.
code
));
mError
(
"failed to create dnode:%s, reason:%s"
,
pCreate
->
e
p
,
tstrerror
(
rpcRsp
.
code
));
}
}
rpcSendResponse
(
&
rpcRsp
);
...
...
@@ -490,15 +476,15 @@ static void mgmtProcessDropDnodeMsg(SQueuedMsg *pMsg) {
SRpcMsg
rpcRsp
=
{.
handle
=
pMsg
->
thandle
,
.
pCont
=
NULL
,
.
contLen
=
0
,
.
code
=
0
,
.
msgType
=
0
};
SCMDropDnodeMsg
*
pDrop
=
pMsg
->
pCont
;
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
rpcRsp
.
code
=
TSDB_CODE_NO_RIGHTS
;
}
else
{
uint32_t
ip
=
inet_addr
(
pDrop
->
ip
);
rpcRsp
.
code
=
mgmtDropDnodeByIp
(
ip
);
rpcRsp
.
code
=
mgmtDropDnodeByIp
(
pDrop
->
ep
);
if
(
rpcRsp
.
code
==
TSDB_CODE_SUCCESS
)
{
mLPrint
(
"dnode:%s is dropped by %s"
,
pDrop
->
i
p
,
pMsg
->
pUser
->
user
);
mLPrint
(
"dnode:%s is dropped by %s"
,
pDrop
->
e
p
,
pMsg
->
pUser
->
user
);
}
else
{
mError
(
"failed to drop dnode:%s, reason:%s"
,
pDrop
->
i
p
,
tstrerror
(
rpcRsp
.
code
));
mError
(
"failed to drop dnode:%s, reason:%s"
,
pDrop
->
e
p
,
tstrerror
(
rpcRsp
.
code
));
}
}
...
...
@@ -523,15 +509,9 @@ static int32_t mgmtGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
16
;
pShow
->
bytes
[
cols
]
=
40
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"private ip"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
16
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"public ip"
);
strcpy
(
pSchema
[
cols
].
name
,
"end point"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
...
...
@@ -581,7 +561,6 @@ static int32_t mgmtRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, voi
int32_t
cols
=
0
;
SDnodeObj
*
pDnode
=
NULL
;
char
*
pWrite
;
char
ipstr
[
32
];
while
(
numOfRows
<
rows
)
{
pShow
->
pNode
=
mgmtGetNextDnode
(
pShow
->
pNode
,
&
pDnode
);
...
...
@@ -593,14 +572,8 @@ static int32_t mgmtRetrieveDnodes(SShowObj *pShow, char *data, int32_t rows, voi
*
(
int16_t
*
)
pWrite
=
pDnode
->
dnodeId
;
cols
++
;
tinet_ntoa
(
ipstr
,
pDnode
->
privateIp
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
strcpy
(
pWrite
,
ipstr
);
cols
++
;
tinet_ntoa
(
ipstr
,
pDnode
->
publicIp
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
str
cpy
(
pWrite
,
ipstr
);
str
ncpy
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]
-
1
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
@@ -652,9 +625,9 @@ static int32_t mgmtGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
16
;
pShow
->
bytes
[
cols
]
=
40
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"
ip
"
);
strcpy
(
pSchema
[
cols
].
name
,
"
end point
"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
...
...
@@ -702,10 +675,8 @@ int32_t mgmtRetrieveModules(SShowObj *pShow, char *data, int32_t rows, void *pCo
*
(
int16_t
*
)
pWrite
=
pDnode
->
dnodeId
;
cols
++
;
char
ipstr
[
20
];
tinet_ntoa
(
ipstr
,
pDnode
->
privateIp
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
str
cpy
(
pWrite
,
ipstr
);
str
ncpy
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]
-
1
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
@@ -865,8 +836,7 @@ static int32_t mgmtGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo
SDnodeObj
*
pDnode
=
NULL
;
if
(
pShow
->
payloadLen
>
0
)
{
uint32_t
ip
=
ip2uint
(
pShow
->
payload
);
pDnode
=
mgmtGetDnodeByIp
(
ip
);
pDnode
=
mgmtGetDnodeByIp
(
pShow
->
payload
);
}
else
{
mgmtGetNextDnode
(
NULL
,
(
SDnodeObj
**
)
&
pDnode
);
}
...
...
src/mnode/src/mgmtMain.c
浏览文件 @
93775b1f
...
...
@@ -130,7 +130,7 @@ int32_t mgmtInitSystem() {
struct
stat
dirstat
;
bool
fileExist
=
(
stat
(
tsMnodeDir
,
&
dirstat
)
==
0
);
bool
asMaster
=
(
strcmp
(
tsMaster
Ip
,
tsPrivateI
p
)
==
0
);
bool
asMaster
=
(
strcmp
(
tsMaster
,
tsLocalE
p
)
==
0
);
if
(
asMaster
||
fileExist
)
{
if
(
mgmtStartSystem
()
!=
0
)
{
...
...
src/mnode/src/mgmtMnode.c
浏览文件 @
93775b1f
...
...
@@ -171,25 +171,21 @@ char *mgmtGetMnodeRoleStr(int32_t role) {
}
}
void
mgmtGetMnodeIpSet
(
SRpcIpSet
*
ipSet
,
bool
usePublicIp
)
{
void
mgmtGetMnodeIpSet
(
SRpcIpSet
*
ipSet
)
{
void
*
pNode
=
NULL
;
while
(
1
)
{
SMnodeObj
*
pMnode
=
NULL
;
pNode
=
mgmtGetNextMnode
(
pNode
,
&
pMnode
);
if
(
pMnode
==
NULL
)
break
;
if
(
usePublicIp
)
{
ipSet
->
ip
[
ipSet
->
numOfIps
]
=
htonl
(
pMnode
->
pDnode
->
publicIp
);
}
else
{
ipSet
->
ip
[
ipSet
->
numOfIps
]
=
htonl
(
pMnode
->
pDnode
->
privateIp
);
}
strcpy
(
ipSet
->
fqdn
[
ipSet
->
numOfIps
],
pMnode
->
pDnode
->
dnodeFqdn
);
ipSet
->
port
[
ipSet
->
numOfIps
]
=
htons
(
pMnode
->
pDnode
->
dnodePort
);
if
(
pMnode
->
role
==
TAOS_SYNC_ROLE_MASTER
)
{
ipSet
->
inUse
=
ipSet
->
numOfIps
;
}
ipSet
->
numOfIps
++
;
ipSet
->
port
=
htons
(
pMnode
->
pDnode
->
mnodeShellPort
);
mgmtReleaseMnode
(
pMnode
);
}
...
...
@@ -207,10 +203,7 @@ void mgmtGetMnodeInfos(void *param) {
if
(
pMnode
==
NULL
)
break
;
mnodes
->
nodeInfos
[
index
].
nodeId
=
htonl
(
pMnode
->
mnodeId
);
mnodes
->
nodeInfos
[
index
].
nodeIp
=
htonl
(
pMnode
->
pDnode
->
privateIp
);
mnodes
->
nodeInfos
[
index
].
nodePort
=
htons
(
pMnode
->
pDnode
->
mnodeDnodePort
);
mnodes
->
nodeInfos
[
index
].
syncPort
=
htons
(
pMnode
->
pDnode
->
syncPort
);
strcpy
(
mnodes
->
nodeInfos
[
index
].
nodeName
,
pMnode
->
pDnode
->
dnodeName
);
strcpy
(
mnodes
->
nodeInfos
[
index
].
nodeEp
,
pMnode
->
pDnode
->
dnodeEp
);
if
(
pMnode
->
role
==
TAOS_SYNC_ROLE_MASTER
)
{
mnodes
->
inUse
=
index
;
}
...
...
@@ -282,15 +275,9 @@ static int32_t mgmtGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pCo
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
16
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"private ip"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
16
;
pShow
->
bytes
[
cols
]
=
40
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"
public ip
"
);
strcpy
(
pSchema
[
cols
].
name
,
"
end point
"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
...
...
@@ -327,7 +314,6 @@ static int32_t mgmtRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, voi
int32_t
cols
=
0
;
SMnodeObj
*
pMnode
=
NULL
;
char
*
pWrite
;
char
ipstr
[
32
];
while
(
numOfRows
<
rows
)
{
pShow
->
pNode
=
mgmtGetNextMnode
(
pShow
->
pNode
,
&
pMnode
);
...
...
@@ -339,14 +325,8 @@ static int32_t mgmtRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, voi
*
(
int16_t
*
)
pWrite
=
pMnode
->
mnodeId
;
cols
++
;
tinet_ntoa
(
ipstr
,
pMnode
->
pDnode
->
privateIp
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
strcpy
(
pWrite
,
ipstr
);
cols
++
;
tinet_ntoa
(
ipstr
,
pMnode
->
pDnode
->
publicIp
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
str
cpy
(
pWrite
,
ipstr
);
str
ncpy
(
pWrite
,
pMnode
->
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]
-
1
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
src/mnode/src/mgmtSdb.c
浏览文件 @
93775b1f
...
...
@@ -231,8 +231,8 @@ void sdbUpdateSync() {
for
(
int32_t
i
=
0
;
i
<
mnodes
->
nodeNum
;
++
i
)
{
SDMMnodeInfo
*
node
=
&
mnodes
->
nodeInfos
[
i
];
syncCfg
.
nodeInfo
[
i
].
nodeId
=
node
->
nodeId
;
syncCfg
.
nodeInfo
[
i
].
nodeIp
=
node
->
nodeIp
;
s
trcpy
(
syncCfg
.
nodeInfo
[
i
].
name
,
node
->
nodeName
)
;
taosGetFqdnPortFromEp
(
node
->
nodeEp
,
syncCfg
.
nodeInfo
[
i
].
nodeFqdn
,
&
syncCfg
.
nodeInfo
[
i
].
nodePort
)
;
s
yncCfg
.
nodeInfo
[
i
].
nodePort
+=
TSDB_PORT_SYNC
;
index
++
;
}
...
...
@@ -244,8 +244,8 @@ void sdbUpdateSync() {
if
(
pMnode
==
NULL
)
break
;
syncCfg
.
nodeInfo
[
index
].
nodeId
=
pMnode
->
mnodeId
;
syncCfg
.
nodeInfo
[
index
].
node
Ip
=
pMnode
->
pDnode
->
privateIp
;
strcpy
(
syncCfg
.
nodeInfo
[
index
].
n
ame
,
pMnode
->
pDnode
->
dnodeName
);
syncCfg
.
nodeInfo
[
index
].
node
Port
=
pMnode
->
pDnode
->
dnodePort
+
TSDB_PORT_SYNC
;
strcpy
(
syncCfg
.
nodeInfo
[
index
].
n
odeFqdn
,
pMnode
->
pDnode
->
dnodeEp
);
index
++
;
mgmtReleaseMnode
(
pMnode
);
...
...
@@ -253,7 +253,8 @@ void sdbUpdateSync() {
}
syncCfg
.
replica
=
index
;
syncCfg
.
arbitratorIp
=
syncCfg
.
nodeInfo
[
0
].
nodeIp
;
syncCfg
.
arbitratorPort
=
syncCfg
.
nodeInfo
[
0
].
nodePort
;
strcpy
(
syncCfg
.
arbitratorFqdn
,
syncCfg
.
nodeInfo
[
0
].
nodeFqdn
);
if
(
syncCfg
.
replica
==
1
)
{
syncCfg
.
quorum
=
1
;
}
else
{
...
...
@@ -271,10 +272,9 @@ void sdbUpdateSync() {
if
(
!
hasThisDnode
)
return
;
if
(
memcmp
(
&
syncCfg
,
&
tsSdbObj
.
cfg
,
sizeof
(
SSyncCfg
))
==
0
)
return
;
sdbPrint
(
"work as mnode, replica:%d arbitrator
Ip:%s"
,
syncCfg
.
replica
,
taosIpStr
(
syncCfg
.
arbitratorIp
)
);
sdbPrint
(
"work as mnode, replica:%d arbitrator
:%s"
,
syncCfg
.
replica
,
syncCfg
.
arbitratorFqdn
);
for
(
int32_t
i
=
0
;
i
<
syncCfg
.
replica
;
++
i
)
{
sdbPrint
(
"mnode:%d, ip:%s name:%s"
,
syncCfg
.
nodeInfo
[
i
].
nodeId
,
taosIpStr
(
syncCfg
.
nodeInfo
[
i
].
nodeIp
),
syncCfg
.
nodeInfo
[
i
].
name
);
sdbPrint
(
"mnode:%d, ip:%s"
,
syncCfg
.
nodeInfo
[
i
].
nodeId
,
syncCfg
.
nodeInfo
[
i
].
nodeFqdn
);
}
SSyncInfo
syncInfo
;
...
...
src/mnode/src/mgmtShell.c
浏览文件 @
93775b1f
...
...
@@ -72,7 +72,6 @@ int32_t mgmtInitShell() {
}
SRpcInit
rpcInit
=
{
0
};
rpcInit
.
localIp
=
tsAnyIp
?
"0.0.0.0"
:
tsPrivateIp
;
rpcInit
.
localPort
=
tsMnodeShellPort
;
rpcInit
.
label
=
"MND-shell"
;
rpcInit
.
numOfThreads
=
numOfThreads
;
...
...
@@ -148,14 +147,12 @@ static void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg) {
if
(
!
sdbIsMaster
())
{
SRpcConnInfo
connInfo
;
rpcGetConnInfo
(
rpcMsg
->
handle
,
&
connInfo
);
bool
usePublicIp
=
(
connInfo
.
serverIp
==
tsPublicIpInt
);
SRpcIpSet
ipSet
=
{
0
};
ipSet
.
port
=
tsMnodeShellPort
;
dnodeGetMnodeIpSet
(
&
ipSet
,
usePublicIp
);
mgmtGetMnodeIpSet
(
&
ipSet
);
mTrace
(
"conn from shell ip:%s user:%s redirect msg, inUse:%d"
,
taosIpStr
(
connInfo
.
clientIp
),
connInfo
.
user
,
ipSet
.
inUse
);
for
(
int32_t
i
=
0
;
i
<
ipSet
.
numOfIps
;
++
i
)
{
mTrace
(
"index:%d ip:%s
"
,
i
,
taosIpStr
(
ipSet
.
ip
[
i
])
);
mTrace
(
"index:%d ip:%s
:%d"
,
i
,
ipSet
.
fqdn
[
i
],
ipSet
.
port
[
i
]
);
}
rpcSendRedirectRsp
(
rpcMsg
->
handle
,
&
ipSet
);
...
...
@@ -343,7 +340,7 @@ static void mgmtProcessHeartBeatMsg(SQueuedMsg *pMsg) {
return
;
}
mgmtGetMnodeIpSet
(
&
pHBRsp
->
ipList
,
pMsg
->
usePublicIp
);
mgmtGetMnodeIpSet
(
&
pHBRsp
->
ipList
);
/*
* TODO
...
...
@@ -429,7 +426,7 @@ static void mgmtProcessConnectMsg(SQueuedMsg *pMsg) {
pConnectRsp
->
writeAuth
=
pUser
->
writeAuth
;
pConnectRsp
->
superAuth
=
pUser
->
superAuth
;
mgmtGetMnodeIpSet
(
&
pConnectRsp
->
ipList
,
pMsg
->
usePublicIp
);
mgmtGetMnodeIpSet
(
&
pConnectRsp
->
ipList
);
connect_over:
rpcRsp
.
code
=
code
;
...
...
src/mnode/src/mgmtTable.c
浏览文件 @
93775b1f
...
...
@@ -74,6 +74,7 @@ static void mgmtProcessTableCfgMsg(SRpcMsg *rpcMsg);
static
void
mgmtProcessTableMetaMsg
(
SQueuedMsg
*
queueMsg
);
static
void
mgmtGetSuperTableMeta
(
SQueuedMsg
*
pMsg
);
static
void
mgmtGetChildTableMeta
(
SQueuedMsg
*
pMsg
);
static
void
mgmtAutoCreateChildTable
(
SQueuedMsg
*
pMsg
);
static
void
mgmtProcessAlterTableMsg
(
SQueuedMsg
*
queueMsg
);
static
void
mgmtProcessAlterTableRsp
(
SRpcMsg
*
rpcMsg
);
...
...
@@ -612,9 +613,12 @@ static void mgmtExtractTableName(char* tableId, char* name) {
static
void
mgmtProcessCreateTableMsg
(
SQueuedMsg
*
pMsg
)
{
SCMCreateTableMsg
*
pCreate
=
pMsg
->
pCont
;
pMsg
->
pTable
=
mgmtGetTable
(
pCreate
->
tableId
);
if
(
pMsg
->
pTable
==
NULL
)
pMsg
->
pTable
=
mgmtGetTable
(
pCreate
->
tableId
);
if
(
pMsg
->
pTable
!=
NULL
&&
pMsg
->
retry
==
0
)
{
if
(
pCreate
->
igExists
)
{
if
(
pCreate
->
getMeta
)
{
mTrace
(
"table:%s, continue to get meta"
,
pCreate
->
tableId
);
mgmtProcessTableMetaMsg
(
pMsg
);
}
else
if
(
pCreate
->
igExists
)
{
mTrace
(
"table:%s, is already exist"
,
pCreate
->
tableId
);
mgmtSendSimpleResp
(
pMsg
->
thandle
,
TSDB_CODE_SUCCESS
);
}
else
{
...
...
@@ -624,7 +628,7 @@ static void mgmtProcessCreateTableMsg(SQueuedMsg *pMsg) {
return
;
}
pMsg
->
pDb
=
mgmtGetDb
(
pCreate
->
db
);
if
(
pMsg
->
pDb
==
NULL
)
pMsg
->
pDb
=
mgmtGetDb
(
pCreate
->
db
);
if
(
pMsg
->
pDb
==
NULL
||
pMsg
->
pDb
->
status
!=
TSDB_DB_STATUS_READY
)
{
mError
(
"table:%s, failed to create, db not selected"
,
pCreate
->
tableId
);
mgmtSendSimpleResp
(
pMsg
->
thandle
,
TSDB_CODE_DB_NOT_SELECTED
);
...
...
@@ -681,15 +685,21 @@ static void mgmtProcessTableMetaMsg(SQueuedMsg *pMsg) {
SCMTableInfoMsg
*
pInfo
=
pMsg
->
pCont
;
mTrace
(
"table:%s, table meta msg is received from thandle:%p"
,
pInfo
->
tableId
,
pMsg
->
thandle
);
pMsg
->
pDb
=
mgmtGetDbByTableId
(
pInfo
->
tableId
);
if
(
pMsg
->
pDb
==
NULL
)
pMsg
->
pDb
=
mgmtGetDbByTableId
(
pInfo
->
tableId
);
if
(
pMsg
->
pDb
==
NULL
||
pMsg
->
pDb
->
status
!=
TSDB_DB_STATUS_READY
)
{
mError
(
"table:%s, failed to get table meta, db not selected"
,
pInfo
->
tableId
);
mgmtSendSimpleResp
(
pMsg
->
thandle
,
TSDB_CODE_DB_NOT_SELECTED
);
return
;
}
if
(
pMsg
->
pTable
==
NULL
)
pMsg
->
pTable
=
mgmtGetTable
(
pInfo
->
tableId
);
if
(
pMsg
->
pTable
==
NULL
)
{
mgmtGetChildTableMeta
(
pMsg
);
if
(
htons
(
pInfo
->
createFlag
)
!=
1
)
{
mError
(
"table:%s, failed to get table meta, table not exist"
,
pInfo
->
tableId
);
mgmtSendSimpleResp
(
pMsg
->
thandle
,
TSDB_CODE_INVALID_TABLE
);
}
else
{
mgmtAutoCreateChildTable
(
pMsg
);
}
}
else
{
if
(
pMsg
->
pTable
->
type
!=
TSDB_SUPER_TABLE
)
{
mgmtGetChildTableMeta
(
pMsg
);
...
...
@@ -1230,8 +1240,8 @@ static void mgmtProcessSuperTableVgroupMsg(SQueuedMsg *pMsg) {
SDnodeObj
*
pDnode
=
pVgroup
->
vnodeGid
[
vn
].
pDnode
;
if
(
pDnode
==
NULL
)
break
;
pRsp
->
vgroups
[
vg
].
ipAddr
[
vn
].
ip
=
htonl
(
pDnode
->
privateIp
);
pRsp
->
vgroups
[
vg
].
ipAddr
[
vn
].
port
=
htons
(
tsDnodeShellPort
);
strcpy
(
pRsp
->
vgroups
[
vg
].
ipAddr
[
vn
].
fqdn
,
pDnode
->
dnodeFqdn
);
pRsp
->
vgroups
[
vg
].
ipAddr
[
vn
].
port
=
htons
(
pDnode
->
dnodePort
+
TSDB_PORT_DNODESHELL
);
pRsp
->
vgroups
[
vg
].
numOfIps
++
;
}
...
...
@@ -1607,7 +1617,6 @@ static int32_t mgmtSetSchemaFromNormalTable(SSchema *pSchema, SChildTableObj *pT
static
int32_t
mgmtDoGetChildTableMeta
(
SQueuedMsg
*
pMsg
,
STableMetaMsg
*
pMeta
)
{
SDbObj
*
pDb
=
pMsg
->
pDb
;
SChildTableObj
*
pTable
=
(
SChildTableObj
*
)
pMsg
->
pTable
;
int8_t
usePublicIp
=
pMsg
->
usePublicIp
;
pMeta
->
uid
=
htobe64
(
pTable
->
uid
);
pMeta
->
sid
=
htonl
(
pTable
->
sid
);
...
...
@@ -1637,13 +1646,8 @@ static int32_t mgmtDoGetChildTableMeta(SQueuedMsg *pMsg, STableMetaMsg *pMeta) {
for
(
int32_t
i
=
0
;
i
<
pVgroup
->
numOfVnodes
;
++
i
)
{
SDnodeObj
*
pDnode
=
mgmtGetDnode
(
pVgroup
->
vnodeGid
[
i
].
dnodeId
);
if
(
pDnode
==
NULL
)
break
;
if
(
usePublicIp
)
{
pMeta
->
vgroup
.
ipAddr
[
i
].
ip
=
htonl
(
pDnode
->
publicIp
);
pMeta
->
vgroup
.
ipAddr
[
i
].
port
=
htonl
(
tsDnodeShellPort
);
}
else
{
pMeta
->
vgroup
.
ipAddr
[
i
].
ip
=
htonl
(
pDnode
->
privateIp
);
pMeta
->
vgroup
.
ipAddr
[
i
].
port
=
htonl
(
tsDnodeShellPort
);
}
strcpy
(
pMeta
->
vgroup
.
ipAddr
[
i
].
fqdn
,
pDnode
->
dnodeFqdn
);
pMeta
->
vgroup
.
ipAddr
[
i
].
port
=
htons
(
pDnode
->
dnodePort
+
TSDB_PORT_DNODESHELL
);
pMeta
->
vgroup
.
numOfIps
++
;
mgmtDecDnodeRef
(
pDnode
);
}
...
...
@@ -1654,42 +1658,34 @@ static int32_t mgmtDoGetChildTableMeta(SQueuedMsg *pMsg, STableMetaMsg *pMeta) {
return
TSDB_CODE_SUCCESS
;
}
void
mgmtGetChildTableMeta
(
SQueuedMsg
*
pMsg
)
{
SChildTableObj
*
pTable
=
(
SChildTableObj
*
)
pMsg
->
pTable
;
static
void
mgmtAutoCreateChildTable
(
SQueuedMsg
*
pMsg
)
{
SCMTableInfoMsg
*
pInfo
=
pMsg
->
pCont
;
if
(
pTable
==
NULL
)
{
if
(
htons
(
pInfo
->
createFlag
)
!=
1
)
{
mError
(
"table:%s, failed to get table meta, table not exist"
,
pInfo
->
tableId
);
mgmtSendSimpleResp
(
pMsg
->
thandle
,
TSDB_CODE_INVALID_TABLE
);
return
;
}
else
{
//TODO: on demand create table from super table if table does not exists
int32_t
contLen
=
sizeof
(
SCMCreateTableMsg
)
+
sizeof
(
STagData
);
SCMCreateTableMsg
*
pCreateMsg
=
rpcMallocCont
(
contLen
);
if
(
pCreateMsg
==
NULL
)
{
mError
(
"table:%s, failed to create table while get meta info, no enough memory"
,
pInfo
->
tableId
);
mgmtSendSimpleResp
(
pMsg
->
thandle
,
TSDB_CODE_SERV_OUT_OF_MEMORY
);
return
;
}
memcpy
(
pCreateMsg
->
schema
,
pInfo
->
tags
,
sizeof
(
STagData
));
strncpy
(
pCreateMsg
->
tableId
,
pInfo
->
tableId
,
tListLen
(
pInfo
->
tableId
));
int32_t
contLen
=
sizeof
(
SCMCreateTableMsg
)
+
sizeof
(
STagData
);
SCMCreateTableMsg
*
pCreateMsg
=
rpcMallocCont
(
contLen
);
if
(
pCreateMsg
==
NULL
)
{
mError
(
"table:%s, failed to create table while get meta info, no enough memory"
,
pInfo
->
tableId
);
mgmtSendSimpleResp
(
pMsg
->
thandle
,
TSDB_CODE_SERV_OUT_OF_MEMORY
);
return
;
}
SQueuedMsg
*
newMsg
=
malloc
(
sizeof
(
SQueuedMsg
));
memcpy
(
newMsg
,
pMsg
,
sizeof
(
SQueuedMsg
));
pMsg
->
pCont
=
NULL
;
strncpy
(
pCreateMsg
->
tableId
,
pInfo
->
tableId
,
tListLen
(
pInfo
->
tableId
));
strcpy
(
pCreateMsg
->
db
,
pMsg
->
pDb
->
name
);
pCreateMsg
->
igExists
=
1
;
pCreateMsg
->
getMeta
=
1
;
memcpy
(
pCreateMsg
->
schema
,
pInfo
->
tags
,
sizeof
(
STagData
));
newMsg
->
ahandle
=
newMsg
->
pCont
;
newMsg
->
pCont
=
pCreateMsg
;
mTrace
(
"table:%s, start to create in demand"
,
pInfo
->
tableId
);
mgmtAddToShellQueue
(
newMsg
);
return
;
}
}
SQueuedMsg
*
newMsg
=
mgmtCloneQueuedMsg
(
pMsg
);
pMsg
->
pCont
=
newMsg
->
pCont
;
newMsg
->
pCont
=
pCreateMsg
;
mTrace
(
"table:%s, start to create on demand"
,
pInfo
->
tableId
);
mgmtAddToShellQueue
(
newMsg
);
}
static
void
mgmtGetChildTableMeta
(
SQueuedMsg
*
pMsg
)
{
STableMetaMsg
*
pMeta
=
rpcMallocCont
(
sizeof
(
STableMetaMsg
)
+
sizeof
(
SSchema
)
*
TSDB_MAX_COLUMNS
);
if
(
pMeta
==
NULL
)
{
mError
(
"table:%s, failed to get table meta, no enough memory"
,
p
Table
->
info
.
tableId
);
mError
(
"table:%s, failed to get table meta, no enough memory"
,
p
Msg
->
pTable
->
tableId
);
mgmtSendSimpleResp
(
pMsg
->
thandle
,
TSDB_CODE_SERV_OUT_OF_MEMORY
);
return
;
}
...
...
@@ -1799,8 +1795,8 @@ static void mgmtProcessTableCfgMsg(SRpcMsg *rpcMsg) {
mgmtDecTableRef
(
pTable
);
return
;
}
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
p
Cfg
->
dnode
);
SDnodeObj
*
pDnode
=
mgmtGetDnode
(
pCfg
->
dnode
);
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
p
Dnode
->
dnodeEp
);
SRpcMsg
rpcRsp
=
{
.
handle
=
NULL
,
.
pCont
=
pMDCreate
,
...
...
src/mnode/src/mgmtVgroup.c
浏览文件 @
93775b1f
...
...
@@ -162,7 +162,7 @@ static int32_t mgmtVgroupActionEncode(SSdbOper *pOper) {
SVgObj
*
pVgroup
=
pOper
->
pObj
;
memcpy
(
pOper
->
rowData
,
pVgroup
,
tsVgUpdateSize
);
SVgObj
*
pTmpVgroup
=
pOper
->
rowData
;
for
(
int32_t
i
=
0
;
i
<
TSDB_
VNODES_SUPPORT
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
TSDB_
MAX_REPLICA
;
++
i
)
{
pTmpVgroup
->
vnodeGid
[
i
].
pDnode
=
NULL
;
pTmpVgroup
->
vnodeGid
[
i
].
role
=
0
;
}
...
...
@@ -260,7 +260,7 @@ void mgmtUpdateVgroupStatus(SVgObj *pVgroup, SDnodeObj *pDnode, SVnodeLoad *pVlo
}
if
(
!
dnodeExist
)
{
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pDnode
->
privateI
p
);
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pDnode
->
dnodeE
p
);
mError
(
"vgroup:%d, dnode:%d not exist in mnode, drop it"
,
pVload
->
vgId
,
pDnode
->
dnodeId
);
mgmtSendDropVnodeMsg
(
pVload
->
vgId
,
&
ipSet
,
NULL
);
return
;
...
...
@@ -401,9 +401,9 @@ int32_t mgmtGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) {
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
16
;
pShow
->
bytes
[
cols
]
=
40
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"
ip
"
);
strcpy
(
pSchema
[
cols
].
name
,
"
end point
"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
...
...
@@ -440,7 +440,6 @@ int32_t mgmtRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pCo
SVgObj
*
pVgroup
=
NULL
;
int32_t
maxReplica
=
0
;
int32_t
cols
=
0
;
char
ipstr
[
20
];
char
*
pWrite
;
SDbObj
*
pDb
=
mgmtGetDb
(
pShow
->
db
);
...
...
@@ -479,10 +478,10 @@ int32_t mgmtRetrieveVgroups(SShowObj *pShow, char *data, int32_t rows, void *pCo
SDnodeObj
*
pDnode
=
pVgroup
->
vnodeGid
[
i
].
pDnode
;
if
(
pDnode
!=
NULL
)
{
tinet_ntoa
(
ipstr
,
pDnode
->
privateIp
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
str
cpy
(
pWrite
,
ipstr
);
str
ncpy
(
pWrite
,
pDnode
->
dnodeEp
,
pShow
->
bytes
[
cols
]
-
1
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
strcpy
(
pWrite
,
mgmtGetMnodeRoleStr
(
pVgroup
->
vnodeGid
[
i
].
role
));
cols
++
;
...
...
@@ -559,11 +558,7 @@ SMDCreateVnodeMsg *mgmtBuildCreateVnodeMsg(SVgObj *pVgroup) {
SDnodeObj
*
pDnode
=
pVgroup
->
vnodeGid
[
j
].
pDnode
;
if
(
pDnode
!=
NULL
)
{
pNodes
[
j
].
nodeId
=
htonl
(
pDnode
->
dnodeId
);
pNodes
[
j
].
nodeIp
=
htonl
(
pDnode
->
privateIp
);
strcpy
(
pNodes
[
j
].
nodeName
,
pDnode
->
dnodeName
);
if
(
j
==
0
)
{
pCfg
->
arbitratorIp
=
htonl
(
pDnode
->
privateIp
);
}
strcpy
(
pNodes
[
j
].
nodeEp
,
pDnode
->
dnodeEp
);
}
}
...
...
@@ -574,21 +569,21 @@ SRpcIpSet mgmtGetIpSetFromVgroup(SVgObj *pVgroup) {
SRpcIpSet
ipSet
=
{
.
numOfIps
=
pVgroup
->
numOfVnodes
,
.
inUse
=
0
,
.
port
=
tsDnodeMnodePort
};
for
(
int
i
=
0
;
i
<
pVgroup
->
numOfVnodes
;
++
i
)
{
ipSet
.
ip
[
i
]
=
pVgroup
->
vnodeGid
[
i
].
pDnode
->
privateIp
;
strcpy
(
ipSet
.
fqdn
[
i
],
pVgroup
->
vnodeGid
[
i
].
pDnode
->
dnodeFqdn
);
ipSet
.
port
[
i
]
=
pVgroup
->
vnodeGid
[
i
].
pDnode
->
dnodePort
+
TSDB_PORT_DNODEMNODE
;
}
return
ipSet
;
}
SRpcIpSet
mgmtGetIpSetFromIp
(
uint32_t
i
p
)
{
SRpcIpSet
ipSet
=
{
.
ip
[
0
]
=
ip
,
.
numOfIps
=
1
,
.
inUse
=
0
,
.
port
=
tsDnodeMnodePort
}
;
SRpcIpSet
mgmtGetIpSetFromIp
(
char
*
e
p
)
{
SRpcIpSet
ipSet
;
ipSet
.
numOfIps
=
1
;
ipSet
.
inUse
=
0
;
taosGetFqdnPortFromEp
(
ep
,
ipSet
.
fqdn
[
0
],
&
ipSet
.
port
[
0
]);
ipSet
.
port
[
0
]
+=
TSDB_PORT_DNODEMNODE
;
return
ipSet
;
}
...
...
@@ -608,7 +603,7 @@ void mgmtSendCreateVnodeMsg(SVgObj *pVgroup, SRpcIpSet *ipSet, void *ahandle) {
void
mgmtSendCreateVgroupMsg
(
SVgObj
*
pVgroup
,
void
*
ahandle
)
{
mTrace
(
"vgroup:%d, send create all vnodes msg, ahandle:%p"
,
pVgroup
->
vgId
,
ahandle
);
for
(
int32_t
i
=
0
;
i
<
pVgroup
->
numOfVnodes
;
++
i
)
{
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pVgroup
->
vnodeGid
[
i
].
pDnode
->
privateI
p
);
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pVgroup
->
vnodeGid
[
i
].
pDnode
->
dnodeE
p
);
mgmtSendCreateVnodeMsg
(
pVgroup
,
&
ipSet
,
ahandle
);
}
}
...
...
@@ -674,7 +669,7 @@ void mgmtSendDropVnodeMsg(int32_t vgId, SRpcIpSet *ipSet, void *ahandle) {
static
void
mgmtSendDropVgroupMsg
(
SVgObj
*
pVgroup
,
void
*
ahandle
)
{
mTrace
(
"vgroup:%d, send drop all vnodes msg, ahandle:%p"
,
pVgroup
->
vgId
,
ahandle
);
for
(
int32_t
i
=
0
;
i
<
pVgroup
->
numOfVnodes
;
++
i
)
{
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pVgroup
->
vnodeGid
[
i
].
pDnode
->
privateI
p
);
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pVgroup
->
vnodeGid
[
i
].
pDnode
->
dnodeE
p
);
mgmtSendDropVnodeMsg
(
pVgroup
->
vgId
,
&
ipSet
,
ahandle
);
}
}
...
...
@@ -737,7 +732,7 @@ static void mgmtProcessVnodeCfgMsg(SRpcMsg *rpcMsg) {
mgmtSendSimpleResp
(
rpcMsg
->
handle
,
TSDB_CODE_SUCCESS
);
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pDnode
->
privateI
p
);
SRpcIpSet
ipSet
=
mgmtGetIpSetFromIp
(
pDnode
->
dnodeE
p
);
mgmtSendCreateVnodeMsg
(
pVgroup
,
&
ipSet
,
NULL
);
}
...
...
@@ -745,16 +740,14 @@ void mgmtDropAllVgroups(SDbObj *pDropDb) {
void
*
pNode
=
NULL
;
void
*
pLastNode
=
NULL
;
int32_t
numOfVgroups
=
0
;
int32_t
dbNameLen
=
strlen
(
pDropDb
->
name
);
SVgObj
*
pVgroup
=
NULL
;
mPrint
(
"db:%s, all vgroups will be dropped from sdb"
,
pDropDb
->
name
);
while
(
1
)
{
pNode
=
sdbFetchRow
(
tsVgroupSdb
,
pNode
,
(
void
**
)
&
pVgroup
);
if
(
pVgroup
==
NULL
)
break
;
if
(
strncmp
(
pDropDb
->
name
,
pVgroup
->
dbName
,
dbNameLen
)
==
0
)
{
if
(
pVgroup
->
pDb
==
pDropDb
)
{
SSdbOper
oper
=
{
.
type
=
SDB_OPER_LOCAL
,
.
table
=
tsVgroupSdb
,
...
...
@@ -763,9 +756,9 @@ void mgmtDropAllVgroups(SDbObj *pDropDb) {
sdbDeleteRow
(
&
oper
);
pNode
=
pLastNode
;
numOfVgroups
++
;
mgmtSendDropVgroupMsg
(
pVgroup
,
NULL
);
}
mgmtSendDropVgroupMsg
(
pVgroup
,
NULL
);
mgmtDecVgroupRef
(
pVgroup
);
}
...
...
src/os/darwin/src/darwinEnv.c
浏览文件 @
93775b1f
...
...
@@ -23,8 +23,8 @@ void osInit() {
strcpy
(
tsVnodeDir
,
""
);
strcpy
(
tsDnodeDir
,
""
);
strcpy
(
tsMnodeDir
,
""
);
strcpy
(
d
ataDir
,
"/var/lib/taos"
);
strcpy
(
l
ogDir
,
"~/TDengineLog"
);
strcpy
(
s
criptDir
,
"/etc/taos"
);
strcpy
(
o
sName
,
"Darwin"
);
strcpy
(
tsD
ataDir
,
"/var/lib/taos"
);
strcpy
(
tsL
ogDir
,
"~/TDengineLog"
);
strcpy
(
tsS
criptDir
,
"/etc/taos"
);
strcpy
(
tsO
sName
,
"Darwin"
);
}
src/os/linux/src/linuxEnv.c
浏览文件 @
93775b1f
...
...
@@ -23,8 +23,8 @@ void osInit() {
strcpy
(
tsVnodeDir
,
""
);
strcpy
(
tsDnodeDir
,
""
);
strcpy
(
tsMnodeDir
,
""
);
strcpy
(
d
ataDir
,
"/var/lib/taos"
);
strcpy
(
l
ogDir
,
"/var/log/taos"
);
strcpy
(
s
criptDir
,
"/etc/taos"
);
strcpy
(
o
sName
,
"Linux"
);
strcpy
(
tsD
ataDir
,
"/var/lib/taos"
);
strcpy
(
tsL
ogDir
,
"/var/log/taos"
);
strcpy
(
tsS
criptDir
,
"/etc/taos"
);
strcpy
(
tsO
sName
,
"Linux"
);
}
\ No newline at end of file
src/os/linux/src/linuxSysPara.c
浏览文件 @
93775b1f
...
...
@@ -290,11 +290,12 @@ bool taosGetCpuUsage(float *sysCpuUsage, float *procCpuUsage) {
bool
taosGetDisk
()
{
struct
statvfs
info
;
const
double
unit
=
1024
*
1024
*
1024
;
if
(
tscEmbedded
)
{
if
(
statvfs
(
dataDir
,
&
info
))
{
tsTotalDataDirGB
=
0
;
tsAvailDataDirGB
=
0
;
if
(
statvfs
(
tsDataDir
,
&
info
))
{
//tsTotalDataDirGB = 0;
//tsAvailDataDirGB = 0;
uError
(
"failed to get disk size, dataDir:%s errno:%s"
,
tsDataDir
,
strerror
(
errno
));
return
false
;
}
else
{
tsTotalDataDirGB
=
(
float
)((
double
)
info
.
f_blocks
*
(
double
)
info
.
f_frsize
/
unit
);
...
...
@@ -302,9 +303,10 @@ bool taosGetDisk() {
}
}
if
(
statvfs
(
logDir
,
&
info
))
{
tsTotalLogDirGB
=
0
;
tsAvailLogDirGB
=
0
;
if
(
statvfs
(
tsLogDir
,
&
info
))
{
//tsTotalLogDirGB = 0;
//tsAvailLogDirGB = 0;
uError
(
"failed to get disk size, logDir:%s errno:%s"
,
tsLogDir
,
strerror
(
errno
));
return
false
;
}
else
{
tsTotalLogDirGB
=
(
float
)((
double
)
info
.
f_blocks
*
(
double
)
info
.
f_frsize
/
unit
);
...
...
@@ -312,8 +314,9 @@ bool taosGetDisk() {
}
if
(
statvfs
(
"/tmp"
,
&
info
))
{
tsTotalTmpDirGB
=
0
;
tsAvailTmpDirGB
=
0
;
//tsTotalTmpDirGB = 0;
//tsAvailTmpDirGB = 0;
uError
(
"failed to get disk size, tmpDir:/tmp errno:%s"
,
strerror
(
errno
));
return
false
;
}
else
{
tsTotalTmpDirGB
=
(
float
)((
double
)
info
.
f_blocks
*
(
double
)
info
.
f_frsize
/
unit
);
...
...
@@ -361,6 +364,8 @@ static bool taosGetCardName(char *ip, char *name) {
static
bool
taosGetCardInfo
(
int64_t
*
bytes
)
{
static
char
tsPublicCard
[
1000
]
=
{
0
};
static
char
tsPrivateIp
[
40
];
if
(
tsPublicCard
[
0
]
==
0
)
{
if
(
!
taosGetCardName
(
tsPrivateIp
,
tsPublicCard
))
{
uError
(
"can't get card name from ip:%s"
,
tsPrivateIp
);
...
...
src/os/windows/src/twinenv.c
浏览文件 @
93775b1f
...
...
@@ -23,8 +23,8 @@ void osInit() {
strcpy
(
tsVnodeDir
,
"C:/TDengine/data"
);
strcpy
(
tsDnodeDir
,
""
);
strcpy
(
tsMnodeDir
,
""
);
strcpy
(
d
ataDir
,
"C:/TDengine/data"
);
strcpy
(
l
ogDir
,
"C:/TDengine/log"
);
strcpy
(
s
criptDir
,
"C:/TDengine/script"
);
strcpy
(
o
sName
,
"Windows"
);
strcpy
(
tsD
ataDir
,
"C:/TDengine/data"
);
strcpy
(
tsL
ogDir
,
"C:/TDengine/log"
);
strcpy
(
tsS
criptDir
,
"C:/TDengine/script"
);
strcpy
(
tsO
sName
,
"Windows"
);
}
\ No newline at end of file
src/plugins/http/inc/httpHandle.h
浏览文件 @
93775b1f
...
...
@@ -210,7 +210,7 @@ typedef struct HttpThread {
typedef
struct
HttpServer
{
char
label
[
HTTP_LABEL_SIZE
];
char
serverIp
[
16
]
;
uint32_t
serverIp
;
uint16_t
serverPort
;
int
cacheContext
;
int
sessionExpire
;
...
...
src/plugins/http/src/httpSystem.c
浏览文件 @
93775b1f
...
...
@@ -48,7 +48,7 @@ int httpInitSystem() {
memset
(
httpServer
,
0
,
sizeof
(
HttpServer
));
strcpy
(
httpServer
->
label
,
"rest"
);
strcpy
(
httpServer
->
serverIp
,
tsHttpIp
)
;
httpServer
->
serverIp
=
0
;
httpServer
->
serverPort
=
tsHttpPort
;
httpServer
->
cacheContext
=
tsHttpCacheSessions
;
httpServer
->
sessionExpire
=
tsHttpSessionExpire
;
...
...
@@ -117,7 +117,7 @@ void httpCleanUpSystem() {
httpPrint
(
"http service cleanup"
);
httpStopSystem
();
#if
1
#if
0
if (httpServer == NULL) {
return;
}
...
...
src/plugins/monitor/src/monitorMain.c
浏览文件 @
93775b1f
...
...
@@ -68,7 +68,7 @@ typedef enum {
typedef
struct
{
void
*
conn
;
void
*
timer
;
char
privateIpStr
[
TSDB_IPv4ADDR
_LEN
];
char
ep
[
TSDB_FQDN
_LEN
];
int8_t
cmdIndex
;
int8_t
state
;
char
sql
[
SQL_LENGTH
];
...
...
@@ -112,14 +112,8 @@ static void monitorInitConn(void *para, void *unused) {
monitorPrint
(
"starting to initialize monitor service .."
);
tsMonitorConn
.
state
=
MONITOR_STATE_INITIALIZING
;
if
(
tsMonitorConn
.
privateIpStr
[
0
]
==
0
)
{
strcpy
(
tsMonitorConn
.
privateIpStr
,
tsPrivateIp
);
for
(
int32_t
i
=
0
;
i
<
TSDB_IPv4ADDR_LEN
;
++
i
)
{
if
(
tsMonitorConn
.
privateIpStr
[
i
]
==
'.'
)
{
tsMonitorConn
.
privateIpStr
[
i
]
=
'_'
;
}
}
}
if
(
tsMonitorConn
.
ep
[
0
]
==
0
)
strcpy
(
tsMonitorConn
.
ep
,
tsLocalEp
);
if
(
tsMonitorConn
.
conn
==
NULL
)
{
taos_connect_a
(
NULL
,
"monitor"
,
tsInternalPass
,
""
,
0
,
monitorInitConnCb
,
&
tsMonitorConn
,
&
(
tsMonitorConn
.
conn
));
...
...
@@ -163,7 +157,7 @@ static void dnodeBuildMonitorSql(char *sql, int32_t cmd) {
tsMonitorDbName
,
IP_LEN_STR
+
1
);
}
else
if
(
cmd
==
MONITOR_CMD_CREATE_TB_DN
)
{
snprintf
(
sql
,
SQL_LENGTH
,
"create table if not exists %s.dn_%s using %s.dn tags('%s')"
,
tsMonitorDbName
,
tsMonitorConn
.
privateIpStr
,
tsMonitorDbName
,
tsPrivateI
p
);
tsMonitorConn
.
ep
,
tsMonitorDbName
,
tsLocalE
p
);
}
else
if
(
cmd
==
MONITOR_CMD_CREATE_MT_ACCT
)
{
snprintf
(
sql
,
SQL_LENGTH
,
"create table if not exists %s.acct(ts timestamp "
...
...
@@ -214,7 +208,7 @@ static void monitorInitDatabaseCb(void *param, TAOS_RES *result, int32_t code) {
if
(
-
code
==
TSDB_CODE_TABLE_ALREADY_EXIST
||
-
code
==
TSDB_CODE_DB_ALREADY_EXIST
||
code
>=
0
)
{
monitorTrace
(
"monitor:%p, sql success, reason:%d, %s"
,
tsMonitorConn
.
conn
,
tstrerror
(
code
),
tsMonitorConn
.
sql
);
if
(
tsMonitorConn
.
cmdIndex
==
MONITOR_CMD_CREATE_TB_LOG
)
{
monitorPrint
(
"dnode:%s is started"
,
ts
PrivateI
p
);
monitorPrint
(
"dnode:%s is started"
,
ts
LocalE
p
);
}
tsMonitorConn
.
cmdIndex
++
;
monitorInitDatabase
();
...
...
@@ -346,7 +340,7 @@ static void monitorSaveSystemInfo() {
int64_t
ts
=
taosGetTimestampUs
();
char
*
sql
=
tsMonitorConn
.
sql
;
int32_t
pos
=
snprintf
(
sql
,
SQL_LENGTH
,
"insert into %s.dn_%s values(%"
PRId64
,
tsMonitorDbName
,
tsMonitorConn
.
privateIpStr
,
ts
);
int32_t
pos
=
snprintf
(
sql
,
SQL_LENGTH
,
"insert into %s.dn_%s values(%"
PRId64
,
tsMonitorDbName
,
tsMonitorConn
.
ep
,
ts
);
pos
+=
monitorBuildCpuSql
(
sql
+
pos
);
pos
+=
monitorBuildMemorySql
(
sql
+
pos
);
...
...
@@ -414,7 +408,7 @@ void monitorSaveLog(int32_t level, const char *const format, ...) {
va_end
(
argpointer
);
if
(
len
>
max_length
)
len
=
max_length
;
len
+=
sprintf
(
sql
+
len
,
"', '%s')"
,
ts
PrivateI
p
);
len
+=
sprintf
(
sql
+
len
,
"', '%s')"
,
ts
LocalE
p
);
sql
[
len
++
]
=
0
;
monitorTrace
(
"monitor:%p, save log, sql: %s"
,
tsMonitorConn
.
conn
,
sql
);
...
...
src/rpc/inc/rpcCache.h
浏览文件 @
93775b1f
...
...
@@ -22,8 +22,8 @@ extern "C" {
void
*
rpcOpenConnCache
(
int
maxSessions
,
void
(
*
cleanFp
)(
void
*
),
void
*
tmrCtrl
,
int64_t
keepTimer
);
void
rpcCloseConnCache
(
void
*
handle
);
void
rpcAddConnIntoCache
(
void
*
handle
,
void
*
data
,
uint32_t
ip
,
uint16_t
port
,
int8_t
connType
);
void
*
rpcGetConnFromCache
(
void
*
handle
,
uint32_t
ip
,
uint16_t
port
,
int8_t
connType
);
void
rpcAddConnIntoCache
(
void
*
handle
,
void
*
data
,
char
*
fqdn
,
uint16_t
port
,
int8_t
connType
);
void
*
rpcGetConnFromCache
(
void
*
handle
,
char
*
fqdn
,
uint16_t
port
,
int8_t
connType
);
#ifdef __cplusplus
}
...
...
src/rpc/inc/rpcTcp.h
浏览文件 @
93775b1f
...
...
@@ -20,12 +20,12 @@
extern
"C"
{
#endif
void
*
taosInitTcpServer
(
char
*
ip
,
uint16_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
);
void
*
taosInitTcpServer
(
uint32_t
ip
,
uint16_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
);
void
taosCleanUpTcpServer
(
void
*
param
);
void
*
taosInitTcpClient
(
char
*
ip
,
uint16_t
port
,
char
*
label
,
int
num
,
void
*
fp
,
void
*
shandle
);
void
*
taosInitTcpClient
(
uint32_t
ip
,
uint16_t
port
,
char
*
label
,
int
num
,
void
*
fp
,
void
*
shandle
);
void
taosCleanUpTcpClient
(
void
*
chandle
);
void
*
taosOpenTcpClientConnection
(
void
*
shandle
,
void
*
thandle
,
char
*
ip
,
uint16_t
port
);
void
*
taosOpenTcpClientConnection
(
void
*
shandle
,
void
*
thandle
,
uint32_t
ip
,
uint16_t
port
);
void
taosCloseTcpConnection
(
void
*
chandle
);
int
taosSendTcpData
(
uint32_t
ip
,
uint16_t
port
,
void
*
data
,
int
len
,
void
*
chandle
);
...
...
src/rpc/inc/rpcUdp.h
浏览文件 @
93775b1f
...
...
@@ -22,10 +22,10 @@ extern "C" {
#include "taosdef.h"
void
*
taosInitUdpConnection
(
char
*
ip
,
uint16_t
port
,
char
*
label
,
int
,
void
*
fp
,
void
*
shandle
);
void
*
taosInitUdpConnection
(
uint32_t
ip
,
uint16_t
port
,
char
*
label
,
int
,
void
*
fp
,
void
*
shandle
);
void
taosCleanUpUdpConnection
(
void
*
handle
);
int
taosSendUdpData
(
uint32_t
ip
,
uint16_t
port
,
void
*
data
,
int
dataLen
,
void
*
chandle
);
void
*
taosOpenUdpConnection
(
void
*
shandle
,
void
*
thandle
,
char
*
ip
,
uint16_t
port
);
void
*
taosOpenUdpConnection
(
void
*
shandle
,
void
*
thandle
,
uint32_t
ip
,
uint16_t
port
);
void
taosFreeMsgHdr
(
void
*
hdr
);
int
taosMsgHdrSize
(
void
*
hdr
);
...
...
src/rpc/src/rpcCache.c
浏览文件 @
93775b1f
...
...
@@ -23,7 +23,7 @@
#include "rpcCache.h"
typedef
struct
SConnHash
{
uint32_t
ip
;
char
fqdn
[
TSDB_FQDN_LEN
]
;
uint16_t
port
;
char
connType
;
struct
SConnHash
*
prev
;
...
...
@@ -46,7 +46,7 @@ typedef struct {
int64_t
*
lockedBy
;
}
SConnCache
;
static
int
rpcHashConn
(
void
*
handle
,
uint32_t
ip
,
uint16_t
port
,
int8_t
connType
);
static
int
rpcHashConn
(
void
*
handle
,
char
*
fqdn
,
uint16_t
port
,
int8_t
connType
);
static
void
rpcLockCache
(
int64_t
*
lockedBy
);
static
void
rpcUnlockCache
(
int64_t
*
lockedBy
);
static
void
rpcCleanConnCache
(
void
*
handle
,
void
*
tmrId
);
...
...
@@ -114,7 +114,7 @@ void rpcCloseConnCache(void *handle) {
free
(
pCache
);
}
void
rpcAddConnIntoCache
(
void
*
handle
,
void
*
data
,
uint32_t
ip
,
uint16_t
port
,
int8_t
connType
)
{
void
rpcAddConnIntoCache
(
void
*
handle
,
void
*
data
,
char
*
fqdn
,
uint16_t
port
,
int8_t
connType
)
{
int
hash
;
SConnHash
*
pNode
;
SConnCache
*
pCache
;
...
...
@@ -125,9 +125,9 @@ void rpcAddConnIntoCache(void *handle, void *data, uint32_t ip, uint16_t port, i
assert
(
pCache
);
assert
(
data
);
hash
=
rpcHashConn
(
pCache
,
ip
,
port
,
connType
);
hash
=
rpcHashConn
(
pCache
,
fqdn
,
port
,
connType
);
pNode
=
(
SConnHash
*
)
taosMemPoolMalloc
(
pCache
->
connHashMemPool
);
pNode
->
ip
=
ip
;
strcpy
(
pNode
->
fqdn
,
fqdn
)
;
pNode
->
port
=
port
;
pNode
->
connType
=
connType
;
pNode
->
data
=
data
;
...
...
@@ -147,12 +147,12 @@ void rpcAddConnIntoCache(void *handle, void *data, uint32_t ip, uint16_t port, i
pCache
->
total
++
;
tTrace
(
"%p
ip:0x%x:%hu:%d:%d:%p added into cache, connections:%d"
,
data
,
ip
,
port
,
connType
,
hash
,
pNode
,
pCache
->
count
[
hash
]);
tTrace
(
"%p
%s:%hu:%d:%d:%p added into cache, connections:%d"
,
data
,
fqdn
,
port
,
connType
,
hash
,
pNode
,
pCache
->
count
[
hash
]);
return
;
}
void
*
rpcGetConnFromCache
(
void
*
handle
,
uint32_t
ip
,
uint16_t
port
,
int8_t
connType
)
{
void
*
rpcGetConnFromCache
(
void
*
handle
,
char
*
fqdn
,
uint16_t
port
,
int8_t
connType
)
{
int
hash
;
SConnHash
*
pNode
;
SConnCache
*
pCache
;
...
...
@@ -163,7 +163,7 @@ void *rpcGetConnFromCache(void *handle, uint32_t ip, uint16_t port, int8_t connT
uint64_t
time
=
taosGetTimestampMs
();
hash
=
rpcHashConn
(
pCache
,
ip
,
port
,
connType
);
hash
=
rpcHashConn
(
pCache
,
fqdn
,
port
,
connType
);
rpcLockCache
(
pCache
->
lockedBy
+
hash
);
pNode
=
pCache
->
connHashList
[
hash
];
...
...
@@ -174,7 +174,7 @@ void *rpcGetConnFromCache(void *handle, uint32_t ip, uint16_t port, int8_t connT
break
;
}
if
(
pNode
->
ip
==
ip
&&
pNode
->
port
==
port
&&
pNode
->
connType
==
connType
)
break
;
if
(
strcmp
(
pNode
->
fqdn
,
fqdn
)
==
0
&&
pNode
->
port
==
port
&&
pNode
->
connType
==
connType
)
break
;
pNode
=
pNode
->
next
;
}
...
...
@@ -201,7 +201,7 @@ void *rpcGetConnFromCache(void *handle, uint32_t ip, uint16_t port, int8_t connT
rpcUnlockCache
(
pCache
->
lockedBy
+
hash
);
if
(
pData
)
{
tTrace
(
"%p
ip:0x%x:%hu:%d:%d:%p retrieved from cache, connections:%d"
,
pData
,
ip
,
port
,
connType
,
hash
,
pNode
,
pCache
->
count
[
hash
]);
tTrace
(
"%p
%s:%hu:%d:%d:%p retrieved from cache, connections:%d"
,
pData
,
fqdn
,
port
,
connType
,
hash
,
pNode
,
pCache
->
count
[
hash
]);
}
return
pData
;
...
...
@@ -239,7 +239,7 @@ static void rpcRemoveExpiredNodes(SConnCache *pCache, SConnHash *pNode, int hash
pNext
=
pNode
->
next
;
pCache
->
total
--
;
pCache
->
count
[
hash
]
--
;
tTrace
(
"%p
ip:0x%x:%hu:%d:%d:%p removed from cache, connections:%d"
,
pNode
->
data
,
pNode
->
ip
,
pNode
->
port
,
pNode
->
connType
,
hash
,
pNode
,
tTrace
(
"%p
%s:%hu:%d:%d:%p removed from cache, connections:%d"
,
pNode
->
data
,
pNode
->
fqdn
,
pNode
->
port
,
pNode
->
connType
,
hash
,
pNode
,
pCache
->
count
[
hash
]);
taosMemPoolFree
(
pCache
->
connHashMemPool
,
(
char
*
)
pNode
);
pNode
=
pNext
;
...
...
@@ -251,12 +251,16 @@ static void rpcRemoveExpiredNodes(SConnCache *pCache, SConnHash *pNode, int hash
pCache
->
connHashList
[
hash
]
=
NULL
;
}
static
int
rpcHashConn
(
void
*
handle
,
uint32_t
ip
,
uint16_t
port
,
int8_t
connType
)
{
static
int
rpcHashConn
(
void
*
handle
,
char
*
fqdn
,
uint16_t
port
,
int8_t
connType
)
{
SConnCache
*
pCache
=
(
SConnCache
*
)
handle
;
int
hash
=
0
;
char
*
temp
=
fqdn
;
while
(
*
temp
)
{
hash
+=
*
temp
;
++
temp
;
}
hash
=
ip
>>
16
;
hash
+=
(
unsigned
short
)(
ip
&
0xFFFF
);
hash
+=
port
;
hash
+=
connType
;
...
...
src/rpc/src/rpcMain.c
浏览文件 @
93775b1f
...
...
@@ -44,7 +44,6 @@ typedef struct {
int
sessions
;
// number of sessions allowed
int
numOfThreads
;
// number of threads to process incoming messages
int
idleTime
;
// milliseconds;
char
localIp
[
TSDB_IPv4ADDR_LEN
];
uint16_t
localPort
;
int8_t
connType
;
int
index
;
// for UDP server only, round robin for multiple threads
...
...
@@ -101,9 +100,8 @@ typedef struct SRpcConn {
uint16_t
localPort
;
// for UDP only
uint32_t
linkUid
;
// connection unique ID assigned by client
uint32_t
peerIp
;
// peer IP
uint32_t
destIp
;
// server destination IP to handle NAT
uint16_t
peerPort
;
// peer port
char
peer
Ipstr
[
TSDB_IPv4ADDR_LEN
];
// peer IP
string
char
peer
Fqdn
[
TSDB_FQDN_LEN
];
// peer FQDN or ip
string
uint16_t
tranId
;
// outgoing transcation ID, for build message
uint16_t
outTranId
;
// outgoing transcation ID
uint16_t
inTranId
;
// transcation ID for incoming msg
...
...
@@ -140,7 +138,7 @@ int tsRpcOverhead;
#define RPC_CONN_TCPC 3
#define RPC_CONN_TCP 2
void
*
(
*
taosInitConn
[])(
char
*
ip
,
uint16_t
port
,
char
*
label
,
int
threads
,
void
*
fp
,
void
*
shandle
)
=
{
void
*
(
*
taosInitConn
[])(
uint32_t
ip
,
uint16_t
port
,
char
*
label
,
int
threads
,
void
*
fp
,
void
*
shandle
)
=
{
taosInitUdpConnection
,
taosInitUdpConnection
,
taosInitTcpServer
,
...
...
@@ -161,7 +159,7 @@ int (*taosSendData[])(uint32_t ip, uint16_t port, void *data, int len, void *cha
taosSendTcpData
};
void
*
(
*
taosOpenConn
[])(
void
*
shandle
,
void
*
thandle
,
char
*
ip
,
uint16_t
port
)
=
{
void
*
(
*
taosOpenConn
[])(
void
*
shandle
,
void
*
thandle
,
uint32_t
ip
,
uint16_t
port
)
=
{
taosOpenUdpConnection
,
taosOpenUdpConnection
,
NULL
,
...
...
@@ -175,7 +173,7 @@ void (*taosCloseConn[])(void *chandle) = {
taosCloseTcpConnection
};
static
SRpcConn
*
rpcOpenConn
(
SRpcInfo
*
pRpc
,
char
*
peer
IpStr
,
uint16_t
peerPort
,
int8_t
connType
);
static
SRpcConn
*
rpcOpenConn
(
SRpcInfo
*
pRpc
,
char
*
peer
Fqdn
,
uint16_t
peerPort
,
int8_t
connType
);
static
void
rpcCloseConn
(
void
*
thandle
);
static
SRpcConn
*
rpcSetupConnToServer
(
SRpcReqContext
*
pContext
);
static
SRpcConn
*
rpcAllocateClientConn
(
SRpcInfo
*
pRpc
);
...
...
@@ -217,7 +215,6 @@ void *rpcOpen(const SRpcInit *pInit) {
pRpc
->
connType
=
pInit
->
connType
;
pRpc
->
idleTime
=
pInit
->
idleTime
;
pRpc
->
numOfThreads
=
pInit
->
numOfThreads
>
TSDB_MAX_RPC_THREADS
?
TSDB_MAX_RPC_THREADS
:
pInit
->
numOfThreads
;
if
(
pInit
->
localIp
)
strcpy
(
pRpc
->
localIp
,
pInit
->
localIp
);
pRpc
->
localPort
=
pInit
->
localPort
;
pRpc
->
afp
=
pInit
->
afp
;
pRpc
->
sessions
=
pInit
->
sessions
;
...
...
@@ -229,13 +226,13 @@ void *rpcOpen(const SRpcInit *pInit) {
pRpc
->
cfp
=
pInit
->
cfp
;
pRpc
->
afp
=
pInit
->
afp
;
pRpc
->
tcphandle
=
(
*
taosInitConn
[
pRpc
->
connType
|
RPC_CONN_TCP
])(
pRpc
->
localIp
,
pRpc
->
localPort
,
pRpc
->
label
,
pRpc
->
tcphandle
=
(
*
taosInitConn
[
pRpc
->
connType
|
RPC_CONN_TCP
])(
0
,
pRpc
->
localPort
,
pRpc
->
label
,
pRpc
->
numOfThreads
,
rpcProcessMsgFromPeer
,
pRpc
);
pRpc
->
udphandle
=
(
*
taosInitConn
[
pRpc
->
connType
])(
pRpc
->
localIp
,
pRpc
->
localPort
,
pRpc
->
label
,
pRpc
->
udphandle
=
(
*
taosInitConn
[
pRpc
->
connType
])(
0
,
pRpc
->
localPort
,
pRpc
->
label
,
pRpc
->
numOfThreads
,
rpcProcessMsgFromPeer
,
pRpc
);
if
(
pRpc
->
tcphandle
==
NULL
||
pRpc
->
udphandle
==
NULL
)
{
tError
(
"%s failed to init network,
%s:%d"
,
pRpc
->
label
,
pRpc
->
localIp
,
pRpc
->
localPort
);
tError
(
"%s failed to init network,
port:%d"
,
pRpc
->
label
,
pRpc
->
localPort
);
rpcClose
(
pRpc
);
return
NULL
;
}
...
...
@@ -457,7 +454,7 @@ int rpcGetConnInfo(void *thandle, SRpcConnInfo *pInfo) {
pInfo
->
clientIp
=
pConn
->
peerIp
;
pInfo
->
clientPort
=
pConn
->
peerPort
;
pInfo
->
serverIp
=
pConn
->
destIp
;
//
pInfo->serverIp = pConn->destIp;
strcpy
(
pInfo
->
user
,
pConn
->
user
);
return
0
;
...
...
@@ -490,27 +487,32 @@ static void rpcFreeMsg(void *msg) {
}
}
static
SRpcConn
*
rpcOpenConn
(
SRpcInfo
*
pRpc
,
char
*
peer
IpStr
,
uint16_t
peerPort
,
int8_t
connType
)
{
static
SRpcConn
*
rpcOpenConn
(
SRpcInfo
*
pRpc
,
char
*
peer
Fqdn
,
uint16_t
peerPort
,
int8_t
connType
)
{
SRpcConn
*
pConn
;
uint32_t
peerIp
=
taosGetIpFromFqdn
(
peerFqdn
);
if
(
peerIp
==
-
1
)
{
tError
(
"%s, failed to resolve FQDN:%s"
,
pRpc
->
label
,
peerFqdn
);
return
NULL
;
}
pConn
=
rpcAllocateClientConn
(
pRpc
);
if
(
pConn
)
{
strcpy
(
pConn
->
peer
Ipstr
,
peerIpStr
);
pConn
->
peerIp
=
inet_addr
(
peerIpStr
)
;
strcpy
(
pConn
->
peer
Fqdn
,
peerFqdn
);
pConn
->
peerIp
=
peerIp
;
pConn
->
peerPort
=
peerPort
;
strcpy
(
pConn
->
user
,
pRpc
->
user
);
pConn
->
connType
=
connType
;
if
(
taosOpenConn
[
connType
])
{
void
*
shandle
=
(
connType
&
RPC_CONN_TCP
)
?
pRpc
->
tcphandle
:
pRpc
->
udphandle
;
pConn
->
chandle
=
(
*
taosOpenConn
[
connType
])(
shandle
,
pConn
,
pConn
->
peerIp
str
,
pConn
->
peerPort
);
pConn
->
chandle
=
(
*
taosOpenConn
[
connType
])(
shandle
,
pConn
,
pConn
->
peerIp
,
pConn
->
peerPort
);
if
(
pConn
->
chandle
)
{
tTrace
(
"%s %p, rpc connection is set up, sid:%d id:%s
ip:
%s:%hu connType:%d"
,
pRpc
->
label
,
pConn
,
pConn
->
sid
,
pRpc
->
user
,
p
Conn
->
peerIpstr
,
pConn
->
peerPort
,
pConn
->
connType
);
tTrace
(
"%s %p, rpc connection is set up, sid:%d id:%s %s:%hu connType:%d"
,
pRpc
->
label
,
pConn
,
pConn
->
sid
,
pRpc
->
user
,
p
eerFqdn
,
pConn
->
peerPort
,
pConn
->
connType
);
}
else
{
tError
(
"%s %p, failed to set up connection to ip:%s:%hu"
,
pRpc
->
label
,
pConn
,
pConn
->
peerIpstr
,
pConn
->
peerPort
);
tError
(
"%s %p, failed to set up connection to %s:%hu"
,
pRpc
->
label
,
pConn
,
peerFqdn
,
pConn
->
peerPort
);
terrno
=
TSDB_CODE_NETWORK_UNAVAIL
;
rpcCloseConn
(
pConn
);
pConn
=
NULL
;
...
...
@@ -661,12 +663,9 @@ static SRpcConn *rpcSetupConnToServer(SRpcReqContext *pContext) {
SRpcInfo
*
pRpc
=
pContext
->
pRpc
;
SRpcIpSet
*
pIpSet
=
&
pContext
->
ipSet
;
pConn
=
rpcGetConnFromCache
(
pRpc
->
pCache
,
pIpSet
->
ip
[
pIpSet
->
inUse
],
pIpSet
->
port
,
pContext
->
connType
);
pConn
=
rpcGetConnFromCache
(
pRpc
->
pCache
,
pIpSet
->
fqdn
[
pIpSet
->
inUse
],
pIpSet
->
port
[
pIpSet
->
inUse
]
,
pContext
->
connType
);
if
(
pConn
==
NULL
||
pConn
->
user
[
0
]
==
0
)
{
char
ipstr
[
20
]
=
{
0
};
tinet_ntoa
(
ipstr
,
pIpSet
->
ip
[
pIpSet
->
inUse
]);
pConn
=
rpcOpenConn
(
pRpc
,
ipstr
,
pIpSet
->
port
,
pContext
->
connType
);
if
(
pConn
)
pConn
->
destIp
=
pIpSet
->
ip
[
pIpSet
->
inUse
];
pConn
=
rpcOpenConn
(
pRpc
,
pIpSet
->
fqdn
[
pIpSet
->
inUse
],
pIpSet
->
port
[
pIpSet
->
inUse
],
pContext
->
connType
);
}
else
{
tTrace
(
"%s %p, connection is retrieved from cache"
,
pRpc
->
label
,
pConn
);
}
...
...
@@ -789,7 +788,7 @@ static SRpcConn *rpcProcessMsgHead(SRpcInfo *pRpc, SRecvInfo *pRecv) {
pConn
->
peerIp
=
pRecv
->
ip
;
char
ipstr
[
20
]
=
{
0
};
tinet_ntoa
(
ipstr
,
pRecv
->
ip
);
strcpy
(
pConn
->
peer
Ipstr
,
ipstr
);
strcpy
(
pConn
->
peer
Fqdn
,
ipstr
);
}
if
(
pRecv
->
port
)
pConn
->
peerPort
=
pRecv
->
port
;
...
...
@@ -922,7 +921,6 @@ static void rpcProcessIncomingMsg(SRpcConn *pConn, SRpcHead *pHead) {
if
(
rpcIsReq
(
pHead
->
msgType
)
)
{
rpcMsg
.
handle
=
pConn
;
pConn
->
destIp
=
pHead
->
destIp
;
taosTmrReset
(
rpcProcessProgressTimer
,
tsRpcTimer
/
2
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pTimer
);
(
*
(
pRpc
->
cfp
))(
&
rpcMsg
);
}
else
{
...
...
@@ -932,7 +930,7 @@ static void rpcProcessIncomingMsg(SRpcConn *pConn, SRpcHead *pHead) {
pConn
->
pContext
=
NULL
;
// for UDP, port may be changed by server, the port in ipSet shall be used for cache
rpcAddConnIntoCache
(
pRpc
->
pCache
,
pConn
,
pConn
->
peer
Ip
,
pContext
->
ipSet
.
port
,
pConn
->
connType
);
rpcAddConnIntoCache
(
pRpc
->
pCache
,
pConn
,
pConn
->
peer
Fqdn
,
pContext
->
ipSet
.
port
[
pContext
->
ipSet
.
inUse
]
,
pConn
->
connType
);
if
(
pHead
->
code
==
TSDB_CODE_REDIRECT
)
{
pContext
->
redirect
=
1
;
...
...
@@ -1053,7 +1051,6 @@ static void rpcSendReqToServer(SRpcInfo *pRpc, SRpcReqContext *pContext) {
pHead
->
tranId
=
pConn
->
tranId
;
pHead
->
sourceId
=
pConn
->
ownId
;
pHead
->
destId
=
pConn
->
peerId
;
pHead
->
destIp
=
pConn
->
destIp
;
pHead
->
port
=
0
;
pHead
->
linkUid
=
pConn
->
linkUid
;
if
(
!
pConn
->
secured
)
memcpy
(
pHead
->
user
,
pConn
->
user
,
tListLen
(
pHead
->
user
));
...
...
@@ -1081,12 +1078,12 @@ static void rpcSendMsgToPeer(SRpcConn *pConn, void *msg, int msgLen) {
if
(
rpcIsReq
(
pHead
->
msgType
))
{
if
(
pHead
->
msgType
<
TSDB_MSG_TYPE_CM_HEARTBEAT
||
(
rpcDebugFlag
&
16
))
tTrace
(
"%s %p, %s is sent to %s:%hu, len:%d sig:0x%08x:0x%08x:%d"
,
pRpc
->
label
,
pConn
,
taosMsg
[
pHead
->
msgType
],
pConn
->
peer
Ipstr
,
pRpc
->
label
,
pConn
,
taosMsg
[
pHead
->
msgType
],
pConn
->
peer
Fqdn
,
pConn
->
peerPort
,
msgLen
,
pHead
->
sourceId
,
pHead
->
destId
,
pHead
->
tranId
);
}
else
{
if
(
pHead
->
msgType
<
TSDB_MSG_TYPE_CM_HEARTBEAT
||
(
rpcDebugFlag
&
16
))
tTrace
(
"%s %p, %s is sent to %s:%hu, code:0x%x len:%d sig:0x%08x:0x%08x:%d"
,
pRpc
->
label
,
pConn
,
taosMsg
[
pHead
->
msgType
],
pConn
->
peer
Ipstr
,
pConn
->
peerPort
,
pRpc
->
label
,
pConn
,
taosMsg
[
pHead
->
msgType
],
pConn
->
peer
Fqdn
,
pConn
->
peerPort
,
htonl
(
pHead
->
code
),
msgLen
,
pHead
->
sourceId
,
pHead
->
destId
,
pHead
->
tranId
);
}
...
...
@@ -1141,13 +1138,13 @@ static void rpcProcessRetryTimer(void *param, void *tmrId) {
if
(
pConn
->
retry
<
4
)
{
tTrace
(
"%s %p, re-send msg:%s to %s:%hud"
,
pRpc
->
label
,
pConn
,
taosMsg
[
pConn
->
outType
],
pConn
->
peer
Ipstr
,
pConn
->
peerPort
);
taosMsg
[
pConn
->
outType
],
pConn
->
peer
Fqdn
,
pConn
->
peerPort
);
rpcSendMsgToPeer
(
pConn
,
pConn
->
pReqMsg
,
pConn
->
reqMsgLen
);
taosTmrReset
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pTimer
);
}
else
{
// close the connection
tTrace
(
"%s %p, failed to send msg:%s to %s:%hu"
,
pRpc
->
label
,
pConn
,
taosMsg
[
pConn
->
outType
],
pConn
->
peer
Ipstr
,
pConn
->
peerPort
);
taosMsg
[
pConn
->
outType
],
pConn
->
peer
Fqdn
,
pConn
->
peerPort
);
reportDisc
=
1
;
}
}
else
{
...
...
src/rpc/src/rpcTcp.c
浏览文件 @
93775b1f
...
...
@@ -40,7 +40,7 @@ typedef struct SThreadObj {
SFdObj
*
pHead
;
pthread_mutex_t
mutex
;
pthread_cond_t
fdReady
;
char
ipstr
[
TSDB_IPv4ADDR_LEN
]
;
uint32_t
ip
;
int
pollFd
;
int
numOfFds
;
int
threadId
;
...
...
@@ -50,7 +50,7 @@ typedef struct SThreadObj {
}
SThreadObj
;
typedef
struct
{
char
ip
[
TSDB_IPv4ADDR_LEN
]
;
uint32_t
ip
;
uint16_t
port
;
char
label
[
12
];
int
numOfThreads
;
...
...
@@ -65,12 +65,12 @@ static void taosFreeFdObj(SFdObj *pFdObj);
static
void
taosReportBrokenLink
(
SFdObj
*
pFdObj
);
static
void
taosAcceptTcpConnection
(
void
*
arg
);
void
*
taosInitTcpServer
(
char
*
ip
,
uint16_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
)
{
void
*
taosInitTcpServer
(
uint32_t
ip
,
uint16_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
)
{
SServerObj
*
pServerObj
;
SThreadObj
*
pThreadObj
;
pServerObj
=
(
SServerObj
*
)
calloc
(
sizeof
(
SServerObj
),
1
);
strcpy
(
pServerObj
->
ip
,
ip
)
;
pServerObj
->
ip
=
ip
;
pServerObj
->
port
=
port
;
strcpy
(
pServerObj
->
label
,
label
);
pServerObj
->
numOfThreads
=
numOfThreads
;
...
...
@@ -138,7 +138,7 @@ void *taosInitTcpServer(char *ip, uint16_t port, char *label, int numOfThreads,
free
(
pServerObj
);
pServerObj
=
NULL
;
}
else
{
tTrace
(
"%s TCP server is initialized, ip:
%s
port:%hu numOfThreads:%d"
,
label
,
ip
,
port
,
numOfThreads
);
tTrace
(
"%s TCP server is initialized, ip:
0x%x
port:%hu numOfThreads:%d"
,
label
,
ip
,
port
,
numOfThreads
);
}
return
(
void
*
)
pServerObj
;
...
...
@@ -222,14 +222,14 @@ static void taosAcceptTcpConnection(void *arg) {
}
}
void
*
taosInitTcpClient
(
char
*
ip
,
uint16_t
port
,
char
*
label
,
int
num
,
void
*
fp
,
void
*
shandle
)
{
void
*
taosInitTcpClient
(
uint32_t
ip
,
uint16_t
port
,
char
*
label
,
int
num
,
void
*
fp
,
void
*
shandle
)
{
SThreadObj
*
pThreadObj
;
pthread_attr_t
thattr
;
pThreadObj
=
(
SThreadObj
*
)
malloc
(
sizeof
(
SThreadObj
));
memset
(
pThreadObj
,
0
,
sizeof
(
SThreadObj
));
strcpy
(
pThreadObj
->
label
,
label
);
strcpy
(
pThreadObj
->
ipstr
,
ip
)
;
pThreadObj
->
ip
=
ip
;
pThreadObj
->
shandle
=
shandle
;
if
(
pthread_mutex_init
(
&
(
pThreadObj
->
mutex
),
NULL
)
<
0
)
{
...
...
@@ -284,21 +284,19 @@ void taosCleanUpTcpClient(void *chandle) {
tfree
(
pThreadObj
);
}
void
*
taosOpenTcpClientConnection
(
void
*
shandle
,
void
*
thandle
,
char
*
ip
,
uint16_t
port
)
{
void
*
taosOpenTcpClientConnection
(
void
*
shandle
,
void
*
thandle
,
uint32_t
ip
,
uint16_t
port
)
{
SThreadObj
*
pThreadObj
=
shandle
;
struct
in_addr
destIp
;
int
fd
=
taosOpenTcpClientSocket
(
ip
,
port
,
pThreadObj
->
ip
str
);
int
fd
=
taosOpenTcpClientSocket
(
ip
,
port
,
pThreadObj
->
ip
);
if
(
fd
<=
0
)
return
NULL
;
inet_aton
(
ip
,
&
destIp
);
SFdObj
*
pFdObj
=
taosMallocFdObj
(
pThreadObj
,
fd
);
if
(
pFdObj
)
{
pFdObj
->
thandle
=
thandle
;
pFdObj
->
port
=
port
;
pFdObj
->
ip
=
destIp
.
s_addr
;
tTrace
(
"%s %p, TCP connection to
%s
:%hu is created, FD:%p numOfFds:%d"
,
pFdObj
->
ip
=
ip
;
tTrace
(
"%s %p, TCP connection to
0x%x
:%hu is created, FD:%p numOfFds:%d"
,
pThreadObj
->
label
,
thandle
,
ip
,
port
,
pFdObj
,
pThreadObj
->
numOfFds
);
}
else
{
close
(
fd
);
...
...
@@ -403,7 +401,7 @@ static void *taosProcessTcpData(void *param) {
continue
;
}
// tTrace("%s TCP data is received, ip:
%s:%u len:%d", pThreadObj->label, pFdObj->ipstr
, pFdObj->port, msgLen);
// tTrace("%s TCP data is received, ip:
0x%x:%u len:%d", pThreadObj->label, pFdObj->ip
, pFdObj->port, msgLen);
memcpy
(
msg
,
&
rpcHead
,
sizeof
(
SRpcHead
));
recvInfo
.
msg
=
msg
;
...
...
src/rpc/src/rpcUdp.c
浏览文件 @
93775b1f
...
...
@@ -51,7 +51,7 @@ typedef struct {
typedef
struct
{
int
index
;
int
server
;
char
ip
[
16
];
// local IP
uint32_t
ip
;
// local IP
uint16_t
port
;
// local Port
void
*
shandle
;
// handle passed by upper layer during server initialization
int
threads
;
...
...
@@ -77,7 +77,7 @@ static void *taosRecvUdpData(void *param);
static
SUdpBuf
*
taosCreateUdpBuf
(
SUdpConn
*
pConn
,
uint32_t
ip
,
uint16_t
port
);
static
void
taosProcessUdpBufTimer
(
void
*
param
,
void
*
tmrId
);
void
*
taosInitUdpConnection
(
char
*
ip
,
uint16_t
port
,
char
*
label
,
int
threads
,
void
*
fp
,
void
*
shandle
)
{
void
*
taosInitUdpConnection
(
uint32_t
ip
,
uint16_t
port
,
char
*
label
,
int
threads
,
void
*
fp
,
void
*
shandle
)
{
SUdpConn
*
pConn
;
SUdpConnSet
*
pSet
;
...
...
@@ -89,7 +89,7 @@ void *taosInitUdpConnection(char *ip, uint16_t port, char *label, int threads, v
}
memset
(
pSet
,
0
,
(
size_t
)
size
);
strcpy
(
pSet
->
ip
,
ip
)
;
pSet
->
ip
=
ip
;
pSet
->
port
=
port
;
pSet
->
shandle
=
shandle
;
pSet
->
fp
=
fp
;
...
...
@@ -111,7 +111,7 @@ void *taosInitUdpConnection(char *ip, uint16_t port, char *label, int threads, v
ownPort
=
(
port
?
port
+
i
:
0
);
pConn
->
fd
=
taosOpenUdpSocket
(
ip
,
ownPort
);
if
(
pConn
->
fd
<
0
)
{
tError
(
"%s failed to open UDP socket %
s
:%hu"
,
label
,
ip
,
port
);
tError
(
"%s failed to open UDP socket %
x
:%hu"
,
label
,
ip
,
port
);
taosCleanUpUdpConnection
(
pSet
);
return
NULL
;
}
...
...
@@ -157,7 +157,7 @@ void *taosInitUdpConnection(char *ip, uint16_t port, char *label, int threads, v
++
pSet
->
threads
;
}
tTrace
(
"%s UDP connection is initialized, ip:%
s
port:%hu threads:%d"
,
label
,
ip
,
port
,
threads
);
tTrace
(
"%s UDP connection is initialized, ip:%
x
port:%hu threads:%d"
,
label
,
ip
,
port
,
threads
);
return
pSet
;
}
...
...
@@ -190,7 +190,7 @@ void taosCleanUpUdpConnection(void *handle) {
tfree
(
pSet
);
}
void
*
taosOpenUdpConnection
(
void
*
shandle
,
void
*
thandle
,
char
*
ip
,
uint16_t
port
)
{
void
*
taosOpenUdpConnection
(
void
*
shandle
,
void
*
thandle
,
uint32_t
ip
,
uint16_t
port
)
{
SUdpConnSet
*
pSet
=
(
SUdpConnSet
*
)
shandle
;
pSet
->
index
=
(
pSet
->
index
+
1
)
%
pSet
->
threads
;
...
...
@@ -198,7 +198,7 @@ void *taosOpenUdpConnection(void *shandle, void *thandle, char *ip, uint16_t por
SUdpConn
*
pConn
=
pSet
->
udpConn
+
pSet
->
index
;
pConn
->
port
=
port
;
tTrace
(
"%s UDP connection is setup, ip:
%s:%hu, local: %s
:%d"
,
pConn
->
label
,
ip
,
port
,
pSet
->
ip
,
tTrace
(
"%s UDP connection is setup, ip:
%x:%hu, local:%x
:%d"
,
pConn
->
label
,
ip
,
port
,
pSet
->
ip
,
ntohs
((
uint16_t
)
pConn
->
localPort
));
return
pConn
;
...
...
src/rpc/test/rclient.c
浏览文件 @
93775b1f
...
...
@@ -88,13 +88,13 @@ int main(int argc, char *argv[]) {
// server info
ipSet
.
numOfIps
=
1
;
ipSet
.
inUse
=
0
;
ipSet
.
port
=
7000
;
ipSet
.
ip
[
0
]
=
inet_addr
(
serverIp
);
ipSet
.
ip
[
1
]
=
inet_addr
(
"192.168.0.1"
);
ipSet
.
port
[
0
]
=
7000
;
ipSet
.
port
[
1
]
=
7000
;
strcpy
(
ipSet
.
fqdn
[
0
],
serverIp
);
strcpy
(
ipSet
.
fqdn
[
1
],
"192.168.0.1"
);
// client info
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
rpcInit
.
localIp
=
"0.0.0.0"
;
rpcInit
.
localPort
=
0
;
rpcInit
.
label
=
"APP"
;
rpcInit
.
numOfThreads
=
1
;
...
...
@@ -110,11 +110,9 @@ int main(int argc, char *argv[]) {
for
(
int
i
=
1
;
i
<
argc
;
++
i
)
{
if
(
strcmp
(
argv
[
i
],
"-p"
)
==
0
&&
i
<
argc
-
1
)
{
ipSet
.
port
=
atoi
(
argv
[
++
i
]);
ipSet
.
port
[
0
]
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-i"
)
==
0
&&
i
<
argc
-
1
)
{
ipSet
.
ip
[
0
]
=
inet_addr
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-l"
)
==
0
&&
i
<
argc
-
1
)
{
strcpy
(
rpcInit
.
localIp
,
argv
[
++
i
]);
strcpy
(
ipSet
.
fqdn
[
0
],
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-t"
)
==
0
&&
i
<
argc
-
1
)
{
rpcInit
.
numOfThreads
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-m"
)
==
0
&&
i
<
argc
-
1
)
{
...
...
@@ -138,10 +136,9 @@ int main(int argc, char *argv[]) {
}
else
{
printf
(
"
\n
usage: %s [options]
\n
"
,
argv
[
0
]);
printf
(
" [-i ip]: first server IP address, default is:%s
\n
"
,
serverIp
);
printf
(
" [-p port]: server port number, default is:%d
\n
"
,
ipSet
.
port
);
printf
(
" [-p port]: server port number, default is:%d
\n
"
,
ipSet
.
port
[
0
]
);
printf
(
" [-t threads]: number of rpc threads, default is:%d
\n
"
,
rpcInit
.
numOfThreads
);
printf
(
" [-s sessions]: number of rpc sessions, default is:%d
\n
"
,
rpcInit
.
sessions
);
printf
(
" [-l localIp]: local IP address, default is:%s
\n
"
,
rpcInit
.
localIp
);
printf
(
" [-m msgSize]: message body size, default is:%d
\n
"
,
msgSize
);
printf
(
" [-a threads]: number of app threads, default is:%d
\n
"
,
appThreads
);
printf
(
" [-n requests]: number of requests per thread, default is:%d
\n
"
,
numOfReqs
);
...
...
src/rpc/test/rsclient.c
浏览文件 @
93775b1f
...
...
@@ -89,13 +89,14 @@ int main(int argc, char *argv[]) {
// server info
ipSet
.
numOfIps
=
1
;
ipSet
.
inUse
=
0
;
ipSet
.
port
=
7000
;
ipSet
.
ip
[
0
]
=
inet_addr
(
serverIp
);
ipSet
.
ip
[
1
]
=
inet_addr
(
"192.168.0.1"
);
ipSet
.
port
[
0
]
=
7000
;
ipSet
.
port
[
1
]
=
7000
;
strcpy
(
ipSet
.
fqdn
[
0
],
serverIp
);
strcpy
(
ipSet
.
fqdn
[
1
],
"192.168.0.1"
);
// client info
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
rpcInit
.
localIp
=
"0.0.0.0"
;
//
rpcInit.localIp = "0.0.0.0";
rpcInit
.
localPort
=
0
;
rpcInit
.
label
=
"APP"
;
rpcInit
.
numOfThreads
=
1
;
...
...
@@ -111,11 +112,9 @@ int main(int argc, char *argv[]) {
for
(
int
i
=
1
;
i
<
argc
;
++
i
)
{
if
(
strcmp
(
argv
[
i
],
"-p"
)
==
0
&&
i
<
argc
-
1
)
{
ipSet
.
port
=
atoi
(
argv
[
++
i
]);
ipSet
.
port
[
0
]
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-i"
)
==
0
&&
i
<
argc
-
1
)
{
ipSet
.
ip
[
0
]
=
inet_addr
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-l"
)
==
0
&&
i
<
argc
-
1
)
{
strcpy
(
rpcInit
.
localIp
,
argv
[
++
i
]);
strcpy
(
ipSet
.
fqdn
[
0
],
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-t"
)
==
0
&&
i
<
argc
-
1
)
{
rpcInit
.
numOfThreads
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-m"
)
==
0
&&
i
<
argc
-
1
)
{
...
...
@@ -139,10 +138,9 @@ int main(int argc, char *argv[]) {
}
else
{
printf
(
"
\n
usage: %s [options]
\n
"
,
argv
[
0
]);
printf
(
" [-i ip]: first server IP address, default is:%s
\n
"
,
serverIp
);
printf
(
" [-p port]: server port number, default is:%d
\n
"
,
ipSet
.
port
);
printf
(
" [-p port]: server port number, default is:%d
\n
"
,
ipSet
.
port
[
0
]
);
printf
(
" [-t threads]: number of rpc threads, default is:%d
\n
"
,
rpcInit
.
numOfThreads
);
printf
(
" [-s sessions]: number of rpc sessions, default is:%d
\n
"
,
rpcInit
.
sessions
);
printf
(
" [-l localIp]: local IP address, default is:%s
\n
"
,
rpcInit
.
localIp
);
printf
(
" [-m msgSize]: message body size, default is:%d
\n
"
,
msgSize
);
printf
(
" [-a threads]: number of app threads, default is:%d
\n
"
,
appThreads
);
printf
(
" [-n requests]: number of requests per thread, default is:%d
\n
"
,
numOfReqs
);
...
...
src/rpc/test/rserver.c
浏览文件 @
93775b1f
...
...
@@ -126,10 +126,8 @@ void processRequestMsg(SRpcMsg *pMsg) {
int
main
(
int
argc
,
char
*
argv
[])
{
SRpcInit
rpcInit
;
char
dataName
[
20
]
=
"server.data"
;
char
localIp
[
40
]
=
"0.0.0.0"
;
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
rpcInit
.
localIp
=
localIp
;
rpcInit
.
localPort
=
7000
;
rpcInit
.
label
=
"SER"
;
rpcInit
.
numOfThreads
=
1
;
...
...
@@ -141,8 +139,6 @@ int main(int argc, char *argv[]) {
for
(
int
i
=
1
;
i
<
argc
;
++
i
)
{
if
(
strcmp
(
argv
[
i
],
"-p"
)
==
0
&&
i
<
argc
-
1
)
{
rpcInit
.
localPort
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-i"
)
==
0
&&
i
<
argc
-
1
)
{
strcpy
(
rpcInit
.
localIp
,
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-t"
)
==
0
&&
i
<
argc
-
1
)
{
rpcInit
.
numOfThreads
=
atoi
(
argv
[
++
i
]);
}
else
if
(
strcmp
(
argv
[
i
],
"-m"
)
==
0
&&
i
<
argc
-
1
)
{
...
...
@@ -159,7 +155,6 @@ int main(int argc, char *argv[]) {
uDebugFlag
=
rpcDebugFlag
;
}
else
{
printf
(
"
\n
usage: %s [options]
\n
"
,
argv
[
0
]);
printf
(
" [-i ip]: server IP address, default is:%s
\n
"
,
rpcInit
.
localIp
);
printf
(
" [-p port]: server port number, default is:%d
\n
"
,
rpcInit
.
localPort
);
printf
(
" [-t threads]: number of rpc threads, default is:%d
\n
"
,
rpcInit
.
numOfThreads
);
printf
(
" [-s sessions]: number of sessions, default is:%d
\n
"
,
rpcInit
.
sessions
);
...
...
src/tsdb/src/tsdbMain.c
浏览文件 @
93775b1f
...
...
@@ -916,7 +916,7 @@ _exit:
}
static
int
tsdbCommitToFile
(
STsdbRepo
*
pRepo
,
int
fid
,
SSkipListIterator
**
iters
,
SRWHelper
*
pHelper
,
SDataCols
*
pDataCols
)
{
char
dataDir
[
128
]
=
{
0
};
STsdbMeta
*
pMeta
=
pRepo
->
tsdbMeta
;
STsdbFileH
*
pFileH
=
pRepo
->
tsdbFileH
;
STsdbCfg
*
pCfg
=
&
pRepo
->
config
;
...
...
src/util/inc/tsocket.h
浏览文件 @
93775b1f
...
...
@@ -20,44 +20,27 @@
extern
"C"
{
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
int
taosNonblockwrite
(
int
fd
,
char
*
ptr
,
int
nbytes
);
int
taosReadn
(
int
sock
,
char
*
buffer
,
int
len
);
int
taosWriteMsg
(
int
fd
,
void
*
ptr
,
int
nbytes
);
int
taosReadMsg
(
int
fd
,
void
*
ptr
,
int
nbytes
);
int
taosOpenUdpSocket
(
char
*
ip
,
uint16_t
port
);
int
taosOpenTcpClientSocket
(
char
*
ip
,
uint16_t
port
,
char
*
localIp
);
int
taosOpenTcpServerSocket
(
char
*
ip
,
uint16_t
port
);
int
taosKeepTcpAlive
(
int
sockFd
);
void
taosCloseTcpSocket
(
int
sockFd
);
int
taosOpenUDServerSocket
(
char
*
ip
,
uint16_t
port
);
int
taosOpenUDClientSocket
(
char
*
ip
,
uint16_t
port
);
int
taosOpenRawSocket
(
char
*
ip
);
int
taosNonblockwrite
(
int
fd
,
char
*
ptr
,
int
nbytes
);
int
taosCopyFds
(
int
sfd
,
int
dfd
,
int64_t
len
);
int
taosSetNonblocking
(
int
sock
,
int
on
);
int
taosGetPublicIp
(
char
*
const
ip
);
int
taosGetPrivateIp
(
char
*
const
ip
);
int
taosOpenUdpSocket
(
uint32_t
localIp
,
uint16_t
localPort
);
int
taosOpenTcpClientSocket
(
uint32_t
ip
,
uint16_t
port
,
uint32_t
localIp
);
int
taosOpenTcpServerSocket
(
uint32_t
ip
,
uint16_t
port
);
int
taosKeepTcpAlive
(
int
sockFd
);
void
taosCloseTcpSocket
(
int
sockFd
);
void
tinet_ntoa
(
char
*
ipstr
,
unsigned
int
ip
);
int
taosOpenUDServerSocket
(
uint32_t
ip
,
uint16_t
port
);
int
taosOpenUDClientSocket
(
uint32_t
ip
,
uint16_t
port
);
int
taosOpenRawSocket
(
uint32_t
ip
);
int
taosSetNonblocking
(
int
sock
,
int
on
);
int
taosGetFqdn
(
char
*
);
uint32_t
taosGetIpFromFqdn
(
const
char
*
);
void
tinet_ntoa
(
char
*
ipstr
,
unsigned
int
ip
);
uint32_t
ip2uint
(
const
char
*
const
ip_addr
);
#ifdef __cplusplus
}
...
...
src/util/src/hash.c
浏览文件 @
93775b1f
...
...
@@ -540,7 +540,7 @@ bool taosHashIterNext(SHashMutableIterator *pIter) {
}
size_t
size
=
taosHashGetSize
(
pIter
->
pHashObj
);
if
(
size
==
0
||
pIter
->
num
>=
size
)
{
if
(
size
==
0
)
{
return
false
;
}
...
...
src/util/src/tconfig.c
浏览文件 @
93775b1f
...
...
@@ -249,7 +249,7 @@ void taosReadGlobalLogCfg() {
}
wordfree
(
&
full_path
);
taosReadLogOption
(
"
logDir"
,
l
ogDir
);
taosReadLogOption
(
"
tsLogDir"
,
tsL
ogDir
);
sprintf
(
fileName
,
"%s/taos.cfg"
,
configDir
);
fp
=
fopen
(
fileName
,
"r"
);
...
...
src/util/src/tlog.c
浏览文件 @
93775b1f
...
...
@@ -66,7 +66,7 @@ int32_t tsAsyncLog = 1;
float
tsTotalLogDirGB
=
0
;
float
tsAvailLogDirGB
=
0
;
float
tsMinimalLogDirGB
=
0
.
1
;
char
l
ogDir
[
TSDB_FILENAME_LEN
]
=
"/var/log/taos"
;
char
tsL
ogDir
[
TSDB_FILENAME_LEN
]
=
"/var/log/taos"
;
static
SLogObj
tsLogObj
=
{
.
fileNum
=
1
};
static
void
*
taosAsyncOutputLog
(
void
*
param
);
...
...
@@ -298,7 +298,7 @@ static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum) {
void
taosPrintLog
(
const
char
*
const
flags
,
int32_t
dflag
,
const
char
*
const
format
,
...)
{
if
(
tsTotalLogDirGB
!=
0
&&
tsAvailLogDirGB
<
tsMinimalLogDirGB
)
{
printf
(
"server disk:%s space remain %.3f GB, total %.1f GB, stop print log.
\n
"
,
l
ogDir
,
tsAvailLogDirGB
,
tsTotalLogDirGB
);
printf
(
"server disk:%s space remain %.3f GB, total %.1f GB, stop print log.
\n
"
,
tsL
ogDir
,
tsAvailLogDirGB
,
tsTotalLogDirGB
);
fflush
(
stdout
);
return
;
}
...
...
@@ -356,7 +356,7 @@ void taosPrintLog(const char *const flags, int32_t dflag, const char *const form
void
taosDumpData
(
unsigned
char
*
msg
,
int32_t
len
)
{
if
(
tsTotalLogDirGB
!=
0
&&
tsAvailLogDirGB
<
tsMinimalLogDirGB
)
{
printf
(
"server disk:%s space remain %.3f GB, total %.1f GB, stop dump log.
\n
"
,
l
ogDir
,
tsAvailLogDirGB
,
tsTotalLogDirGB
);
printf
(
"server disk:%s space remain %.3f GB, total %.1f GB, stop dump log.
\n
"
,
tsL
ogDir
,
tsAvailLogDirGB
,
tsTotalLogDirGB
);
fflush
(
stdout
);
return
;
}
...
...
@@ -385,7 +385,7 @@ void taosDumpData(unsigned char *msg, int32_t len) {
void
taosPrintLongString
(
const
char
*
const
flags
,
int32_t
dflag
,
const
char
*
const
format
,
...)
{
if
(
tsTotalLogDirGB
!=
0
&&
tsAvailLogDirGB
<
tsMinimalLogDirGB
)
{
printf
(
"server disk:%s space remain %.3f GB, total %.1f GB, stop write log.
\n
"
,
l
ogDir
,
tsAvailLogDirGB
,
tsTotalLogDirGB
);
printf
(
"server disk:%s space remain %.3f GB, total %.1f GB, stop write log.
\n
"
,
tsL
ogDir
,
tsAvailLogDirGB
,
tsTotalLogDirGB
);
fflush
(
stdout
);
return
;
}
...
...
src/util/src/tnote.c
浏览文件 @
93775b1f
...
...
@@ -27,10 +27,10 @@ void taosInitNote(int numOfNoteLines, int maxNotes, char* lable)
if
(
strcasecmp
(
lable
,
"http_note"
)
==
0
)
{
pNote
=
&
m_HttpNote
;
sprintf
(
temp
,
"%s/httpnote"
,
l
ogDir
);
sprintf
(
temp
,
"%s/httpnote"
,
tsL
ogDir
);
}
else
if
(
strcasecmp
(
lable
,
"tsc_note"
)
==
0
)
{
pNote
=
&
m_TscNote
;
sprintf
(
temp
,
"%s/tscnote-%d"
,
l
ogDir
,
getpid
());
sprintf
(
temp
,
"%s/tscnote-%d"
,
tsL
ogDir
,
getpid
());
}
else
{
return
;
}
...
...
src/util/src/tsocket.c
浏览文件 @
93775b1f
...
...
@@ -19,89 +19,23 @@
#include "tsocket.h"
#include "tutil.h"
/*
* Function to get the public ip address of current machine. If get IP
* successfully, return 0, else, return -1. The return values is ip.
*
* Use:
* if (taosGetPublicIp(ip) != 0) {
* perror("Fail to get public IP address\n");
* exit(EXIT_FAILURE);
* }
*/
int
taosGetPublicIp
(
char
*
const
ip
)
{
/* bool flag; */
int
flag
;
int
sock
;
char
**
pptr
=
NULL
;
struct
sockaddr_in
destAddr
;
struct
hostent
*
ptr
=
NULL
;
char
destIP
[
128
];
char
szBuffer
[]
=
{
"GET / HTTP/1.1
\n
Host: ident.me
\n
User-Agent: curl/7.47.0
\n
Accept: "
"*/*
\n\n
"
};
char
res
[
1024
];
// Create socket
sock
=
(
int
)
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
if
(
sock
==
-
1
)
{
return
-
1
;
}
bzero
((
void
*
)
&
destAddr
,
sizeof
(
destAddr
));
destAddr
.
sin_family
=
AF_INET
;
destAddr
.
sin_port
=
htons
(
80
);
ptr
=
gethostbyname
(
"ident.me"
);
if
(
ptr
==
NULL
)
{
return
-
1
;
}
// Loop to find a valid IP address
for
(
flag
=
0
,
pptr
=
ptr
->
h_addr_list
;
NULL
!=
*
pptr
;
++
pptr
)
{
inet_ntop
(
ptr
->
h_addrtype
,
*
pptr
,
destIP
,
sizeof
(
destIP
));
destAddr
.
sin_addr
.
s_addr
=
inet_addr
(
destIP
);
if
(
connect
(
sock
,
(
struct
sockaddr
*
)
&
destAddr
,
sizeof
(
struct
sockaddr
))
!=
-
1
)
{
flag
=
1
;
break
;
}
}
// Check if the host is available.
if
(
flag
==
0
)
{
return
-
1
;
}
// Check send.
if
(
strlen
(
szBuffer
)
!=
taosWriteSocket
(
sock
,
szBuffer
,
(
size_t
)
strlen
(
szBuffer
)))
{
return
-
1
;
}
// Receive response.
if
(
taosReadSocket
(
sock
,
res
,
1024
)
==
-
1
)
{
return
-
1
;
}
// Extract the IP address from the response.
int
c_start
=
0
,
c_end
=
0
;
for
(;
c_start
<
(
int
)
strlen
(
res
);
c_start
=
c_end
+
1
)
{
for
(
c_end
=
c_start
;
c_end
<
(
int
)
strlen
(
res
)
&&
res
[
c_end
]
!=
'\n'
;
c_end
++
)
{
}
if
(
c_end
>=
(
int
)
strlen
(
res
))
{
return
-
1
;
}
if
(
res
[
c_start
]
>=
'0'
&&
res
[
c_start
]
<=
'9'
)
{
strncpy
(
ip
,
res
+
c_start
,
(
size_t
)(
c_end
-
c_start
));
ip
[
c_end
-
c_start
]
=
'\0'
;
break
;
}
}
int
taosGetFqdn
(
char
*
fqdn
)
{
char
hostname
[
1024
];
hostname
[
1023
]
=
'\0'
;
gethostname
(
hostname
,
1023
);
struct
hostent
*
h
;
h
=
gethostbyname
(
hostname
);
strcpy
(
fqdn
,
h
->
h_name
);
return
0
;
}
uint32_t
taosGetIpFromFqdn
(
const
char
*
fqdn
)
{
struct
hostent
*
record
=
gethostbyname
(
fqdn
);
if
(
record
==
NULL
)
return
-
1
;
return
((
struct
in_addr
*
)
record
->
h_addr
)
->
s_addr
;
}
// Function converting an IP address string to an unsigned int.
uint32_t
ip2uint
(
const
char
*
const
ip_addr
)
{
char
ip_addr_cpy
[
20
];
...
...
@@ -259,7 +193,7 @@ int taosReadn(int fd, char *ptr, int nbytes) {
return
(
nbytes
-
nleft
);
}
int
taosOpenUdpSocket
(
char
*
ip
,
uint16_t
port
)
{
int
taosOpenUdpSocket
(
uint32_t
ip
,
uint16_t
port
)
{
struct
sockaddr_in
localAddr
;
int
sockFd
;
int
ttl
=
128
;
...
...
@@ -270,7 +204,7 @@ int taosOpenUdpSocket(char *ip, uint16_t port) {
memset
((
char
*
)
&
localAddr
,
0
,
sizeof
(
localAddr
));
localAddr
.
sin_family
=
AF_INET
;
localAddr
.
sin_addr
.
s_addr
=
i
net_addr
(
ip
)
;
localAddr
.
sin_addr
.
s_addr
=
i
p
;
localAddr
.
sin_port
=
(
uint16_t
)
htons
(
port
);
if
((
sockFd
=
(
int
)
socket
(
AF_INET
,
SOCK_DGRAM
,
0
))
<
0
)
{
...
...
@@ -325,13 +259,11 @@ int taosOpenUdpSocket(char *ip, uint16_t port) {
return
sockFd
;
}
int
taosOpenTcpClientSocket
(
char
*
destIp
,
uint16_t
destPort
,
char
*
clientIp
)
{
int
taosOpenTcpClientSocket
(
uint32_t
destIp
,
uint16_t
destPort
,
uint32_t
clientIp
)
{
int
sockFd
=
0
;
struct
sockaddr_in
serverAddr
,
clientAddr
;
int
ret
;
// uTrace("open tcp client socket:%s:%d, local Ip:%s", destIp, destPort, clientIp);
sockFd
=
(
int
)
socket
(
PF_INET
,
SOCK_STREAM
,
IPPROTO_TCP
);
if
(
sockFd
<
0
)
{
...
...
@@ -339,16 +271,16 @@ int taosOpenTcpClientSocket(char *destIp, uint16_t destPort, char *clientIp) {
return
-
1
;
}
if
(
clientIp
&&
clientIp
[
0
]
&&
clientIp
[
0
]
!=
'0'
)
{
if
(
clientIp
!=
0
)
{
memset
((
char
*
)
&
clientAddr
,
0
,
sizeof
(
clientAddr
));
clientAddr
.
sin_family
=
AF_INET
;
clientAddr
.
sin_addr
.
s_addr
=
inet_addr
(
clientIp
)
;
clientAddr
.
sin_addr
.
s_addr
=
clientIp
;
clientAddr
.
sin_port
=
0
;
/* bind socket to client address */
if
(
bind
(
sockFd
,
(
struct
sockaddr
*
)
&
clientAddr
,
sizeof
(
clientAddr
))
<
0
)
{
uError
(
"bind tcp client socket failed, client(
%s:0), dest(%s:%d), reason:%d
(%s)"
,
clientIp
,
destIp
,
destPort
,
errno
,
strerror
(
errno
));
uError
(
"bind tcp client socket failed, client(
0x%x:0), dest(0x%x:%d), reason:
(%s)"
,
clientIp
,
destIp
,
destPort
,
strerror
(
errno
));
close
(
sockFd
);
return
-
1
;
}
...
...
@@ -356,13 +288,13 @@ int taosOpenTcpClientSocket(char *destIp, uint16_t destPort, char *clientIp) {
memset
((
char
*
)
&
serverAddr
,
0
,
sizeof
(
serverAddr
));
serverAddr
.
sin_family
=
AF_INET
;
serverAddr
.
sin_addr
.
s_addr
=
inet_addr
(
destIp
)
;
serverAddr
.
sin_addr
.
s_addr
=
destIp
;
serverAddr
.
sin_port
=
(
uint16_t
)
htons
((
uint16_t
)
destPort
);
ret
=
connect
(
sockFd
,
(
struct
sockaddr
*
)
&
serverAddr
,
sizeof
(
serverAddr
));
if
(
ret
!=
0
)
{
//uError("failed to connect socket, ip:
%s, port:%hu, reason: %s
", destIp, destPort, strerror(errno));
//uError("failed to connect socket, ip:
0x%x, port:%hu(%s)
", destIp, destPort, strerror(errno));
taosCloseSocket
(
sockFd
);
sockFd
=
-
1
;
}
...
...
@@ -420,7 +352,7 @@ int taosKeepTcpAlive(int sockFd) {
return
0
;
}
int
taosOpenTcpServerSocket
(
char
*
ip
,
uint16_t
port
)
{
int
taosOpenTcpServerSocket
(
uint32_t
ip
,
uint16_t
port
)
{
struct
sockaddr_in
serverAdd
;
int
sockFd
;
int
reuse
;
...
...
@@ -429,7 +361,7 @@ int taosOpenTcpServerSocket(char *ip, uint16_t port) {
bzero
((
char
*
)
&
serverAdd
,
sizeof
(
serverAdd
));
serverAdd
.
sin_family
=
AF_INET
;
serverAdd
.
sin_addr
.
s_addr
=
i
net_addr
(
ip
)
;
serverAdd
.
sin_addr
.
s_addr
=
i
p
;
serverAdd
.
sin_port
=
(
uint16_t
)
htons
(
port
);
if
((
sockFd
=
(
int
)
socket
(
AF_INET
,
SOCK_STREAM
,
IPPROTO_TCP
))
<
0
)
{
...
...
@@ -447,7 +379,7 @@ int taosOpenTcpServerSocket(char *ip, uint16_t port) {
/* bind socket to server address */
if
(
bind
(
sockFd
,
(
struct
sockaddr
*
)
&
serverAdd
,
sizeof
(
serverAdd
))
<
0
)
{
uError
(
"bind tcp server socket failed,
%s:%hu, reason:%d(%s)"
,
ip
,
port
,
errno
,
strerror
(
errno
));
uError
(
"bind tcp server socket failed,
0x%x:%hu(%s)"
,
ip
,
port
,
strerror
(
errno
));
close
(
sockFd
);
return
-
1
;
}
...
...
@@ -455,14 +387,14 @@ int taosOpenTcpServerSocket(char *ip, uint16_t port) {
if
(
taosKeepTcpAlive
(
sockFd
)
<
0
)
return
-
1
;
if
(
listen
(
sockFd
,
10
)
<
0
)
{
uError
(
"listen tcp server socket failed,
%s:%hu, reason:%d(%s)"
,
ip
,
port
,
errno
,
strerror
(
errno
));
uError
(
"listen tcp server socket failed,
0x%x:%hu(%s)"
,
ip
,
port
,
strerror
(
errno
));
return
-
1
;
}
return
sockFd
;
}
int
taosOpenRawSocket
(
char
*
ip
)
{
int
taosOpenRawSocket
(
uint32_t
ip
)
{
int
fd
,
hold
;
struct
sockaddr_in
rawAdd
;
...
...
@@ -483,10 +415,10 @@ int taosOpenRawSocket(char *ip) {
bzero
((
char
*
)
&
rawAdd
,
sizeof
(
rawAdd
));
rawAdd
.
sin_family
=
AF_INET
;
rawAdd
.
sin_addr
.
s_addr
=
i
net_addr
(
ip
)
;
rawAdd
.
sin_addr
.
s_addr
=
i
p
;
if
(
bind
(
fd
,
(
struct
sockaddr
*
)
&
rawAdd
,
sizeof
(
rawAdd
))
<
0
)
{
uError
(
"failed to bind RAW socket:
%d (%s)"
,
errno
,
strerror
(
errno
));
uError
(
"failed to bind RAW socket:
(%s)"
,
strerror
(
errno
));
close
(
fd
);
return
-
1
;
}
...
...
src/vnode/src/vnodeMain.c
浏览文件 @
93775b1f
...
...
@@ -311,7 +311,7 @@ void *vnodeGetWqueue(int32_t vgId) {
SVnodeObj
*
pVnode
=
vnodeAccquireVnode
(
vgId
);
if
(
pVnode
==
NULL
)
return
NULL
;
return
pVnode
->
wqueue
;
}
}
void
*
vnodeGetWal
(
void
*
pVnode
)
{
return
((
SVnodeObj
*
)
pVnode
)
->
wal
;
...
...
@@ -341,10 +341,13 @@ static void vnodeBuildVloadMsg(char *pNode, void * param) {
}
static
void
vnodeCleanUp
(
SVnodeObj
*
pVnode
)
{
taosDeleteIntHash
(
tsDnodeVnodesHash
,
pVnode
->
vgId
);
//syncStop(pVnode->sync);
if
(
pVnode
->
sync
)
{
syncStop
(
pVnode
->
sync
);
pVnode
->
sync
=
NULL
;
}
tsdbCloseRepo
(
pVnode
->
tsdb
);
walClose
(
pVnode
->
wal
);
vnodeSaveVersion
(
pVnode
);
...
...
@@ -379,11 +382,11 @@ static int32_t vnodeSaveCfg(SMDCreateVnodeMsg *pVnodeCfg) {
sprintf
(
cfgFile
,
"%s/vnode%d/config.json"
,
tsVnodeDir
,
pVnodeCfg
->
cfg
.
vgId
);
FILE
*
fp
=
fopen
(
cfgFile
,
"w"
);
if
(
!
fp
)
{
dError
(
"vgId:%d, failed to open vnode cfg file for write, error:%s"
,
pVnodeCfg
->
cfg
.
vgId
,
strerror
(
errno
));
dError
(
"vgId:%d, failed to open vnode cfg file for write, file:%s error:%s"
,
pVnodeCfg
->
cfg
.
vgId
,
cfgFile
,
strerror
(
errno
));
return
errno
;
}
char
ipStr
[
20
];
int32_t
len
=
0
;
int32_t
maxLen
=
1000
;
char
*
content
=
calloc
(
1
,
maxLen
+
1
);
...
...
@@ -408,19 +411,10 @@ static int32_t vnodeSaveCfg(SMDCreateVnodeMsg *pVnodeCfg) {
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
wals
\"
: %d,
\n
"
,
pVnodeCfg
->
cfg
.
wals
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
quorum
\"
: %d,
\n
"
,
pVnodeCfg
->
cfg
.
quorum
);
uint32_t
ipInt
=
pVnodeCfg
->
cfg
.
arbitratorIp
;
sprintf
(
ipStr
,
"%u.%u.%u.%u"
,
ipInt
&
0xFF
,
(
ipInt
>>
8
)
&
0xFF
,
(
ipInt
>>
16
)
&
0xFF
,
(
uint8_t
)(
ipInt
>>
24
));
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
arbitratorIp
\"
:
\"
%s
\"
,
\n
"
,
ipStr
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeInfos
\"
: [{
\n
"
);
for
(
int32_t
i
=
0
;
i
<
pVnodeCfg
->
cfg
.
replications
;
i
++
)
{
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeId
\"
: %d,
\n
"
,
pVnodeCfg
->
nodes
[
i
].
nodeId
);
uint32_t
ipInt
=
pVnodeCfg
->
nodes
[
i
].
nodeIp
;
sprintf
(
ipStr
,
"%u.%u.%u.%u"
,
ipInt
&
0xFF
,
(
ipInt
>>
8
)
&
0xFF
,
(
ipInt
>>
16
)
&
0xFF
,
(
uint8_t
)(
ipInt
>>
24
));
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeIp
\"
:
\"
%s
\"
,
\n
"
,
ipStr
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeName
\"
:
\"
%s
\"\n
"
,
pVnodeCfg
->
nodes
[
i
].
nodeName
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
nodeEp
\"
:
\"
%s
\"\n
"
,
pVnodeCfg
->
nodes
[
i
].
nodeEp
);
if
(
i
<
pVnodeCfg
->
cfg
.
replications
-
1
)
{
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
" },{
\n
"
);
...
...
@@ -444,7 +438,8 @@ static int32_t vnodeReadCfg(SVnodeObj *pVnode) {
sprintf
(
cfgFile
,
"%s/vnode%d/config.json"
,
tsVnodeDir
,
pVnode
->
vgId
);
FILE
*
fp
=
fopen
(
cfgFile
,
"r"
);
if
(
!
fp
)
{
dError
(
"pVnode:%p vgId:%d, failed to open vnode cfg file for read, error:%s"
,
pVnode
,
pVnode
->
vgId
,
strerror
(
errno
));
dError
(
"pVnode:%p vgId:%d, failed to open vnode cfg file for read, file:%s, error:%s"
,
pVnode
,
pVnode
->
vgId
,
cfgFile
,
strerror
(
errno
));
return
errno
;
}
...
...
@@ -585,13 +580,6 @@ static int32_t vnodeReadCfg(SVnodeObj *pVnode) {
}
pVnode
->
syncCfg
.
quorum
=
(
int8_t
)
quorum
->
valueint
;
cJSON
*
arbitratorIp
=
cJSON_GetObjectItem
(
root
,
"arbitratorIp"
);
if
(
!
arbitratorIp
||
arbitratorIp
->
type
!=
cJSON_String
||
arbitratorIp
->
valuestring
==
NULL
)
{
dError
(
"pVnode:%p vgId:%d, failed to read vnode cfg, arbitratorIp not found"
,
pVnode
,
pVnode
->
vgId
);
goto
PARSE_OVER
;
}
pVnode
->
syncCfg
.
arbitratorIp
=
inet_addr
(
arbitratorIp
->
valuestring
);
cJSON
*
nodeInfos
=
cJSON_GetObjectItem
(
root
,
"nodeInfos"
);
if
(
!
nodeInfos
||
nodeInfos
->
type
!=
cJSON_Array
)
{
dError
(
"pVnode:%p vgId:%d, failed to read vnode cfg, nodeInfos not found"
,
pVnode
,
pVnode
->
vgId
);
...
...
@@ -615,27 +603,22 @@ static int32_t vnodeReadCfg(SVnodeObj *pVnode) {
}
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodeId
=
nodeId
->
valueint
;
cJSON
*
node
Ip
=
cJSON_GetObjectItem
(
nodeInfo
,
"nodeI
p"
);
if
(
!
node
Ip
||
nodeIp
->
type
!=
cJSON_String
||
nodeI
p
->
valuestring
==
NULL
)
{
dError
(
"pVnode:%p vgId:%d, failed to read vnode cfg, node
Ip
not found"
,
pVnode
,
pVnode
->
vgId
);
cJSON
*
node
Ep
=
cJSON_GetObjectItem
(
nodeInfo
,
"nodeE
p"
);
if
(
!
node
Ep
||
nodeEp
->
type
!=
cJSON_String
||
nodeE
p
->
valuestring
==
NULL
)
{
dError
(
"pVnode:%p vgId:%d, failed to read vnode cfg, node
Fqdn
not found"
,
pVnode
,
pVnode
->
vgId
);
goto
PARSE_OVER
;
}
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodeIp
=
inet_addr
(
nodeIp
->
valuestring
);
cJSON
*
nodeName
=
cJSON_GetObjectItem
(
nodeInfo
,
"nodeName"
);
if
(
!
nodeName
||
nodeName
->
type
!=
cJSON_String
||
nodeName
->
valuestring
==
NULL
)
{
dError
(
"pVnode:%p vgId:%d, failed to read vnode cfg, nodeName not found"
,
pVnode
,
pVnode
->
vgId
);
goto
PARSE_OVER
;
}
strncpy
(
pVnode
->
syncCfg
.
nodeInfo
[
i
].
name
,
nodeName
->
valuestring
,
TSDB_NODE_NAME_LEN
);
taosGetFqdnPortFromEp
(
nodeEp
->
valuestring
,
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodeFqdn
,
&
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodePort
);
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodePort
+=
TSDB_PORT_SYNC
;
}
ret
=
0
;
dPrint
(
"pVnode:%p vgId:%d, read vnode cfg successed, replcia:%d"
,
pVnode
,
pVnode
->
vgId
,
pVnode
->
syncCfg
.
replica
);
for
(
int32_t
i
=
0
;
i
<
pVnode
->
syncCfg
.
replica
;
i
++
)
{
dPrint
(
"pVnode:%p vgId:%d, dnode:%d,
ip:%s name:%s
"
,
pVnode
,
pVnode
->
vgId
,
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodeId
,
taosIpStr
(
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodeIp
),
pVnode
->
syncCfg
.
nodeInfo
[
i
].
name
);
dPrint
(
"pVnode:%p vgId:%d, dnode:%d,
%s:%d
"
,
pVnode
,
pVnode
->
vgId
,
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodeId
,
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodeFqdn
,
pVnode
->
syncCfg
.
nodeInfo
[
i
].
nodePort
);
}
PARSE_OVER:
...
...
@@ -645,13 +628,13 @@ PARSE_OVER:
return
ret
;
}
static
int32_t
vnodeSaveVersion
(
SVnodeObj
*
pVnode
)
{
char
versionFile
[
TSDB_FILENAME_LEN
+
30
]
=
{
0
};
sprintf
(
versionFile
,
"%s/vnode%d/version.json"
,
tsVnodeDir
,
pVnode
->
vgId
);
FILE
*
fp
=
fopen
(
versionFile
,
"w"
);
if
(
!
fp
)
{
dError
(
"pVnode:%p vgId:%d, failed to open vnode version file for write, error:%s"
,
pVnode
,
pVnode
->
vgId
,
strerror
(
errno
));
dError
(
"pVnode:%p vgId:%d, failed to open vnode version file for write, file:%s error:%s"
,
pVnode
,
pVnode
->
vgId
,
versionFile
,
strerror
(
errno
));
return
errno
;
}
...
...
@@ -667,7 +650,7 @@ static int32_t vnodeSaveVersion(SVnodeObj *pVnode) {
fclose
(
fp
);
free
(
content
);
dPrint
(
"pVnode:%p vgId:%d, save vnode version
successed"
,
pVnode
,
pVnode
->
vgId
);
dPrint
(
"pVnode:%p vgId:%d, save vnode version
:%"
PRId64
" successed"
,
pVnode
,
pVnode
->
vgId
,
pVnode
->
version
);
return
0
;
}
...
...
@@ -675,9 +658,10 @@ static int32_t vnodeSaveVersion(SVnodeObj *pVnode) {
static
bool
vnodeReadVersion
(
SVnodeObj
*
pVnode
)
{
char
versionFile
[
TSDB_FILENAME_LEN
+
30
]
=
{
0
};
sprintf
(
versionFile
,
"%s/vnode%d/version.json"
,
tsVnodeDir
,
pVnode
->
vgId
);
FILE
*
fp
=
fopen
(
versionFile
,
"
w
"
);
FILE
*
fp
=
fopen
(
versionFile
,
"
r
"
);
if
(
!
fp
)
{
dError
(
"pVnode:%p vgId:%d, failed to open vnode version file for write, error:%s"
,
pVnode
,
pVnode
->
vgId
,
strerror
(
errno
));
dTrace
(
"pVnode:%p vgId:%d, failed to open version file:%s error:%s"
,
pVnode
,
pVnode
->
vgId
,
versionFile
,
strerror
(
errno
));
return
false
;
}
...
...
@@ -714,4 +698,4 @@ PARSE_OVER:
cJSON_Delete
(
root
);
fclose
(
fp
);
return
ret
;
}
\ No newline at end of file
}
tests/script/sh/exec_up.sh
浏览文件 @
93775b1f
...
...
@@ -70,24 +70,15 @@ if [ "$CLEAR_OPTION" = "clear" ]; then
rm
-rf
$MGMT_DIR
fi
if
[
"
$SHELL_OPTION
"
=
"true"
]
;
then
if
[
"
$EXEC_OPTON
"
=
"start"
]
;
then
echo
"ExcuteCmd:"
$EXE_DIR
/taos
-c
$CFG_DIR
-u
$USERS
-p
$EXE_DIR
/taos
-c
$CFG_DIR
-u
$USERS
-p
if
[
"
$EXEC_OPTON
"
=
"start"
]
;
then
echo
"ExcuteCmd:"
$EXE_DIR
/taosd
-c
$CFG_DIR
if
[
"
$SHELL_OPTION
"
=
"true"
]
;
then
nohup
valgrind
--log-file
=
${
LOG_DIR
}
/valgrind.log
--tool
=
memcheck
--leak-check
=
full
--show-reachable
=
no
--track-origins
=
yes
--show-leak-kinds
=
all
-v
--workaround-gcc296-bugs
=
yes
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
else
#relative path
RCFG_DIR
=
sim/
$NODE_NAME
/cfg
PID
=
`
ps
-ef
|grep
-v
taosd |
grep
taos |
grep
$RCFG_DIR
|
grep
-v
grep
|
awk
'{print $2}'
`
if
[
-n
"
$PID
"
]
;
then
sudo kill
-9
$PID
fi
nohup
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
fi
return
fi
if
[
"
$EXEC_OPTON
"
=
"start"
]
;
then
echo
"ExcuteCmd:"
$EXE_DIR
/taosd
-c
$CFG_DIR
nohup
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
#TT=`date +%s`
#mkdir ${LOG_DIR}/${TT}
#echo valgrind --log-file=${LOG_DIR}/${TT}/valgrind.log --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes $EXE_DIR/taosd -c $CFG_DIR
...
...
tests/script/unique/db/commit.sim
浏览文件 @
93775b1f
...
...
@@ -17,13 +17,13 @@ system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4
system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4
print ========= start dnode1 as master
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sleep 3000
print ========= start other dnodes
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sleep 3000
print ======== step1 create db
...
...
@@ -50,9 +50,9 @@ if $data01 != 40 then
endi
print ======== step2 stop dnode
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
sleep 5000
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sleep 3000
sql select * from tb order by ts desc
...
...
@@ -101,9 +101,9 @@ if $data01 != 40 then
endi
print ======== step5 stop dnode
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
sleep 5000
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sleep 3000
sql select * from tb
...
...
tests/script/unique/db/delete.sim
浏览文件 @
93775b1f
...
...
@@ -20,12 +20,12 @@ system sh/cfg.sh -n dnode2 -c cacheBlockSize -v 200
system sh/cfg.sh -n dnode3 -c cacheBlockSize -v 200
print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sql create dnode 192.168.0.3
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sleep 3000
print ======== step1
...
...
tests/script/unique/db/delete_part.sim
浏览文件 @
93775b1f
...
...
@@ -35,10 +35,10 @@ system sh/cfg.sh -n dnode3 -c tables -v 4
system sh/cfg.sh -n dnode4 -c tables -v 4
print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sleep 3000
$loop = 0
...
...
@@ -59,13 +59,13 @@ begin:
endw
print ======== step2
system sh/exec.sh -n dnode2 -s stop
system sh/exec
_up
.sh -n dnode2 -s stop
sql drop database $db
print ======== step3
sleep 3000
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sleep 20000
print ===> test times : $loop
...
...
tests/script/unique/db/replica_add12.sim
浏览文件 @
93775b1f
...
...
@@ -145,7 +145,9 @@ if $rows != 2 then
return -1
endi
sql reset query cache
sleep 2000
print ========= step5
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
sleep 5000
...
...
@@ -155,7 +157,7 @@ if $rows != 2 then
return -1
endi
sql select * from d2.t2
sql select * from d2.t2
if $rows != 2 then
return -1
endi
...
...
@@ -172,11 +174,12 @@ endi
print ===== insert data
sql insert into d1.t1 values(now, 3)
sql insert into d2.t2 values(now, 3)
# no master
sql_error insert into d2.t2 values(now, 3)
sql insert into d3.t3 values(now, 3)
sql insert into d4.t4 values(now, 3)
# no master
sql_error insert into d4.t4 values(now, 3)
sql select * from d1.t1
if $rows != 3 then
...
...
@@ -184,7 +187,7 @@ if $rows != 3 then
endi
sql select * from d2.t2
if $rows !=
3
then
if $rows !=
2
then
return -1
endi
...
...
@@ -194,32 +197,49 @@ if $rows != 3 then
endi
sql select * from d4.t4
if $rows !=
3
then
if $rows !=
2
then
return -1
endi
print ========= step6
system sh/exec_up.sh -n dnode2 -s start
sleep 10000
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
sleep 10000
sql insert into d1.t1 values(now, 4)
sql insert into d2.t2 values(now, 4)
sql insert into d3.t3 values(now, 4)
sql insert into d4.t4 values(now, 4)
sleep 5000
sql insert into d2.t2 values(now, 3)
sql insert into d4.t4 values(now, 3)
sql select * from d1.t1
if $rows !=
4
then
if $rows !=
3
then
return -1
endi
sql select * from d2.t2
if $rows !=
4
then
if $rows !=
3
then
return -1
endi
sql select * from d3.t3
if $rows != 3 then
return -1
endi
sql select * from d4.t4
if $rows != 3 then
return -1
endi
print ========= step61
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
sleep 5000
# no master
sql_error insert into d1.t1 values(now, 4)
sql insert into d2.t2 values(now, 4)
# no master
sql_error insert into d3.t3 values(now, 4)
sql insert into d4.t4 values(now, 4)
sql select * from d2.t2
if $rows != 4 then
return -1
endi
...
...
@@ -231,9 +251,7 @@ endi
print ========= step7
system sh/exec_up.sh -n dnode3 -s start
sleep 10000
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
sleep 10000
sleep 5000
sql insert into d1.t1 values(now, 5)
sql insert into d2.t2 values(now, 5)
...
...
@@ -241,7 +259,7 @@ sql insert into d3.t3 values(now, 5)
sql insert into d4.t4 values(now, 5)
sql select * from d1.t1
if $rows !=
5
then
if $rows !=
4
then
return -1
endi
...
...
@@ -251,7 +269,7 @@ if $rows != 5 then
endi
sql select * from d3.t3
if $rows !=
5
then
if $rows !=
4
then
return -1
endi
...
...
tests/script/unique/db/replica_add13.sim
浏览文件 @
93775b1f
...
...
@@ -30,14 +30,14 @@ system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sql create dnode 192.168.0.3
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sql create dnode 192.168.0.4
system sh/exec.sh -n dnode4 -s start
system sh/exec
_up
.sh -n dnode4 -s start
sleep 3000
print ======== step1
...
...
@@ -81,7 +81,7 @@ sql alter database d1 replica 3
sql alter database d2 replica 3
sql alter database d3 replica 3
sql alter database d4 replica 3
sleep 1
2
000
sleep 1
0
000
print ======== step3
$x = 0
...
...
@@ -93,29 +93,25 @@ show3:
endi
sql show dnodes
print dnode192.168.0.1 ==> openVnodes: $data2_192.168.0.1 freeVnodes: $data3_192.168.0.1
print dnode192.168.0.2 ==> openVnodes: $data2_192.168.0.2 freeVnodes: $data3_192.168.0.2
print dnode192.168.0.3 ==> openVnodes: $data2_192.168.0.3 freeVnodes: $data3_192.168.0.3
print dnode192.168.0.4 ==> openVnodes: $data2_192.168.0.4 freeVnodes: $data3_192.168.0.4
if $data2_192.168.0.1 != 0 then
goto show3
endi
print dnode192.168.0.1 ==> openVnodes: $data3_1
print dnode192.168.0.2 ==> openVnodes: $data3_2
print dnode192.168.0.3 ==> openVnodes: $data3_3
print dnode192.168.0.4 ==> openVnodes: $data3_4
if $data3_1
92.168.0.1 != 4
then
goto show3
if $data3_1
!= 0
then
return -1
endi
if $data3_
192.168.0.2 != 0
then
goto show3
if $data3_
2 != 4
then
return -1
endi
if $data3_
192.168.0.3 != 0
then
goto show3
if $data3_
3 != 4
then
return -1
endi
if $data3_
192.168.0.4 != 0
then
goto show3
if $data3_
3 != 4
then
return -1
endi
print ======== step4
...
...
@@ -145,9 +141,10 @@ if $rows != 2 then
endi
print ========= step5
sleep 10000
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql reset query cache
sleep 1000
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(now, 3)
sql insert into d2.t2 values(now, 3)
...
...
@@ -175,9 +172,9 @@ if $rows != 3 then
endi
print ========= step6
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sleep 5000
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 4)
...
...
@@ -206,9 +203,9 @@ if $rows != 4 then
endi
print ========= step7
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sleep 5000
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode4 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 5)
...
...
@@ -237,9 +234,9 @@ if $rows != 5 then
endi
print ========= step8
system sh/exec.sh -n dnode4 -s start
system sh/exec
_up
.sh -n dnode4 -s start
sleep 5000
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 6)
...
...
tests/script/unique/db/replica_add23.sim
浏览文件 @
93775b1f
...
...
@@ -30,14 +30,14 @@ system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sql create dnode 192.168.0.3
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sql create dnode 192.168.0.4
system sh/exec.sh -n dnode4 -s start
system sh/exec
_up
.sh -n dnode4 -s start
sleep 3000
print ======== step1
...
...
@@ -81,7 +81,7 @@ sql alter database d1 replica 3
sql alter database d2 replica 3
sql alter database d3 replica 3
sql alter database d4 replica 3
sleep 1
2
000
sleep 1
0
000
print ======== step3
$x = 0
...
...
@@ -93,41 +93,25 @@ show3:
endi
sql show dnodes
print dnode192.168.0.1 ==> openVnodes: $data2_192.168.0.1 freeVnodes: $data3_192.168.0.1
print dnode192.168.0.2 ==> openVnodes: $data2_192.168.0.2 freeVnodes: $data3_192.168.0.2
print dnode192.168.0.3 ==> openVnodes: $data2_192.168.0.3 freeVnodes: $data3_192.168.0.3
print dnode192.168.0.4 ==> openVnodes: $data2_192.168.0.4 freeVnodes: $data3_192.168.0.4
if $data2_192.168.0.1 != 0 then
goto show3
endi
if $data2_192.168.0.2 != 4 then
goto show3
endi
print dnode192.168.0.1 ==> openVnodes: $data3_1
print dnode192.168.0.2 ==> openVnodes: $data3_2
print dnode192.168.0.3 ==> openVnodes: $data3_3
print dnode192.168.0.4 ==> openVnodes: $data3_4
if $data
2_192.168.0.3 != 4
then
goto show3
if $data
3_1 != 0
then
return -1
endi
if $data
2_192.168.0.4
!= 4 then
goto show3
if $data
3_2
!= 4 then
return -1
endi
if $data3_
192.168.0.1
!= 4 then
goto show3
if $data3_
3
!= 4 then
return -1
endi
if $data3_192.168.0.2 != 0 then
goto show3
endi
if $data3_192.168.0.3 != 0 then
goto show3
endi
if $data3_192.168.0.4 != 0 then
goto show3
if $data3_3 != 4 then
return -1
endi
print ======== step4
...
...
@@ -156,10 +140,12 @@ if $rows != 2 then
return -1
endi
sleep 10000
sql reset query cache
sleep 1000
print ========= step5
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep
3
000
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
sleep
5
000
sql insert into d1.t1 values(now, 3)
sql insert into d2.t2 values(now, 3)
...
...
@@ -187,10 +173,10 @@ if $rows != 3 then
endi
print ========= step6
system sh/exec.sh -n dnode2 -s start
system sh/exec_up.sh -n dnode2 -s start
sleep 5000
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
sleep 5000
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 4)
sql insert into d2.t2 values(now, 4)
...
...
@@ -218,10 +204,10 @@ if $rows != 4 then
endi
print ========= step7
system sh/exec.sh -n dnode3 -s start
system sh/exec_up.sh -n dnode3 -s start
sleep 5000
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
sleep 5000
system sh/exec.sh -n dnode4 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 5)
sql insert into d2.t2 values(now, 5)
...
...
@@ -249,10 +235,10 @@ if $rows != 5 then
endi
print ========= step8
system sh/exec.sh -n dnode4 -s start
system sh/exec_up.sh -n dnode4 -s start
sleep 5000
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
sleep 5000
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 6)
sql insert into d2.t2 values(now, 6)
...
...
tests/script/unique/db/replica_part.sim
浏览文件 @
93775b1f
...
...
@@ -20,12 +20,12 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sql create dnode 192.168.0.3
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sleep 3000
print ======== step1
...
...
@@ -65,16 +65,16 @@ if $rows != 1 then
endi
print ========= step2 alter db
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep
3
000
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
sleep
5
000
sql alter database d1 replica 2
sql alter database d2 replica 2
sql alter database d3 replica 2
sql alter database d4 replica 2
sleep
3
000
sleep
5
000
print ========= step3
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sleep 10000
print ========= step4
...
...
@@ -104,70 +104,39 @@ if $rows != 2 then
endi
print ========= step5
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 3)
sql insert into d2.t2 values(now, 3)
sql insert into d3.t3 values(now, 3)
sql insert into d4.t4 values(now, 3)
sql select * from d1.t1
if $rows != 3 then
return -1
endi
sql select * from d2.t2
if $rows != 3 then
return -1
endi
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql select * from d3.t3
if $rows != 3 then
return -1
endi
sql reset query cache
sleep 1000
sql select * from d4.t4
if $rows != 3 then
return -1
endi
sql insert into d1.t1 values(now, 3) -x s1
s1:
sql insert into d2.t2 values(now, 3) -x s2
s2:
sql insert into d3.t3 values(now, 3) -x s3
s3:
sql insert into d4.t4 values(now, 3) -x s4
s4:
print ========= step6
system sh/exec.sh -n dnode2 -s start
system sh/exec_up.sh -n dnode2 -s start
sleep 5000
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
sleep 5000
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 4)
sql insert into d2.t2 values(now, 4)
sql insert into d3.t3 values(now, 4)
sql insert into d4.t4 values(now, 4)
sql select * from d1.t1
if $rows != 4 then
return -1
endi
sql select * from d2.t2
if $rows != 4 then
return -1
endi
sql select * from d3.t3
if $rows != 4 then
return -1
endi
sql select * from d4.t4
if $rows != 4 then
return -1
endi
sql insert into d1.t1 values(now, 4) -x s5
s5:
sql insert into d2.t2 values(now, 4) -x s6
s6:
sql insert into d3.t3 values(now, 4) -x s7
s7:
sql insert into d4.t4 values(now, 4) -x s8
s8:
print ========= step7
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sleep 5000
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 5)
sql insert into d2.t2 values(now, 5)
...
...
@@ -175,22 +144,6 @@ sql insert into d3.t3 values(now, 5)
sql insert into d4.t4 values(now, 5)
sql select * from d1.t1
if $rows != 5 then
return -1
endi
sql select * from d2.t2
if $rows != 5 then
return -1
endi
sql select * from d3.t3
if $rows != 5 then
return -1
endi
sql select * from d4.t4
if $rows != 5 then
return -1
endi
tests/script/unique/db/replica_reduce21.sim
浏览文件 @
93775b1f
...
...
@@ -20,10 +20,10 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sleep 3000
print ======== step1
...
...
@@ -70,7 +70,7 @@ error1:
print ========= step3 alter d1
sql alter database d1 replica 1
sleep
8
000
sleep
12
000
print ========= step4 query d1
sql insert into d1.t1 values(now, 2)
...
...
@@ -86,16 +86,12 @@ sql select * from d5.t5
if $rows != 1 then
return -1
endi
print ========= step6 alter d5
sql alter database d5 replica 2 -x error2
return -1
error2:
return
print ========= step7 drop d1
sql drop database d1
sleep
12
000
sleep
5
000
sql reset query cache
print ========= step8
sql insert into d5.t5 values(now, 2)
sql insert into d2.t2 values(now, 2)
...
...
@@ -123,7 +119,7 @@ if $rows != 2 then
endi
print ======== step9 stop dnode2
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d5.t5 values(now, 3)
...
...
tests/script/unique/db/replica_reduce31.sim
浏览文件 @
93775b1f
...
...
@@ -20,12 +20,12 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sql create dnode 192.168.0.3
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sleep 3000
print ======== step1
...
...
@@ -39,8 +39,8 @@ sql create table d2.t2 (ts timestamp, i int)
sql create table d3.t3 (ts timestamp, i int)
sql create table d4.t4 (ts timestamp, i int)
sql insert into d2.t2 values(now, 1)
sql insert into d1.t1 values(now, 1)
sql insert into d2.t2 values(now, 1)
sql insert into d3.t3 values(now, 1)
sql insert into d4.t4 values(now, 1)
...
...
@@ -65,12 +65,25 @@ if $rows != 1 then
endi
print ========= step2 alter db
sql_error alter database d1 replica 1
sql_error alter database d2 replica 1
sql_error alter database d3 replica 1
sql alter database d1 replica 2
sql alter database d2 replica 2
sql alter database d3 replica 2
sleep 8000
sql alter database d1 replica 1
sql alter database d2 replica 1
sql alter database d3 replica 1
sleep 12000
sleep 8000
print ========= step3
sql reset query cache
sleep 1000
sql insert into d1.t1 values(now, 2)
sql insert into d2.t2 values(now, 2)
sql insert into d3.t3 values(now, 2)
...
...
@@ -100,7 +113,7 @@ print ========= step4 alter db
sql alter database d1 replica 2
sql alter database d2 replica 2
sql alter database d3 replica 2
sleep
12
000
sleep
8
000
sql insert into d1.t1 values(now, 3)
sql insert into d2.t2 values(now, 3)
...
...
@@ -128,93 +141,46 @@ if $rows != 3 then
endi
print ========= step4
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 4)
sql insert into d2.t2 values(now, 4)
sql insert into d3.t3 values(now, 4)
sql insert into d4.t4 values(now, 4)
sql select * from d1.t1
if $rows != 4 then
return -1
endi
sql select * from d2.t2
if $rows != 4 then
return -1
endi
sql select * from d3.t3
if $rows != 4 then
return -1
endi
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql select * from d4.t4
if $rows != 4 then
return -1
endi
sql reset query cache
sleep 1000
sql insert into d1.t1 values(now, 4) -x step1
step1:
sql insert into d2.t2 values(now, 4) -x step2
step2:
sql insert into d3.t3 values(now, 4) -x step3
step3:
sql insert into d4.t4 values(now, 4) -x step4
step4:
print ========= step5
system sh/exec.sh -n dnode2 -s start
system sh/exec_up.sh -n dnode2 -s start
sleep 5000
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
sleep 5000
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 5)
sql insert into d2.t2 values(now, 5)
sql insert into d3.t3 values(now, 5)
sql insert into d4.t4 values(now, 5)
sql select * from d1.t1
if $rows != 5 then
return -1
endi
sql select * from d2.t2
if $rows != 5 then
return -1
endi
sql select * from d3.t3
if $rows != 5 then
return -1
endi
sql select * from d4.t4
if $rows != 5 then
return -1
endi
sql insert into d1.t1 values(now, 5) -x step5
step5:
sql insert into d2.t2 values(now, 5) -x step6
step6:
sql insert into d3.t3 values(now, 5) -x step7
step7:
sql insert into d4.t4 values(now, 5) -x step8
step8:
print ========= step6
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sleep 5000
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 6)
sql insert into d2.t2 values(now, 6)
sql insert into d3.t3 values(now, 6)
sql insert into d4.t4 values(now, 6)
sql select * from d1.t1
if $rows != 6 then
return -1
endi
sql select * from d2.t2
if $rows != 6 then
return -1
endi
sql select * from d3.t3
if $rows != 6 then
return -1
endi
sql select * from d4.t4
if $rows != 6 then
return -1
endi
tests/script/unique/db/replica_reduce32.sim
浏览文件 @
93775b1f
...
...
@@ -20,12 +20,12 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode2 -s start
sql create dnode 192.168.0.3
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sleep 3000
print ======== step1
...
...
@@ -68,6 +68,7 @@ print ========= step2 alter db
sql alter database d1 replica 2
sql alter database d2 replica 2
sql alter database d3 replica 2
sql alter database d4 replica 2
sleep 12000
print ========= step3
...
...
@@ -97,8 +98,8 @@ if $rows != 2 then
endi
print ========= step4
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep
3
000
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
sleep
5
000
sql insert into d1.t1 values(now, 3)
sql insert into d2.t2 values(now, 3)
...
...
@@ -126,40 +127,24 @@ if $rows != 3 then
endi
print ========= step5
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 4)
sql insert into d2.t2 values(now, 4)
sql insert into d3.t3 values(now, 4)
sql insert into d4.t4 values(now, 4)
sql select * from d1.t1
if $rows != 4 then
return -1
endi
system sh/exec_up.sh -n dnode2 -s start
sql select * from d2.t2
if $rows != 4 then
return -1
endi
sleep 5000
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
sleep 5000
sql select * from d3.t3
if $rows != 4 then
return -1
endi
sql reset query cache
sleep 1000
sql
select * from d4.t4
if $rows != 4 then
return -1
endi
sql
_error insert into d1.t1 values(now, 4)
sql_error insert into d2.t2 values(now, 4)
sql_error insert into d3.t3 values(now, 4)
sql_error insert into d4.t4 values(now, 4)
print ========= step6
system sh/exec.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode3 -s start
sleep 5000
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(now, 5)
...
...
@@ -168,21 +153,21 @@ sql insert into d3.t3 values(now, 5)
sql insert into d4.t4 values(now, 5)
sql select * from d1.t1
if $rows !=
5
then
if $rows !=
4
then
return -1
endi
sql select * from d2.t2
if $rows !=
5
then
if $rows !=
4
then
return -1
endi
sql select * from d3.t3
if $rows !=
5
then
if $rows !=
4
then
return -1
endi
sql select * from d4.t4
if $rows !=
5
then
if $rows !=
4
then
return -1
endi
tests/script/unique/db/testSuite.sim
浏览文件 @
93775b1f
#run unique/db/commit.sim
run unique/db/delete.sim
#
run unique/db/delete.sim
run unique/db/replica_add12.sim
run unique/db/replica_add13.sim
run unique/db/replica_add23.sim
...
...
@@ -7,4 +7,4 @@ run unique/db/replica_reduce21.sim
run unique/db/replica_reduce32.sim
run unique/db/replica_reduce31.sim
run unique/db/replica_part.sim
run unique/db/delete_part.sim
#
run unique/db/delete_part.sim
tests/script/unique/mnode/mgmt22.sim
浏览文件 @
93775b1f
...
...
@@ -64,6 +64,8 @@ print error of no master
print ============== step6
system sh/exec_up.sh -n dnode1 -s start
sql close
sql connect
$x = 0
show6:
...
...
tests/script/unique/mnode/mgmt24.sim
浏览文件 @
93775b1f
...
...
@@ -60,6 +60,9 @@ print ============== step5
system sh/exec_up.sh -n dnode1 -s start
sql_error create dnode 192.168.0.1
sql close
sql connect
$x = 0
step5:
$x = $x + 1
...
...
tests/test/c/importOneRow.c
浏览文件 @
93775b1f
...
...
@@ -104,7 +104,12 @@ void taos_error(TAOS *con) {
void
*
taos_execute
(
void
*
param
)
{
ThreadObj
*
pThread
=
(
ThreadObj
*
)
param
;
void
*
taos
=
taos_connect
(
tsMasterIp
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
0
);
char
fqdn
[
TSDB_FQDN_LEN
];
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsMaster
,
fqdn
,
&
port
);
void
*
taos
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
if
(
taos
==
NULL
)
taos_error
(
taos
);
char
sql
[
1024
]
=
{
0
};
...
...
tests/test/c/importPerTabe.c
浏览文件 @
93775b1f
...
...
@@ -68,7 +68,12 @@ void createDbAndTable() {
int64_t
st
,
et
;
char
qstr
[
64000
];
con
=
taos_connect
(
tsMasterIp
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
0
);
char
fqdn
[
TSDB_FQDN_LEN
];
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsMaster
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
if
(
con
==
NULL
)
{
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
exit
(
1
);
...
...
@@ -190,8 +195,12 @@ void *syncTest(void *param) {
int
maxBytes
=
60000
;
pPrint
(
"thread:%d, start to run"
,
pInfo
->
threadIndex
);
char
fqdn
[
TSDB_FQDN_LEN
];
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsMaster
,
fqdn
,
&
port
);
con
=
taos_connect
(
tsMasterIp
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
0
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
if
(
con
==
NULL
)
{
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
exit
(
1
);
...
...
tests/test/c/insertPerRow.c
浏览文件 @
93775b1f
...
...
@@ -68,7 +68,10 @@ void createDbAndTable() {
int64_t
st
,
et
;
char
qstr
[
64000
];
con
=
taos_connect
(
tsMasterIp
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
0
);
char
fqdn
[
TSDB_FQDN_LEN
];
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsMaster
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
if
(
con
==
NULL
)
{
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
exit
(
1
);
...
...
@@ -191,7 +194,11 @@ void *syncTest(void *param) {
pPrint
(
"thread:%d, start to run"
,
pInfo
->
threadIndex
);
con
=
taos_connect
(
tsMasterIp
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
0
);
char
fqdn
[
TSDB_FQDN_LEN
];
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsMaster
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
if
(
con
==
NULL
)
{
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
exit
(
1
);
...
...
tests/test/c/insertPerTable.c
浏览文件 @
93775b1f
...
...
@@ -68,7 +68,12 @@ void createDbAndTable() {
int64_t
st
,
et
;
char
qstr
[
64000
];
con
=
taos_connect
(
tsMasterIp
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
0
);
char
fqdn
[
TSDB_FQDN_LEN
];
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsMaster
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
if
(
con
==
NULL
)
{
pError
(
"failed to connect to DB, reason:%s"
,
taos_errstr
(
con
));
exit
(
1
);
...
...
@@ -191,7 +196,12 @@ void *syncTest(void *param) {
pPrint
(
"thread:%d, start to run"
,
pInfo
->
threadIndex
);
con
=
taos_connect
(
tsMasterIp
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
0
);
char
fqdn
[
TSDB_FQDN_LEN
];
uint16_t
port
;
taosGetFqdnPortFromEp
(
tsMaster
,
fqdn
,
&
port
);
con
=
taos_connect
(
fqdn
,
tsDefaultUser
,
tsDefaultPass
,
NULL
,
port
);
if
(
con
==
NULL
)
{
pError
(
"index:%d, failed to connect to DB, reason:%s"
,
pInfo
->
threadIndex
,
taos_errstr
(
con
));
exit
(
1
);
...
...
tests/tsim/inc/sim.h
浏览文件 @
93775b1f
...
...
@@ -160,7 +160,7 @@ extern SCommand simCmdList[];
extern
int
simScriptPos
;
extern
int
simScriptSucced
;
extern
int
simDebugFlag
;
extern
char
s
criptDir
[];
extern
char
tsS
criptDir
[];
extern
bool
simAsyncQuery
;
SScript
*
simParseScript
(
char
*
fileName
);
...
...
tests/tsim/src/simExe.c
浏览文件 @
93775b1f
...
...
@@ -24,7 +24,7 @@
void
simLogSql
(
char
*
sql
)
{
static
FILE
*
fp
=
NULL
;
char
filename
[
256
];
sprintf
(
filename
,
"%s/sim.sql"
,
s
criptDir
);
sprintf
(
filename
,
"%s/sim.sql"
,
tsS
criptDir
);
if
(
fp
==
NULL
)
{
fp
=
fopen
(
filename
,
"w"
);
if
(
fp
==
NULL
)
{
...
...
@@ -270,7 +270,7 @@ bool simExecuteRunBackCmd(SScript *script, char *option) {
bool
simExecuteSystemCmd
(
SScript
*
script
,
char
*
option
)
{
char
buf
[
4096
]
=
{
0
};
sprintf
(
buf
,
"cd %s; "
,
s
criptDir
);
sprintf
(
buf
,
"cd %s; "
,
tsS
criptDir
);
simVisuallizeOption
(
script
,
option
,
buf
+
strlen
(
buf
));
int
code
=
system
(
buf
);
...
...
@@ -306,9 +306,9 @@ void simStoreSystemContentResult(SScript *script, char *filename) {
bool
simExecuteSystemContentCmd
(
SScript
*
script
,
char
*
option
)
{
char
buf
[
4096
]
=
{
0
};
char
filename
[
400
]
=
{
0
};
sprintf
(
filename
,
"%s/%s.tmp"
,
s
criptDir
,
script
->
fileName
);
sprintf
(
filename
,
"%s/%s.tmp"
,
tsS
criptDir
,
script
->
fileName
);
sprintf
(
buf
,
"cd %s; "
,
s
criptDir
);
sprintf
(
buf
,
"cd %s; "
,
tsS
criptDir
);
simVisuallizeOption
(
script
,
option
,
buf
+
strlen
(
buf
));
sprintf
(
buf
,
"%s > %s 2>/dev/null"
,
buf
,
filename
);
...
...
tests/tsim/src/simParse.c
浏览文件 @
93775b1f
...
...
@@ -186,7 +186,7 @@ SScript *simParseScript(char *fileName) {
if
((
fileName
[
0
]
==
'.'
)
||
(
fileName
[
0
]
==
'/'
))
{
strcpy
(
name
,
fileName
);
}
else
{
sprintf
(
name
,
"%s/%s"
,
s
criptDir
,
fileName
);
sprintf
(
name
,
"%s/%s"
,
tsS
criptDir
,
fileName
);
}
if
((
fd
=
fopen
(
name
,
"r"
))
==
NULL
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录