Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
6d050231
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
6d050231
编写于
12月 27, 2021
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add qnode mgmt
上级
1191275a
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
582 addition
and
318 deletion
+582
-318
include/common/tmsg.h
include/common/tmsg.h
+12
-0
include/util/taoserror.h
include/util/taoserror.h
+21
-129
source/dnode/mgmt/impl/inc/dndInt.h
source/dnode/mgmt/impl/inc/dndInt.h
+0
-1
source/dnode/mgmt/impl/inc/dndQnode.h
source/dnode/mgmt/impl/inc/dndQnode.h
+1
-1
source/dnode/mgmt/impl/src/dndMnode.c
source/dnode/mgmt/impl/src/dndMnode.c
+1
-0
source/dnode/mgmt/impl/src/dndQnode.c
source/dnode/mgmt/impl/src/dndQnode.c
+498
-0
source/dnode/mgmt/impl/src/dnode.c
source/dnode/mgmt/impl/src/dnode.c
+7
-38
source/util/src/terror.c
source/util/src/terror.c
+18
-126
tests/script/general/table/basic1.sim
tests/script/general/table/basic1.sim
+12
-1
tests/script/unique/dnode/basic1.sim
tests/script/unique/dnode/basic1.sim
+12
-22
未找到文件。
include/common/tmsg.h
浏览文件 @
6d050231
...
...
@@ -852,6 +852,18 @@ typedef struct {
int32_t
dnodeId
;
}
SDropMnodeInMsg
;
typedef
struct
{
int32_t
dnodeId
;
}
SCreateQnodeInMsg
,
SDropQnodeInMsg
;
typedef
struct
{
int32_t
dnodeId
;
}
SCreateSnodeInMsg
,
SDropSnodeInMsg
;
typedef
struct
{
int32_t
dnodeId
;
}
SCreateBnodeInMsg
,
SDropBnodeInMsg
;
typedef
struct
{
int32_t
dnodeId
;
int32_t
vgId
;
...
...
include/util/taoserror.h
浏览文件 @
6d050231
...
...
@@ -256,9 +256,27 @@ int32_t* taosGetErrno();
#define TSDB_CODE_DND_MNODE_ID_NOT_FOUND TAOS_DEF_ERROR_CODE(0, 0x0423)
#define TSDB_CODE_DND_MNODE_READ_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0424)
#define TSDB_CODE_DND_MNODE_WRITE_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0425)
#define TSDB_CODE_DND_VNODE_TOO_MANY_VNODES TAOS_DEF_ERROR_CODE(0, 0x0430)
#define TSDB_CODE_DND_VNODE_READ_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0431)
#define TSDB_CODE_DND_VNODE_WRITE_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0432)
#define TSDB_CODE_DND_QNODE_ALREADY_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x0430)
#define TSDB_CODE_DND_QNODE_NOT_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x0431)
#define TSDB_CODE_DND_QNODE_ID_INVALID TAOS_DEF_ERROR_CODE(0, 0x0432)
#define TSDB_CODE_DND_QNODE_ID_NOT_FOUND TAOS_DEF_ERROR_CODE(0, 0x0433)
#define TSDB_CODE_DND_QNODE_READ_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0434)
#define TSDB_CODE_DND_QNODE_WRITE_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0435)
#define TSDB_CODE_DND_SNODE_ALREADY_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x0440)
#define TSDB_CODE_DND_SNODE_NOT_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x0441)
#define TSDB_CODE_DND_SNODE_ID_INVALID TAOS_DEF_ERROR_CODE(0, 0x0442)
#define TSDB_CODE_DND_SNODE_ID_NOT_FOUND TAOS_DEF_ERROR_CODE(0, 0x0443)
#define TSDB_CODE_DND_SNODE_READ_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0444)
#define TSDB_CODE_DND_SNODE_WRITE_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0445)
#define TSDB_CODE_DND_BNODE_ALREADY_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x0450)
#define TSDB_CODE_DND_BNODE_NOT_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x0451)
#define TSDB_CODE_DND_BNODE_ID_INVALID TAOS_DEF_ERROR_CODE(0, 0x0452)
#define TSDB_CODE_DND_BNODE_ID_NOT_FOUND TAOS_DEF_ERROR_CODE(0, 0x0453)
#define TSDB_CODE_DND_BNODE_READ_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0454)
#define TSDB_CODE_DND_BNODE_WRITE_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0455)
#define TSDB_CODE_DND_VNODE_TOO_MANY_VNODES TAOS_DEF_ERROR_CODE(0, 0x0460)
#define TSDB_CODE_DND_VNODE_READ_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0461)
#define TSDB_CODE_DND_VNODE_WRITE_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0462)
// vnode
#define TSDB_CODE_VND_ACTION_IN_PROGRESS TAOS_DEF_ERROR_CODE(0, 0x0500) //"Action in progress")
...
...
@@ -377,132 +395,6 @@ int32_t* taosGetErrno();
#define TSDB_CODE_WAL_FILE_CORRUPTED TAOS_DEF_ERROR_CODE(0, 0x1001) //"WAL file is corrupted")
#define TSDB_CODE_WAL_SIZE_LIMIT TAOS_DEF_ERROR_CODE(0, 0x1002) //"WAL size exceeds limit")
// http
#define TSDB_CODE_HTTP_SERVER_OFFLINE TAOS_DEF_ERROR_CODE(0, 0x1100) //"http server is not onlin")
#define TSDB_CODE_HTTP_UNSUPPORT_URL TAOS_DEF_ERROR_CODE(0, 0x1101) //"url is not support")
#define TSDB_CODE_HTTP_INVALID_URL TAOS_DEF_ERROR_CODE(0, 0x1102) //invalid url format")
#define TSDB_CODE_HTTP_NO_ENOUGH_MEMORY TAOS_DEF_ERROR_CODE(0, 0x1103) //"no enough memory")
#define TSDB_CODE_HTTP_REQUSET_TOO_BIG TAOS_DEF_ERROR_CODE(0, 0x1104) //"request size is too big")
#define TSDB_CODE_HTTP_NO_AUTH_INFO TAOS_DEF_ERROR_CODE(0, 0x1105) //"no auth info input")
#define TSDB_CODE_HTTP_NO_MSG_INPUT TAOS_DEF_ERROR_CODE(0, 0x1106) //"request is empty")
#define TSDB_CODE_HTTP_NO_SQL_INPUT TAOS_DEF_ERROR_CODE(0, 0x1107) //"no sql input")
#define TSDB_CODE_HTTP_NO_EXEC_USEDB TAOS_DEF_ERROR_CODE(0, 0x1108) //"no need to execute use db cmd")
#define TSDB_CODE_HTTP_SESSION_FULL TAOS_DEF_ERROR_CODE(0, 0x1109) //"session list was full")
#define TSDB_CODE_HTTP_GEN_TAOSD_TOKEN_ERR TAOS_DEF_ERROR_CODE(0, 0x110A) //"generate taosd token error")
#define TSDB_CODE_HTTP_INVALID_MULTI_REQUEST TAOS_DEF_ERROR_CODE(0, 0x110B) //"size of multi request is 0")
#define TSDB_CODE_HTTP_CREATE_GZIP_FAILED TAOS_DEF_ERROR_CODE(0, 0x110C) //"failed to create gzip")
#define TSDB_CODE_HTTP_FINISH_GZIP_FAILED TAOS_DEF_ERROR_CODE(0, 0x110D) //"failed to finish gzip")
#define TSDB_CODE_HTTP_LOGIN_FAILED TAOS_DEF_ERROR_CODE(0, 0x110E) //"failed to login")
#define TSDB_CODE_HTTP_INVALID_VERSION TAOS_DEF_ERROR_CODE(0, 0x1120) //"invalid http version")
#define TSDB_CODE_HTTP_INVALID_CONTENT_LENGTH TAOS_DEF_ERROR_CODE(0, 0x1121) //"invalid content length")
#define TSDB_CODE_HTTP_INVALID_AUTH_TYPE TAOS_DEF_ERROR_CODE(0, 0x1122) //"invalid type of Authorization")
#define TSDB_CODE_HTTP_INVALID_AUTH_FORMAT TAOS_DEF_ERROR_CODE(0, 0x1123) //"invalid format of Authorization")
#define TSDB_CODE_HTTP_INVALID_BASIC_AUTH TAOS_DEF_ERROR_CODE(0, 0x1124) //"invalid basic Authorization")
#define TSDB_CODE_HTTP_INVALID_TAOSD_AUTH TAOS_DEF_ERROR_CODE(0, 0x1125) //"invalid taosd Authorization")
#define TSDB_CODE_HTTP_PARSE_METHOD_FAILED TAOS_DEF_ERROR_CODE(0, 0x1126) //"failed to parse method")
#define TSDB_CODE_HTTP_PARSE_TARGET_FAILED TAOS_DEF_ERROR_CODE(0, 0x1127) //"failed to parse target")
#define TSDB_CODE_HTTP_PARSE_VERSION_FAILED TAOS_DEF_ERROR_CODE(0, 0x1128) //"failed to parse http version")
#define TSDB_CODE_HTTP_PARSE_SP_FAILED TAOS_DEF_ERROR_CODE(0, 0x1129) //"failed to parse sp")
#define TSDB_CODE_HTTP_PARSE_STATUS_FAILED TAOS_DEF_ERROR_CODE(0, 0x112A) //"failed to parse status")
#define TSDB_CODE_HTTP_PARSE_PHRASE_FAILED TAOS_DEF_ERROR_CODE(0, 0x112B) //"failed to parse phrase")
#define TSDB_CODE_HTTP_PARSE_CRLF_FAILED TAOS_DEF_ERROR_CODE(0, 0x112C) //"failed to parse crlf")
#define TSDB_CODE_HTTP_PARSE_HEADER_FAILED TAOS_DEF_ERROR_CODE(0, 0x112D) //"failed to parse header")
#define TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED TAOS_DEF_ERROR_CODE(0, 0x112E) //"failed to parse header key")
#define TSDB_CODE_HTTP_PARSE_HEADER_VAL_FAILED TAOS_DEF_ERROR_CODE(0, 0x112F) //"failed to parse header val")
#define TSDB_CODE_HTTP_PARSE_CHUNK_SIZE_FAILED TAOS_DEF_ERROR_CODE(0, 0x1130) //"failed to parse chunk size")
#define TSDB_CODE_HTTP_PARSE_CHUNK_FAILED TAOS_DEF_ERROR_CODE(0, 0x1131) //"failed to parse chunk")
#define TSDB_CODE_HTTP_PARSE_END_FAILED TAOS_DEF_ERROR_CODE(0, 0x1132) //"failed to parse end section")
#define TSDB_CODE_HTTP_PARSE_INVALID_STATE TAOS_DEF_ERROR_CODE(0, 0x1134) //"invalid parse state")
#define TSDB_CODE_HTTP_PARSE_ERROR_STATE TAOS_DEF_ERROR_CODE(0, 0x1135) //"failed to parse error section")
#define TSDB_CODE_HTTP_GC_QUERY_NULL TAOS_DEF_ERROR_CODE(0, 0x1150) //"query size is 0")
#define TSDB_CODE_HTTP_GC_QUERY_SIZE TAOS_DEF_ERROR_CODE(0, 0x1151) //"query size can not more than 100")
#define TSDB_CODE_HTTP_GC_REQ_PARSE_ERROR TAOS_DEF_ERROR_CODE(0, 0x1152) //"parse grafana json error")
#define TSDB_CODE_HTTP_TG_DB_NOT_INPUT TAOS_DEF_ERROR_CODE(0, 0x1160) //"database name can not be null")
#define TSDB_CODE_HTTP_TG_DB_TOO_LONG TAOS_DEF_ERROR_CODE(0, 0x1161) //"database name too long")
#define TSDB_CODE_HTTP_TG_INVALID_JSON TAOS_DEF_ERROR_CODE(0, 0x1162) //"invalid telegraf json fromat")
#define TSDB_CODE_HTTP_TG_METRICS_NULL TAOS_DEF_ERROR_CODE(0, 0x1163) //"metrics size is 0")
#define TSDB_CODE_HTTP_TG_METRICS_SIZE TAOS_DEF_ERROR_CODE(0, 0x1164) //"metrics size can not more than 1K")
#define TSDB_CODE_HTTP_TG_METRIC_NULL TAOS_DEF_ERROR_CODE(0, 0x1165) //"metric name not find")
#define TSDB_CODE_HTTP_TG_METRIC_TYPE TAOS_DEF_ERROR_CODE(0, 0x1166) //"metric name type should be string")
#define TSDB_CODE_HTTP_TG_METRIC_NAME_NULL TAOS_DEF_ERROR_CODE(0, 0x1167) //"metric name length is 0")
#define TSDB_CODE_HTTP_TG_METRIC_NAME_LONG TAOS_DEF_ERROR_CODE(0, 0x1168) //"metric name length too long")
#define TSDB_CODE_HTTP_TG_TIMESTAMP_NULL TAOS_DEF_ERROR_CODE(0, 0x1169) //"timestamp not find")
#define TSDB_CODE_HTTP_TG_TIMESTAMP_TYPE TAOS_DEF_ERROR_CODE(0, 0x116A) //"timestamp type should be integer")
#define TSDB_CODE_HTTP_TG_TIMESTAMP_VAL_NULL TAOS_DEF_ERROR_CODE(0, 0x116B) //"timestamp value smaller than 0")
#define TSDB_CODE_HTTP_TG_TAGS_NULL TAOS_DEF_ERROR_CODE(0, 0x116C) //"tags not find")
#define TSDB_CODE_HTTP_TG_TAGS_SIZE_0 TAOS_DEF_ERROR_CODE(0, 0x116D) //"tags size is 0")
#define TSDB_CODE_HTTP_TG_TAGS_SIZE_LONG TAOS_DEF_ERROR_CODE(0, 0x116E) //"tags size too long")
#define TSDB_CODE_HTTP_TG_TAG_NULL TAOS_DEF_ERROR_CODE(0, 0x116F) //"tag is null")
#define TSDB_CODE_HTTP_TG_TAG_NAME_NULL TAOS_DEF_ERROR_CODE(0, 0x1170) //"tag name is null")
#define TSDB_CODE_HTTP_TG_TAG_NAME_SIZE TAOS_DEF_ERROR_CODE(0, 0x1171) //"tag name length too long")
#define TSDB_CODE_HTTP_TG_TAG_VALUE_TYPE TAOS_DEF_ERROR_CODE(0, 0x1172) //"tag value type should be number or string")
#define TSDB_CODE_HTTP_TG_TAG_VALUE_NULL TAOS_DEF_ERROR_CODE(0, 0x1173) //"tag value is null")
#define TSDB_CODE_HTTP_TG_TABLE_NULL TAOS_DEF_ERROR_CODE(0, 0x1174) //"table is null")
#define TSDB_CODE_HTTP_TG_TABLE_SIZE TAOS_DEF_ERROR_CODE(0, 0x1175) //"table name length too long")
#define TSDB_CODE_HTTP_TG_FIELDS_NULL TAOS_DEF_ERROR_CODE(0, 0x1176) //"fields not find")
#define TSDB_CODE_HTTP_TG_FIELDS_SIZE_0 TAOS_DEF_ERROR_CODE(0, 0x1177) //"fields size is 0")
#define TSDB_CODE_HTTP_TG_FIELDS_SIZE_LONG TAOS_DEF_ERROR_CODE(0, 0x1178) //"fields size too long")
#define TSDB_CODE_HTTP_TG_FIELD_NULL TAOS_DEF_ERROR_CODE(0, 0x1179) //"field is null")
#define TSDB_CODE_HTTP_TG_FIELD_NAME_NULL TAOS_DEF_ERROR_CODE(0, 0x117A) //"field name is null")
#define TSDB_CODE_HTTP_TG_FIELD_NAME_SIZE TAOS_DEF_ERROR_CODE(0, 0x117B) //"field name length too long")
#define TSDB_CODE_HTTP_TG_FIELD_VALUE_TYPE TAOS_DEF_ERROR_CODE(0, 0x117C) //"field value type should be number or string")
#define TSDB_CODE_HTTP_TG_FIELD_VALUE_NULL TAOS_DEF_ERROR_CODE(0, 0x117D) //"field value is null")
#define TSDB_CODE_HTTP_TG_HOST_NOT_STRING TAOS_DEF_ERROR_CODE(0, 0x117E) //"host type should be string")
#define TSDB_CODE_HTTP_TG_STABLE_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x117F) //"stable not exist")
#define TSDB_CODE_HTTP_OP_DB_NOT_INPUT TAOS_DEF_ERROR_CODE(0, 0x1190) //"database name can not be null")
#define TSDB_CODE_HTTP_OP_DB_TOO_LONG TAOS_DEF_ERROR_CODE(0, 0x1191) //"database name too long")
#define TSDB_CODE_HTTP_OP_INVALID_JSON TAOS_DEF_ERROR_CODE(0, 0x1192) //"invalid opentsdb json fromat")
#define TSDB_CODE_HTTP_OP_METRICS_NULL TAOS_DEF_ERROR_CODE(0, 0x1193) //"metrics size is 0")
#define TSDB_CODE_HTTP_OP_METRICS_SIZE TAOS_DEF_ERROR_CODE(0, 0x1194) //"metrics size can not more than 10K")
#define TSDB_CODE_HTTP_OP_METRIC_NULL TAOS_DEF_ERROR_CODE(0, 0x1195) //"metric name not find")
#define TSDB_CODE_HTTP_OP_METRIC_TYPE TAOS_DEF_ERROR_CODE(0, 0x1196) //"metric name type should be string")
#define TSDB_CODE_HTTP_OP_METRIC_NAME_NULL TAOS_DEF_ERROR_CODE(0, 0x1197) //"metric name length is 0")
#define TSDB_CODE_HTTP_OP_METRIC_NAME_LONG TAOS_DEF_ERROR_CODE(0, 0x1198) //"metric name length can not more than 22")
#define TSDB_CODE_HTTP_OP_TIMESTAMP_NULL TAOS_DEF_ERROR_CODE(0, 0x1199) //"timestamp not find")
#define TSDB_CODE_HTTP_OP_TIMESTAMP_TYPE TAOS_DEF_ERROR_CODE(0, 0x119A) //"timestamp type should be integer")
#define TSDB_CODE_HTTP_OP_TIMESTAMP_VAL_NULL TAOS_DEF_ERROR_CODE(0, 0x119B) //"timestamp value smaller than 0")
#define TSDB_CODE_HTTP_OP_TAGS_NULL TAOS_DEF_ERROR_CODE(0, 0x119C) //"tags not find")
#define TSDB_CODE_HTTP_OP_TAGS_SIZE_0 TAOS_DEF_ERROR_CODE(0, 0x119D) //"tags size is 0")
#define TSDB_CODE_HTTP_OP_TAGS_SIZE_LONG TAOS_DEF_ERROR_CODE(0, 0x119E) //"tags size too long")
#define TSDB_CODE_HTTP_OP_TAG_NULL TAOS_DEF_ERROR_CODE(0, 0x119F) //"tag is null")
#define TSDB_CODE_HTTP_OP_TAG_NAME_NULL TAOS_DEF_ERROR_CODE(0, 0x11A0) //"tag name is null")
#define TSDB_CODE_HTTP_OP_TAG_NAME_SIZE TAOS_DEF_ERROR_CODE(0, 0x11A1) //"tag name length too long")
#define TSDB_CODE_HTTP_OP_TAG_VALUE_TYPE TAOS_DEF_ERROR_CODE(0, 0x11A2) //"tag value type should be boolean number or string")
#define TSDB_CODE_HTTP_OP_TAG_VALUE_NULL TAOS_DEF_ERROR_CODE(0, 0x11A3) //"tag value is null")
#define TSDB_CODE_HTTP_OP_TAG_VALUE_TOO_LONG TAOS_DEF_ERROR_CODE(0, 0x11A4) //"tag value can not more than 64")
#define TSDB_CODE_HTTP_OP_VALUE_NULL TAOS_DEF_ERROR_CODE(0, 0x11A5) //"value not find")
#define TSDB_CODE_HTTP_OP_VALUE_TYPE TAOS_DEF_ERROR_CODE(0, 0x11A6) //"value type should be boolean number or string")
#define TSDB_CODE_HTTP_REQUEST_JSON_ERROR TAOS_DEF_ERROR_CODE(0, 0x1F00) //"http request json error")
// odbc
#define TSDB_CODE_ODBC_OOM TAOS_DEF_ERROR_CODE(0, 0x2100) //"out of memory")
#define TSDB_CODE_ODBC_CONV_CHAR_NOT_NUM TAOS_DEF_ERROR_CODE(0, 0x2101) //"convertion not a valid literal input")
#define TSDB_CODE_ODBC_CONV_UNDEF TAOS_DEF_ERROR_CODE(0, 0x2102) //"convertion undefined")
#define TSDB_CODE_ODBC_CONV_TRUNC_FRAC TAOS_DEF_ERROR_CODE(0, 0x2103) //"convertion fractional truncated")
#define TSDB_CODE_ODBC_CONV_TRUNC TAOS_DEF_ERROR_CODE(0, 0x2104) //"convertion truncated")
#define TSDB_CODE_ODBC_CONV_NOT_SUPPORT TAOS_DEF_ERROR_CODE(0, 0x2105) //"convertion not supported")
#define TSDB_CODE_ODBC_CONV_OOR TAOS_DEF_ERROR_CODE(0, 0x2106) //"convertion numeric value out of range")
#define TSDB_CODE_ODBC_OUT_OF_RANGE TAOS_DEF_ERROR_CODE(0, 0x2107) //"out of range")
#define TSDB_CODE_ODBC_NOT_SUPPORT TAOS_DEF_ERROR_CODE(0, 0x2108) //"not supported yet")
#define TSDB_CODE_ODBC_INVALID_HANDLE TAOS_DEF_ERROR_CODE(0, 0x2109) //"invalid handle")
#define TSDB_CODE_ODBC_NO_RESULT TAOS_DEF_ERROR_CODE(0, 0x210a) //"no result set")
#define TSDB_CODE_ODBC_NO_FIELDS TAOS_DEF_ERROR_CODE(0, 0x210b) //"no fields returned")
#define TSDB_CODE_ODBC_INVALID_CURSOR TAOS_DEF_ERROR_CODE(0, 0x210c) //"invalid cursor")
#define TSDB_CODE_ODBC_STATEMENT_NOT_READY TAOS_DEF_ERROR_CODE(0, 0x210d) //"statement not ready")
#define TSDB_CODE_ODBC_CONNECTION_BUSY TAOS_DEF_ERROR_CODE(0, 0x210e) //"connection still busy")
#define TSDB_CODE_ODBC_BAD_CONNSTR TAOS_DEF_ERROR_CODE(0, 0x210f) //"bad connection string")
#define TSDB_CODE_ODBC_BAD_ARG TAOS_DEF_ERROR_CODE(0, 0x2110) //"bad argument")
#define TSDB_CODE_ODBC_CONV_NOT_VALID_TS TAOS_DEF_ERROR_CODE(0, 0x2111) //"not a valid timestamp")
#define TSDB_CODE_ODBC_CONV_SRC_TOO_LARGE TAOS_DEF_ERROR_CODE(0, 0x2112) //"src too large")
#define TSDB_CODE_ODBC_CONV_SRC_BAD_SEQ TAOS_DEF_ERROR_CODE(0, 0x2113) //"src bad sequence")
#define TSDB_CODE_ODBC_CONV_SRC_INCOMPLETE TAOS_DEF_ERROR_CODE(0, 0x2114) //"src incomplete")
#define TSDB_CODE_ODBC_CONV_SRC_GENERAL TAOS_DEF_ERROR_CODE(0, 0x2115) //"src general")
// tfs
#define TSDB_CODE_FS_OUT_OF_MEMORY TAOS_DEF_ERROR_CODE(0, 0x2200) //"tfs out of memory")
#define TSDB_CODE_FS_INVLD_CFG TAOS_DEF_ERROR_CODE(0, 0x2201) //"tfs invalid mount config")
...
...
source/dnode/mgmt/impl/inc/dndInt.h
浏览文件 @
6d050231
...
...
@@ -59,7 +59,6 @@ typedef void (*DndMsgFp)(SDnode *pDnode, SRpcMsg *pMsg, SEpSet *pEps);
typedef
struct
{
char
*
dnode
;
char
*
mnode
;
char
*
qnode
;
char
*
snode
;
char
*
bnode
;
char
*
vnodes
;
...
...
source/dnode/mgmt/impl/inc/dndQnode.h
浏览文件 @
6d050231
...
...
@@ -24,7 +24,7 @@ extern "C" {
int32_t
dndInitQnode
(
SDnode
*
pDnode
);
void
dndCleanupQnode
(
SDnode
*
pDnode
);
i
oid
dndProcessQnodeQueryMsg
(
SDnode
*
pDnode
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
v
oid
dndProcessQnodeQueryMsg
(
SDnode
*
pDnode
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
void
dndProcessQnodeFetchMsg
(
SDnode
*
pDnode
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
int32_t
dndProcessCreateQnodeReq
(
SDnode
*
pDnode
,
SRpcMsg
*
pRpcMsg
);
int32_t
dndProcessDropQnodeReq
(
SDnode
*
pDnode
,
SRpcMsg
*
pRpcMsg
);
...
...
source/dnode/mgmt/impl/src/dndMnode.c
浏览文件 @
6d050231
...
...
@@ -796,6 +796,7 @@ void dndCleanupMnode(SDnode *pDnode) {
if
(
pMgmt
->
pMnode
)
dndStopMnodeWorker
(
pDnode
);
tfree
(
pMgmt
->
file
);
mndClose
(
pMgmt
->
pMnode
);
pMgmt
->
pMnode
=
NULL
;
dInfo
(
"dnode-mnode is cleaned up"
);
}
...
...
source/dnode/mgmt/impl/src/dndQnode.c
0 → 100644
浏览文件 @
6d050231
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>.
*/
#define _DEFAULT_SOURCE
#include "dndQnode.h"
#include "dndDnode.h"
#include "dndTransport.h"
static
int32_t
dndInitQnodeQueryWorker
(
SDnode
*
pDnode
);
static
int32_t
dndInitQnodeFetchWorker
(
SDnode
*
pDnode
);
static
void
dndCleanupQnodeQueryWorker
(
SDnode
*
pDnode
);
static
void
dndCleanupQnodeFetchWorker
(
SDnode
*
pDnode
);
static
int32_t
dndAllocQnodeQueryQueue
(
SDnode
*
pDnode
);
static
int32_t
dndAllocQnodeFetchQueue
(
SDnode
*
pDnode
);
static
void
dndFreeQnodeQueryQueue
(
SDnode
*
pDnode
);
static
void
dndFreeQnodeFetchQueue
(
SDnode
*
pDnode
);
static
void
dndProcessQnodeQueue
(
SDnode
*
pDnode
,
SRpcMsg
*
pMsg
);
static
int32_t
dndWriteQnodeMsgToQueue
(
SQnode
*
pQnode
,
taos_queue
pQueue
,
SRpcMsg
*
pRpcMsg
);
static
int32_t
dndStartQnodeWorker
(
SDnode
*
pDnode
);
static
void
dndStopQnodeWorker
(
SDnode
*
pDnode
);
static
SQnode
*
dndAcquireQnode
(
SDnode
*
pDnode
);
static
void
dndReleaseQnode
(
SDnode
*
pDnode
,
SQnode
*
pQnode
);
static
int32_t
dndReadQnodeFile
(
SDnode
*
pDnode
);
static
int32_t
dndWriteQnodeFile
(
SDnode
*
pDnode
);
static
int32_t
dndOpenQnode
(
SDnode
*
pDnode
);
static
int32_t
dndDropQnode
(
SDnode
*
pDnode
);
static
SQnode
*
dndAcquireQnode
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
SQnode
*
pQnode
=
NULL
;
int32_t
refCount
=
0
;
taosRLockLatch
(
&
pMgmt
->
latch
);
if
(
pMgmt
->
deployed
&&
!
pMgmt
->
dropped
)
{
refCount
=
atomic_add_fetch_32
(
&
pMgmt
->
refCount
,
1
);
pQnode
=
pMgmt
->
pQnode
;
}
else
{
terrno
=
TSDB_CODE_DND_QNODE_NOT_DEPLOYED
;
}
taosRUnLockLatch
(
&
pMgmt
->
latch
);
if
(
pQnode
!=
NULL
)
{
dTrace
(
"acquire qnode, refCount:%d"
,
refCount
);
}
return
pQnode
;
}
static
void
dndReleaseQnode
(
SDnode
*
pDnode
,
SQnode
*
pQnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
int32_t
refCount
=
0
;
taosRLockLatch
(
&
pMgmt
->
latch
);
if
(
pQnode
!=
NULL
)
{
refCount
=
atomic_sub_fetch_32
(
&
pMgmt
->
refCount
,
1
);
}
taosRUnLockLatch
(
&
pMgmt
->
latch
);
if
(
pQnode
!=
NULL
)
{
dTrace
(
"release qnode, refCount:%d"
,
refCount
);
}
}
static
int32_t
dndReadQnodeFile
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
int32_t
code
=
TSDB_CODE_DND_QNODE_READ_FILE_ERROR
;
int32_t
len
=
0
;
int32_t
maxLen
=
4096
;
char
*
content
=
calloc
(
1
,
maxLen
+
1
);
cJSON
*
root
=
NULL
;
FILE
*
fp
=
fopen
(
pMgmt
->
file
,
"r"
);
if
(
fp
==
NULL
)
{
dDebug
(
"file %s not exist"
,
pMgmt
->
file
);
code
=
0
;
goto
PRASE_MNODE_OVER
;
}
len
=
(
int32_t
)
fread
(
content
,
1
,
maxLen
,
fp
);
if
(
len
<=
0
)
{
dError
(
"failed to read %s since content is null"
,
pMgmt
->
file
);
goto
PRASE_MNODE_OVER
;
}
content
[
len
]
=
0
;
root
=
cJSON_Parse
(
content
);
if
(
root
==
NULL
)
{
dError
(
"failed to read %s since invalid json format"
,
pMgmt
->
file
);
goto
PRASE_MNODE_OVER
;
}
cJSON
*
deployed
=
cJSON_GetObjectItem
(
root
,
"deployed"
);
if
(
!
deployed
||
deployed
->
type
!=
cJSON_Number
)
{
dError
(
"failed to read %s since deployed not found"
,
pMgmt
->
file
);
goto
PRASE_MNODE_OVER
;
}
pMgmt
->
deployed
=
deployed
->
valueint
;
cJSON
*
dropped
=
cJSON_GetObjectItem
(
root
,
"dropped"
);
if
(
!
dropped
||
dropped
->
type
!=
cJSON_Number
)
{
dError
(
"failed to read %s since dropped not found"
,
pMgmt
->
file
);
goto
PRASE_MNODE_OVER
;
}
pMgmt
->
dropped
=
dropped
->
valueint
;
code
=
0
;
dDebug
(
"succcessed to read file %s, deployed:%d dropped:%d"
,
pMgmt
->
file
,
pMgmt
->
deployed
,
pMgmt
->
dropped
);
PRASE_MNODE_OVER:
if
(
content
!=
NULL
)
free
(
content
);
if
(
root
!=
NULL
)
cJSON_Delete
(
root
);
if
(
fp
!=
NULL
)
fclose
(
fp
);
terrno
=
code
;
return
code
;
}
static
int32_t
dndWriteQnodeFile
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
char
file
[
PATH_MAX
+
20
]
=
{
0
};
snprintf
(
file
,
sizeof
(
file
),
"%s.bak"
,
pMgmt
->
file
);
FILE
*
fp
=
fopen
(
file
,
"w"
);
if
(
fp
==
NULL
)
{
terrno
=
TSDB_CODE_DND_QNODE_WRITE_FILE_ERROR
;
dError
(
"failed to write %s since %s"
,
file
,
terrstr
());
return
-
1
;
}
int32_t
len
=
0
;
int32_t
maxLen
=
4096
;
char
*
content
=
calloc
(
1
,
maxLen
+
1
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"{
\n
"
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
deployed
\"
: %d,
\n
"
,
pMgmt
->
deployed
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
dropped
\"
: %d
\n
"
,
pMgmt
->
dropped
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"}
\n
"
);
fwrite
(
content
,
1
,
len
,
fp
);
taosFfetchFile
(
fileno
(
fp
));
fclose
(
fp
);
free
(
content
);
if
(
taosRenameFile
(
file
,
pMgmt
->
file
)
!=
0
)
{
terrno
=
TSDB_CODE_DND_QNODE_WRITE_FILE_ERROR
;
dError
(
"failed to rename %s since %s"
,
pMgmt
->
file
,
terrstr
());
return
-
1
;
}
dInfo
(
"successed to write %s, deployed:%d dropped:%d"
,
pMgmt
->
file
,
pMgmt
->
deployed
,
pMgmt
->
dropped
);
return
0
;
}
static
int32_t
dndStartQnodeWorker
(
SDnode
*
pDnode
)
{
if
(
dndInitQnodeQueryWorker
(
pDnode
)
!=
0
)
{
dError
(
"failed to start qnode query worker since %s"
,
terrstr
());
return
-
1
;
}
if
(
dndInitQnodeFetchWorker
(
pDnode
)
!=
0
)
{
dError
(
"failed to start qnode fetch worker since %s"
,
terrstr
());
return
-
1
;
}
if
(
dndAllocQnodeQueryQueue
(
pDnode
)
!=
0
)
{
dError
(
"failed to alloc qnode query queue since %s"
,
terrstr
());
return
-
1
;
}
if
(
dndAllocQnodeFetchQueue
(
pDnode
)
!=
0
)
{
dError
(
"failed to alloc qnode fetch queue since %s"
,
terrstr
());
return
-
1
;
}
return
0
;
}
static
void
dndStopQnodeWorker
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
taosWLockLatch
(
&
pMgmt
->
latch
);
pMgmt
->
deployed
=
0
;
taosWUnLockLatch
(
&
pMgmt
->
latch
);
while
(
pMgmt
->
refCount
>
1
)
taosMsleep
(
10
);
while
(
!
taosQueueEmpty
(
pMgmt
->
pQueryQ
))
taosMsleep
(
10
);
while
(
!
taosQueueEmpty
(
pMgmt
->
pFetchQ
))
taosMsleep
(
10
);
dndCleanupQnodeQueryWorker
(
pDnode
);
dndCleanupQnodeFetchWorker
(
pDnode
);
dndFreeQnodeQueryQueue
(
pDnode
);
dndFreeQnodeFetchQueue
(
pDnode
);
}
static
void
dndBuildQnodeOption
(
SDnode
*
pDnode
,
SQnodeOpt
*
pOption
)
{
pOption
->
pDnode
=
pDnode
;
pOption
->
sendMsgToDnodeFp
=
dndSendMsgToDnode
;
pOption
->
sendMsgToMnodeFp
=
dndSendMsgToMnode
;
pOption
->
sendRedirectMsgFp
=
dndSendRedirectMsg
;
pOption
->
dnodeId
=
dndGetDnodeId
(
pDnode
);
pOption
->
clusterId
=
dndGetClusterId
(
pDnode
);
pOption
->
cfg
.
sver
=
pDnode
->
opt
.
sver
;
}
static
int32_t
dndOpenQnode
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
SQnodeOpt
option
=
{
0
};
dndBuildQnodeOption
(
pDnode
,
&
option
);
SQnode
*
pQnode
=
qndOpen
(
&
option
);
if
(
pQnode
==
NULL
)
{
dError
(
"failed to open qnode since %s"
,
terrstr
());
return
-
1
;
}
pMgmt
->
deployed
=
1
;
int32_t
code
=
dndWriteQnodeFile
(
pDnode
);
if
(
code
!=
0
)
{
dError
(
"failed to write qnode file since %s"
,
terrstr
());
code
=
terrno
;
pMgmt
->
deployed
=
0
;
qndClose
(
pQnode
);
// qndDestroy(pDnode->dir.qnode);
terrno
=
code
;
return
-
1
;
}
code
=
dndStartQnodeWorker
(
pDnode
);
if
(
code
!=
0
)
{
dError
(
"failed to start qnode worker since %s"
,
terrstr
());
code
=
terrno
;
pMgmt
->
deployed
=
0
;
dndStopQnodeWorker
(
pDnode
);
qndClose
(
pQnode
);
// qndDestroy(pDnode->dir.qnode);
terrno
=
code
;
return
-
1
;
}
taosWLockLatch
(
&
pMgmt
->
latch
);
pMgmt
->
pQnode
=
pQnode
;
pMgmt
->
deployed
=
1
;
taosWUnLockLatch
(
&
pMgmt
->
latch
);
dInfo
(
"qnode open successfully"
);
return
0
;
}
static
int32_t
dndDropQnode
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
SQnode
*
pQnode
=
dndAcquireQnode
(
pDnode
);
if
(
pQnode
==
NULL
)
{
dError
(
"failed to drop qnode since %s"
,
terrstr
());
return
-
1
;
}
taosRLockLatch
(
&
pMgmt
->
latch
);
pMgmt
->
dropped
=
1
;
taosRUnLockLatch
(
&
pMgmt
->
latch
);
if
(
dndWriteQnodeFile
(
pDnode
)
!=
0
)
{
taosRLockLatch
(
&
pMgmt
->
latch
);
pMgmt
->
dropped
=
0
;
taosRUnLockLatch
(
&
pMgmt
->
latch
);
dndReleaseQnode
(
pDnode
,
pQnode
);
dError
(
"failed to drop qnode since %s"
,
terrstr
());
return
-
1
;
}
dndReleaseQnode
(
pDnode
,
pQnode
);
dndStopQnodeWorker
(
pDnode
);
dndWriteQnodeFile
(
pDnode
);
qndClose
(
pQnode
);
pMgmt
->
pQnode
=
NULL
;
// qndDestroy(pDnode->dir.qnode);
return
0
;
}
int32_t
dndProcessCreateQnodeReq
(
SDnode
*
pDnode
,
SRpcMsg
*
pRpcMsg
)
{
SCreateQnodeInMsg
*
pMsg
=
pRpcMsg
->
pCont
;
pMsg
->
dnodeId
=
htonl
(
pMsg
->
dnodeId
);
if
(
pMsg
->
dnodeId
!=
dndGetDnodeId
(
pDnode
))
{
terrno
=
TSDB_CODE_DND_QNODE_ID_INVALID
;
return
-
1
;
}
else
{
return
dndOpenQnode
(
pDnode
);
}
}
int32_t
dndProcessDropQnodeReq
(
SDnode
*
pDnode
,
SRpcMsg
*
pRpcMsg
)
{
SDropQnodeInMsg
*
pMsg
=
pRpcMsg
->
pCont
;
pMsg
->
dnodeId
=
htonl
(
pMsg
->
dnodeId
);
if
(
pMsg
->
dnodeId
!=
dndGetDnodeId
(
pDnode
))
{
terrno
=
TSDB_CODE_DND_QNODE_ID_INVALID
;
return
-
1
;
}
else
{
return
dndDropQnode
(
pDnode
);
}
}
static
void
dndProcessQnodeQueue
(
SDnode
*
pDnode
,
SRpcMsg
*
pMsg
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
SRpcMsg
*
pRsp
=
NULL
;
int32_t
code
=
0
;
SQnode
*
pQnode
=
dndAcquireQnode
(
pDnode
);
if
(
pQnode
==
NULL
)
{
code
=
-
1
;
}
else
{
code
=
qndProcessQueryReq
(
pQnode
,
pMsg
,
&
pRsp
);
}
if
(
pRsp
!=
NULL
)
{
pRsp
->
ahandle
=
pMsg
->
ahandle
;
rpcSendResponse
(
pRsp
);
free
(
pRsp
);
}
else
{
if
(
code
!=
0
)
code
=
terrno
;
SRpcMsg
rpcRsp
=
{.
handle
=
pMsg
->
handle
,
.
ahandle
=
pMsg
->
ahandle
,
.
code
=
code
};
rpcSendResponse
(
&
rpcRsp
);
}
rpcFreeCont
(
pMsg
->
pCont
);
taosFreeQitem
(
pMsg
);
}
static
int32_t
dndWriteQnodeMsgToQueue
(
SQnode
*
pQnode
,
taos_queue
pQueue
,
SRpcMsg
*
pRpcMsg
)
{
int32_t
code
=
0
;
if
(
pQnode
==
NULL
||
pQueue
==
NULL
)
{
code
=
TSDB_CODE_DND_QNODE_NOT_DEPLOYED
;
}
else
{
SRpcMsg
*
pMsg
=
taosAllocateQitem
(
sizeof
(
SRpcMsg
));
if
(
pMsg
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
}
else
{
*
pMsg
=
*
pRpcMsg
;
if
(
taosWriteQitem
(
pQueue
,
pMsg
)
!=
0
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
}
}
}
if
(
code
!=
0
)
{
if
(
pRpcMsg
->
msgType
&
1u
)
{
SRpcMsg
rsp
=
{.
handle
=
pRpcMsg
->
handle
,
.
code
=
code
};
rpcSendResponse
(
&
rsp
);
}
rpcFreeCont
(
pRpcMsg
->
pCont
);
}
}
void
dndProcessQnodeQueryMsg
(
SDnode
*
pDnode
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
SQnode
*
pQnode
=
dndAcquireQnode
(
pDnode
);
dndWriteQnodeMsgToQueue
(
pQnode
,
pMgmt
->
pQueryQ
,
pMsg
);
dndReleaseQnode
(
pDnode
,
pQnode
);
}
void
dndProcessQnodeFetchMsg
(
SDnode
*
pDnode
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
SQnode
*
pQnode
=
dndAcquireQnode
(
pDnode
);
dndWriteQnodeMsgToQueue
(
pQnode
,
pMgmt
->
pFetchQ
,
pMsg
);
dndReleaseQnode
(
pDnode
,
pQnode
);
}
static
int32_t
dndAllocQnodeQueryQueue
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
pMgmt
->
pQueryQ
=
tWorkerAllocQueue
(
&
pMgmt
->
queryPool
,
pDnode
,
(
FProcessItem
)
dndProcessQnodeQueue
);
if
(
pMgmt
->
pQueryQ
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
return
0
;
}
static
void
dndFreeQnodeQueryQueue
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
tWorkerFreeQueue
(
&
pMgmt
->
queryPool
,
pMgmt
->
pQueryQ
);
pMgmt
->
pQueryQ
=
NULL
;
}
static
int32_t
dndInitQnodeQueryWorker
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
SWorkerPool
*
pPool
=
&
pMgmt
->
queryPool
;
pPool
->
name
=
"qnode-query"
;
pPool
->
min
=
0
;
pPool
->
max
=
1
;
if
(
tWorkerInit
(
pPool
)
!=
0
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
dDebug
(
"qnode query worker is initialized"
);
return
0
;
}
static
void
dndCleanupQnodeQueryWorker
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
tWorkerCleanup
(
&
pMgmt
->
queryPool
);
dDebug
(
"qnode query worker is closed"
);
}
static
int32_t
dndAllocQnodeFetchQueue
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
pMgmt
->
pFetchQ
=
tWorkerAllocQueue
(
&
pMgmt
->
queryPool
,
pDnode
,
(
FProcessItem
)
dndProcessQnodeQueue
);
if
(
pMgmt
->
pFetchQ
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
return
0
;
}
static
void
dndFreeQnodeFetchQueue
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
tWorkerFreeQueue
(
&
pMgmt
->
fetchPool
,
pMgmt
->
pFetchQ
);
pMgmt
->
pFetchQ
=
NULL
;
}
static
int32_t
dndInitQnodeFetchWorker
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
SWorkerPool
*
pPool
=
&
pMgmt
->
fetchPool
;
pPool
->
name
=
"qnode-fetch"
;
pPool
->
min
=
0
;
pPool
->
max
=
1
;
if
(
tWorkerInit
(
pPool
)
!=
0
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
dDebug
(
"qnode fetch worker is initialized"
);
return
0
;
}
static
void
dndCleanupQnodeFetchWorker
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
tWorkerCleanup
(
&
pMgmt
->
fetchPool
);
dDebug
(
"qnode fetch worker is closed"
);
}
int32_t
dndInitQnode
(
SDnode
*
pDnode
)
{
dInfo
(
"dnode-qnode start to init"
);
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
taosInitRWLatch
(
&
pMgmt
->
latch
);
char
path
[
PATH_MAX
];
snprintf
(
path
,
PATH_MAX
,
"%s/qnode.json"
,
pDnode
->
dir
.
dnode
);
pMgmt
->
file
=
strdup
(
path
);
if
(
pMgmt
->
file
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
if
(
dndReadQnodeFile
(
pDnode
)
!=
0
)
{
return
-
1
;
}
if
(
pMgmt
->
dropped
)
return
0
;
if
(
!
pMgmt
->
deployed
)
return
0
;
return
dndOpenQnode
(
pDnode
);
}
void
dndCleanupQnode
(
SDnode
*
pDnode
)
{
SQnodeMgmt
*
pMgmt
=
&
pDnode
->
qmgmt
;
dInfo
(
"dnode-qnode start to clean up"
);
if
(
pMgmt
->
pQnode
)
dndStopQnodeWorker
(
pDnode
);
tfree
(
pMgmt
->
file
);
qndClose
(
pMgmt
->
pQnode
);
pMgmt
->
pQnode
=
NULL
;
dInfo
(
"dnode-qnode is cleaned up"
);
}
source/dnode/mgmt/impl/src/dnode.c
浏览文件 @
6d050231
...
...
@@ -84,21 +84,14 @@ static int32_t dndInitEnv(SDnode *pDnode, SDnodeOpt *pOption) {
char
path
[
PATH_MAX
+
100
];
snprintf
(
path
,
sizeof
(
path
),
"%s%smnode"
,
pOption
->
dataDir
,
TD_DIRSEP
);
pDnode
->
dir
.
mnode
=
tstrdup
(
path
);
snprintf
(
path
,
sizeof
(
path
),
"%s%svnode"
,
pOption
->
dataDir
,
TD_DIRSEP
);
pDnode
->
dir
.
vnodes
=
tstrdup
(
path
);
snprintf
(
path
,
sizeof
(
path
),
"%s%sdnode"
,
pOption
->
dataDir
,
TD_DIRSEP
);
pDnode
->
dir
.
dnode
=
tstrdup
(
path
);
snprintf
(
path
,
sizeof
(
path
),
"%s%sqnode"
,
pOption
->
dataDir
,
TD_DIRSEP
);
pDnode
->
dir
.
dnode
=
tstrdup
(
path
);
snprintf
(
path
,
sizeof
(
path
),
"%s%ssnode"
,
pOption
->
dataDir
,
TD_DIRSEP
);
pDnode
->
dir
.
dnode
=
tstrdup
(
path
);
pDnode
->
dir
.
snode
=
tstrdup
(
path
);
snprintf
(
path
,
sizeof
(
path
),
"%s%sbnode"
,
pOption
->
dataDir
,
TD_DIRSEP
);
pDnode
->
dir
.
d
node
=
tstrdup
(
path
);
pDnode
->
dir
.
b
node
=
tstrdup
(
path
);
if
(
pDnode
->
dir
.
mnode
==
NULL
||
pDnode
->
dir
.
vnodes
==
NULL
||
pDnode
->
dir
.
dnode
==
NULL
)
{
dError
(
"failed to malloc dir object"
);
...
...
@@ -124,12 +117,6 @@ static int32_t dndInitEnv(SDnode *pDnode, SDnodeOpt *pOption) {
return
-
1
;
}
if
(
taosMkDir
(
pDnode
->
dir
.
qnode
)
!=
0
)
{
dError
(
"failed to create dir:%s since %s"
,
pDnode
->
dir
.
qnode
,
strerror
(
errno
));
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
if
(
taosMkDir
(
pDnode
->
dir
.
snode
)
!=
0
)
{
dError
(
"failed to create dir:%s since %s"
,
pDnode
->
dir
.
snode
,
strerror
(
errno
));
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
...
...
@@ -147,29 +134,11 @@ static int32_t dndInitEnv(SDnode *pDnode, SDnodeOpt *pOption) {
}
static
void
dndCleanupEnv
(
SDnode
*
pDnode
)
{
if
(
pDnode
->
dir
.
mnode
!=
NULL
)
{
tfree
(
pDnode
->
dir
.
mnode
);
}
if
(
pDnode
->
dir
.
vnodes
!=
NULL
)
{
tfree
(
pDnode
->
dir
.
vnodes
);
}
if
(
pDnode
->
dir
.
dnode
!=
NULL
)
{
tfree
(
pDnode
->
dir
.
dnode
);
}
if
(
pDnode
->
dir
.
qnode
!=
NULL
)
{
tfree
(
pDnode
->
dir
.
qnode
);
}
if
(
pDnode
->
dir
.
bnode
!=
NULL
)
{
tfree
(
pDnode
->
dir
.
snode
);
}
if
(
pDnode
->
dir
.
snode
!=
NULL
)
{
tfree
(
pDnode
->
dir
.
bnode
);
}
tfree
(
pDnode
->
dir
.
mnode
);
tfree
(
pDnode
->
dir
.
vnodes
);
tfree
(
pDnode
->
dir
.
dnode
);
tfree
(
pDnode
->
dir
.
snode
);
tfree
(
pDnode
->
dir
.
bnode
);
if
(
pDnode
->
lockFd
>=
0
)
{
taosUnLockFile
(
pDnode
->
lockFd
);
...
...
source/util/src/terror.c
浏览文件 @
6d050231
...
...
@@ -256,6 +256,24 @@ TAOS_DEFINE_ERROR(TSDB_CODE_DND_MNODE_ID_INVALID, "Mnode Id invalid")
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_MNODE_ID_NOT_FOUND
,
"Mnode Id not found"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_MNODE_READ_FILE_ERROR
,
"Read mnode.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_MNODE_WRITE_FILE_ERROR
,
"Write mnode.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_QNODE_ALREADY_DEPLOYED
,
"Qnode already deployed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_QNODE_NOT_DEPLOYED
,
"Qnode not deployed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_QNODE_ID_INVALID
,
"Qnode Id invalid"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_QNODE_ID_NOT_FOUND
,
"Qnode Id not found"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_QNODE_READ_FILE_ERROR
,
"Read qnode.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_QNODE_WRITE_FILE_ERROR
,
"Write qnode.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_SNODE_ALREADY_DEPLOYED
,
"Snode already deployed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_SNODE_NOT_DEPLOYED
,
"Snode not deployed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_SNODE_ID_INVALID
,
"Snode Id invalid"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_SNODE_ID_NOT_FOUND
,
"Snode Id not found"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_SNODE_READ_FILE_ERROR
,
"Read snode.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_SNODE_WRITE_FILE_ERROR
,
"Write snode.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_BNODE_ALREADY_DEPLOYED
,
"Bnode already deployed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_BNODE_NOT_DEPLOYED
,
"Bnode not deployed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_BNODE_ID_INVALID
,
"Bnode Id invalid"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_BNODE_ID_NOT_FOUND
,
"Bnode Id not found"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_BNODE_READ_FILE_ERROR
,
"Read bnode.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_BNODE_WRITE_FILE_ERROR
,
"Write bnode.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_VNODE_TOO_MANY_VNODES
,
"Too many vnode directories"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_VNODE_READ_FILE_ERROR
,
"Read vnodes.json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_VNODE_WRITE_FILE_ERROR
,
"Write vnodes.json error"
)
...
...
@@ -360,132 +378,6 @@ TAOS_DEFINE_ERROR(TSDB_CODE_WAL_APP_ERROR, "Unexpected generic er
TAOS_DEFINE_ERROR
(
TSDB_CODE_WAL_FILE_CORRUPTED
,
"WAL file is corrupted"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_WAL_SIZE_LIMIT
,
"WAL size exceeds limit"
)
// http
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_SERVER_OFFLINE
,
"http server is not onlin"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_UNSUPPORT_URL
,
"url is not support"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_INVALID_URL
,
"invalid url format"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_NO_ENOUGH_MEMORY
,
"no enough memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_REQUSET_TOO_BIG
,
"request size is too big"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_NO_AUTH_INFO
,
"no auth info input"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_NO_MSG_INPUT
,
"request is empty"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_NO_SQL_INPUT
,
"no sql input"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_NO_EXEC_USEDB
,
"no need to execute use db cmd"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_SESSION_FULL
,
"session list was full"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_GEN_TAOSD_TOKEN_ERR
,
"generate taosd token error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_INVALID_MULTI_REQUEST
,
"size of multi request is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_CREATE_GZIP_FAILED
,
"failed to create gzip"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_FINISH_GZIP_FAILED
,
"failed to finish gzip"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_LOGIN_FAILED
,
"failed to login"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_INVALID_VERSION
,
"invalid http version"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_INVALID_CONTENT_LENGTH
,
"invalid content length"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_INVALID_AUTH_TYPE
,
"invalid type of Authorization"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_INVALID_AUTH_FORMAT
,
"invalid format of Authorization"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_INVALID_BASIC_AUTH
,
"invalid basic Authorization"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_INVALID_TAOSD_AUTH
,
"invalid taosd Authorization"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
,
"failed to parse method"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_TARGET_FAILED
,
"failed to parse target"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
,
"failed to parse http version"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_SP_FAILED
,
"failed to parse sp"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_STATUS_FAILED
,
"failed to parse status"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_PHRASE_FAILED
,
"failed to parse phrase"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_CRLF_FAILED
,
"failed to parse crlf"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_HEADER_FAILED
,
"failed to parse header"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED
,
"failed to parse header key"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_HEADER_VAL_FAILED
,
"failed to parse header val"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_CHUNK_SIZE_FAILED
,
"failed to parse chunk size"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_CHUNK_FAILED
,
"failed to parse chunk"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_END_FAILED
,
"failed to parse end section"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_INVALID_STATE
,
"invalid parse state"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_PARSE_ERROR_STATE
,
"failed to parse error section"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_GC_QUERY_NULL
,
"query size is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_GC_QUERY_SIZE
,
"query size can not more than 100"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_GC_REQ_PARSE_ERROR
,
"parse grafana json error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_DB_NOT_INPUT
,
"database name can not be null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_DB_TOO_LONG
,
"database name too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_INVALID_JSON
,
"invalid telegraf json fromat"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_METRICS_NULL
,
"metrics size is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_METRICS_SIZE
,
"metrics size can not more than 1K"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_METRIC_NULL
,
"metric name not find"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_METRIC_TYPE
,
"metric name type should be string"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_METRIC_NAME_NULL
,
"metric name length is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_METRIC_NAME_LONG
,
"metric name length too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TIMESTAMP_NULL
,
"timestamp not find"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TIMESTAMP_TYPE
,
"timestamp type should be integer"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TIMESTAMP_VAL_NULL
,
"timestamp value smaller than 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TAGS_NULL
,
"tags not find"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TAGS_SIZE_0
,
"tags size is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TAGS_SIZE_LONG
,
"tags size too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TAG_NULL
,
"tag is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TAG_NAME_NULL
,
"tag name is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TAG_NAME_SIZE
,
"tag name length too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TAG_VALUE_TYPE
,
"tag value type should be number or string"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TAG_VALUE_NULL
,
"tag value is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TABLE_NULL
,
"table is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_TABLE_SIZE
,
"table name length too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_FIELDS_NULL
,
"fields not find"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_FIELDS_SIZE_0
,
"fields size is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_FIELDS_SIZE_LONG
,
"fields size too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_FIELD_NULL
,
"field is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_FIELD_NAME_NULL
,
"field name is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_FIELD_NAME_SIZE
,
"field name length too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_FIELD_VALUE_TYPE
,
"field value type should be number or string"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_FIELD_VALUE_NULL
,
"field value is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_HOST_NOT_STRING
,
"host type should be string"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_TG_STABLE_NOT_EXIST
,
"stable not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_DB_NOT_INPUT
,
"database name can not be null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_DB_TOO_LONG
,
"database name too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_INVALID_JSON
,
"invalid opentsdb json fromat"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_METRICS_NULL
,
"metrics size is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_METRICS_SIZE
,
"metrics size can not more than 10K"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_METRIC_NULL
,
"metric name not find"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_METRIC_TYPE
,
"metric name type should be string"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_METRIC_NAME_NULL
,
"metric name length is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_METRIC_NAME_LONG
,
"metric name length can not more than 22"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TIMESTAMP_NULL
,
"timestamp not find"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TIMESTAMP_TYPE
,
"timestamp type should be integer"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TIMESTAMP_VAL_NULL
,
"timestamp value smaller than 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAGS_NULL
,
"tags not find"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAGS_SIZE_0
,
"tags size is 0"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAGS_SIZE_LONG
,
"tags size too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAG_NULL
,
"tag is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAG_NAME_NULL
,
"tag name is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAG_NAME_SIZE
,
"tag name length too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAG_VALUE_TYPE
,
"tag value type should be boolean, number or string"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAG_VALUE_NULL
,
"tag value is null"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_TAG_VALUE_TOO_LONG
,
"tag value can not more than 64"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_VALUE_NULL
,
"value not find"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_OP_VALUE_TYPE
,
"value type should be boolean, number or string"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_HTTP_REQUEST_JSON_ERROR
,
"http request json error"
)
// odbc
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_OOM
,
"out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_CHAR_NOT_NUM
,
"convertion not a valid literal input"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_UNDEF
,
"convertion undefined"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_TRUNC_FRAC
,
"convertion fractional truncated"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_TRUNC
,
"convertion truncated"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_NOT_SUPPORT
,
"convertion not supported"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_OOR
,
"convertion numeric value out of range"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_OUT_OF_RANGE
,
"out of range"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_NOT_SUPPORT
,
"not supported yet"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_INVALID_HANDLE
,
"invalid handle"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_NO_RESULT
,
"no result set"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_NO_FIELDS
,
"no fields returned"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_INVALID_CURSOR
,
"invalid cursor"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_STATEMENT_NOT_READY
,
"statement not ready"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONNECTION_BUSY
,
"connection still busy"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_BAD_CONNSTR
,
"bad connection string"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_BAD_ARG
,
"bad argument"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_NOT_VALID_TS
,
"not a valid timestamp"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_SRC_TOO_LARGE
,
"src too large"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_SRC_BAD_SEQ
,
"src bad sequence"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_SRC_INCOMPLETE
,
"src incomplete"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ODBC_CONV_SRC_GENERAL
,
"src general"
)
// tfs
TAOS_DEFINE_ERROR
(
TSDB_CODE_FS_OUT_OF_MEMORY
,
"tfs out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_FS_INVLD_CFG
,
"tfs invalid mount config"
)
...
...
tests/script/general/table/basic1.sim
浏览文件 @
6d050231
...
...
@@ -30,7 +30,18 @@ if $rows != 2 then
endi
print $data00 $data01 $data02
print $data00 $data11 $data12
print $data10 $data11 $data12
sql drop table st2
sql show stables
if $rows != 1 then
return -1
endi
print -->
print $data00 $data01 $data02
print $data10 $data11 $data12
return
...
...
tests/script/unique/dnode/basic1.sim
浏览文件 @
6d050231
...
...
@@ -15,7 +15,7 @@ if $data00 != 1 then
return -1
endi
if $data0
1 != 192.168.0.1
then
if $data0
2 != 0
then
return -1
endi
...
...
@@ -28,7 +28,7 @@ if $data00 != 1 then
return -1
endi
if $data0
1 != 192.168.0.1
then
if $data0
2 != master
then
return -1
endi
...
...
@@ -43,18 +43,10 @@ if $data00 != 1 then
return -1
endi
if $data01 != 192.168.0.1 then
return -1
endi
if $data10 != 2 then
return -1
endi
if $data11 != 192.168.0.2 then
return -1
endi
sql show mnodes;
if $rows != 1 then
return -1
...
...
@@ -64,27 +56,25 @@ if $data00 != 1 then
return -1
endi
if $data01 !=
192.168.0.1
then
if $data01 !=
master
then
return -1
endi
print =============== create table
sql create database d1;
sql create database d2;
sql create database d3;
sql create database d4;
sql create database d5;
sql create table d1.t1 (ts timestamp, i int);
sql create table d2.t1 (ts timestamp, i int);
sql create table d3.t1 (ts timestamp, i int);
sql create table d4.t1 (ts timestamp, i int);
sql show dnodes;
if $data05 != 2 then
sql show databases
if $rows != 2 then
return -1
endi
if $data15 != 2 then
sql use d1
sql show vgroups;
if $rows != 2 then
return -1
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录