Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
68514f3d
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
68514f3d
编写于
2月 24, 2022
作者:
S
Shengliang Guan
提交者:
GitHub
2月 24, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #10391 from taosdata/feature/config
cfg
上级
fac3fad4
1383e53d
变更
58
展开全部
隐藏空白更改
内联
并排
Showing
58 changed file
with
715 addition
and
1569 deletion
+715
-1569
include/common/tep.h
include/common/tep.h
+1
-1
include/common/tglobal.h
include/common/tglobal.h
+57
-16
include/dnode/mgmt/dnode.h
include/dnode/mgmt/dnode.h
+1
-23
include/dnode/mnode/mnode.h
include/dnode/mnode/mnode.h
+0
-14
include/libs/transport/trpc.h
include/libs/transport/trpc.h
+1
-7
include/os/osEnv.h
include/os/osEnv.h
+2
-0
include/util/tcfg.h
include/util/tcfg.h
+0
-0
include/util/tconfig.h
include/util/tconfig.h
+8
-9
source/client/CMakeLists.txt
source/client/CMakeLists.txt
+1
-1
source/client/inc/clientInt.h
source/client/inc/clientInt.h
+1
-8
source/client/src/clientCfg.c
source/client/src/clientCfg.c
+0
-206
source/client/src/clientEnv.c
source/client/src/clientEnv.c
+5
-9
source/client/src/clientImpl.c
source/client/src/clientImpl.c
+32
-28
source/client/test/CMakeLists.txt
source/client/test/CMakeLists.txt
+2
-2
source/common/src/tep.c
source/common/src/tep.c
+2
-2
source/common/src/tglobal.c
source/common/src/tglobal.c
+348
-387
source/dnode/mgmt/daemon/CMakeLists.txt
source/dnode/mgmt/daemon/CMakeLists.txt
+1
-1
source/dnode/mgmt/daemon/inc/dmnInt.h
source/dnode/mgmt/daemon/inc/dmnInt.h
+3
-9
source/dnode/mgmt/daemon/src/dmnCfg.c
source/dnode/mgmt/daemon/src/dmnCfg.c
+8
-189
source/dnode/mgmt/daemon/src/dmnLog.c
source/dnode/mgmt/daemon/src/dmnLog.c
+0
-132
source/dnode/mgmt/daemon/src/dmnMain.c
source/dnode/mgmt/daemon/src/dmnMain.c
+11
-15
source/dnode/mgmt/impl/inc/dndEnv.h
source/dnode/mgmt/impl/inc/dndEnv.h
+0
-6
source/dnode/mgmt/impl/inc/dndInt.h
source/dnode/mgmt/impl/inc/dndInt.h
+1
-0
source/dnode/mgmt/impl/src/dndBnode.c
source/dnode/mgmt/impl/src/dndBnode.c
+1
-1
source/dnode/mgmt/impl/src/dndEnv.c
source/dnode/mgmt/impl/src/dndEnv.c
+7
-13
source/dnode/mgmt/impl/src/dndMgmt.c
source/dnode/mgmt/impl/src/dndMgmt.c
+8
-8
source/dnode/mgmt/impl/src/dndMnode.c
source/dnode/mgmt/impl/src/dndMnode.c
+0
-9
source/dnode/mgmt/impl/src/dndQnode.c
source/dnode/mgmt/impl/src/dndQnode.c
+1
-1
source/dnode/mgmt/impl/src/dndSnode.c
source/dnode/mgmt/impl/src/dndSnode.c
+1
-1
source/dnode/mgmt/impl/src/dndTransport.c
source/dnode/mgmt/impl/src/dndTransport.c
+4
-4
source/dnode/mgmt/impl/src/dndVnodes.c
source/dnode/mgmt/impl/src/dndVnodes.c
+5
-5
source/dnode/mgmt/impl/test/sut/src/server.cpp
source/dnode/mgmt/impl/test/sut/src/server.cpp
+0
-5
source/dnode/mgmt/impl/test/sut/src/sut.cpp
source/dnode/mgmt/impl/test/sut/src/sut.cpp
+1
-6
source/dnode/mnode/impl/inc/mndInt.h
source/dnode/mnode/impl/inc/mndInt.h
+2
-1
source/dnode/mnode/impl/src/mndDnode.c
source/dnode/mnode/impl/src/mndDnode.c
+15
-16
source/dnode/mnode/impl/src/mndProfile.c
source/dnode/mnode/impl/src/mndProfile.c
+3
-3
source/dnode/mnode/impl/src/mndShow.c
source/dnode/mnode/impl/src/mndShow.c
+1
-1
source/dnode/mnode/impl/src/mndTelem.c
source/dnode/mnode/impl/src/mndTelem.c
+4
-8
source/dnode/mnode/impl/src/mnode.c
source/dnode/mnode/impl/src/mnode.c
+1
-21
source/libs/CMakeLists.txt
source/libs/CMakeLists.txt
+0
-1
source/libs/config/CMakeLists.txt
source/libs/config/CMakeLists.txt
+0
-13
source/libs/config/inc/cfgInt.h
source/libs/config/inc/cfgInt.h
+0
-47
source/libs/config/src/cfgApolloUrl.c
source/libs/config/src/cfgApolloUrl.c
+0
-22
source/libs/config/src/cfgCfgFile.c
source/libs/config/src/cfgCfgFile.c
+0
-70
source/libs/config/src/cfgEnvFile.c
source/libs/config/src/cfgEnvFile.c
+0
-22
source/libs/config/src/cfgEnvVar.c
source/libs/config/src/cfgEnvVar.c
+0
-22
source/libs/config/test/CMakeLists.txt
source/libs/config/test/CMakeLists.txt
+0
-14
source/libs/executor/src/executorimpl.c
source/libs/executor/src/executorimpl.c
+3
-6
source/libs/qcom/src/queryUtil.c
source/libs/qcom/src/queryUtil.c
+3
-4
source/libs/transport/src/rpcMain.c
source/libs/transport/src/rpcMain.c
+1
-9
source/libs/transport/src/trans.c
source/libs/transport/src/trans.c
+1
-1
source/os/src/osEnv.c
source/os/src/osEnv.c
+13
-3
source/os/src/osLocale.c
source/os/src/osLocale.c
+2
-7
source/os/src/osSysinfo.c
source/os/src/osSysinfo.c
+1
-1
source/util/src/tconfig.c
source/util/src/tconfig.c
+134
-138
source/util/src/ttimer.c
source/util/src/ttimer.c
+1
-1
source/util/test/CMakeLists.txt
source/util/test/CMakeLists.txt
+8
-0
source/util/test/cfgTest.cpp
source/util/test/cfgTest.cpp
+9
-20
未找到文件。
include/common/tep.h
浏览文件 @
68514f3d
...
...
@@ -23,7 +23,7 @@ typedef struct SBlockOrderInfo {
// bool hasNull;
}
SBlockOrderInfo
;
int
taosGetFqdnPortFromEp
(
const
char
*
ep
,
uint16_t
defaultPort
,
SEp
*
pEp
);
int
taosGetFqdnPortFromEp
(
const
char
*
ep
,
SEp
*
pEp
);
void
addEpIntoEpSet
(
SEpSet
*
pEpSet
,
const
char
*
fqdn
,
uint16_t
port
);
bool
isEpsetEqual
(
const
SEpSet
*
s1
,
const
SEpSet
*
s2
);
...
...
include/common/tglobal.h
浏览文件 @
68514f3d
...
...
@@ -20,24 +20,44 @@
extern
"C"
{
#endif
#include "tcfg.h"
#include "tdef.h"
// cluster
extern
char
tsFirst
[];
extern
char
tsSecond
[];
extern
char
tsLocalFqdn
[];
extern
char
tsLocalEp
[];
extern
uint16_t
tsServerPort
;
extern
int32_t
tsVersion
;
extern
int32_t
tsStatusInterval
;
extern
bool
tsEnableTelemetryReporting
;
// common
extern
int32_t
tsCompressMsgSize
;
extern
int32_t
tsCompressColData
;
extern
int32_t
tsMaxNumOfDistinctResults
;
extern
int
tsCompatibleModel
;
// 2.0 compatible model
extern
int8_t
tsEnableSlaveQuery
;
extern
int8_t
tsEnableAdjustMaster
;
extern
int8_t
tsPrintAuth
;
extern
int64_t
tsTickPerDay
[
3
];
extern
int32_t
tsRpcTimer
;
extern
int32_t
tsRpcMaxTime
;
extern
bool
tsRpcForceTcp
;
// all commands go to tcp protocol if this is enabled
extern
int32_t
tsMaxConnections
;
extern
int32_t
tsMaxShellConns
;
extern
int32_t
tsShellActivityTimer
;
extern
int32_t
tsMaxTmrCtrl
;
extern
float
tsNumOfThreadsPerCore
;
extern
int32_t
tsNumOfCommitThreads
;
extern
float
tsRatioOfQueryCores
;
extern
int32_t
tsCompressMsgSize
;
extern
int32_t
tsCompressColData
;
extern
int32_t
tsMaxNumOfDistinctResults
;
extern
int32_t
tsCompatibleModel
;
extern
bool
tsEnableSlaveQuery
;
extern
bool
tsPrintAuth
;
extern
int64_t
tsTickPerDay
[
3
];
// query buffer management
extern
int32_t
tsQueryBufferSize
;
// maximum allowed usage buffer size in MB for each data node during query processing
extern
int64_t
tsQueryBufferSizeBytes
;
// maximum allowed usage buffer size in byte for each data node
extern
int32_t
tsRetrieveBlockingModel
;
// retrieve threads will be blocked
extern
int8_t
tsKeepOriginalColumnName
;
extern
int8_t
tsDeadLockKillQuery
;
extern
bool
tsRetrieveBlockingModel
;
// retrieve threads will be blocked
extern
bool
tsKeepOriginalColumnName
;
extern
bool
tsDeadLockKillQuery
;
// client
extern
int32_t
tsMaxWildCardsLen
;
...
...
@@ -52,13 +72,34 @@ extern float tsStreamComputDelayRatio; // the delayed computing ration of the
extern
int32_t
tsProjectExecInterval
;
extern
int64_t
tsMaxRetentWindow
;
// build info
extern
char
version
[];
extern
char
compatible_version
[];
extern
char
gitinfo
[];
extern
char
gitinfoOfInternal
[];
extern
char
buildinfo
[];
// lossy
extern
char
tsLossyColumns
[];
extern
double
tsFPrecision
;
extern
double
tsDPrecision
;
extern
uint32_t
tsMaxRange
;
extern
uint32_t
tsCurRange
;
extern
char
tsCompressor
[];
// tfs
extern
int32_t
tsDiskCfgNum
;
extern
SDiskCfg
tsDiskCfg
[];
#define NEEDTO_COMPRESSS_MSG(size) (tsCompressMsgSize != -1 && (size) > tsCompressMsgSize)
int32_t
taosCfgDynamicOptions
(
char
*
msg
);
bool
taosCheckBalanceCfgOptions
(
const
char
*
option
,
int32_t
*
vnodeId
,
int32_t
*
dnodeId
);
void
taosAddDataDir
(
int
index
,
char
*
v1
,
int
level
,
int
primary
);
void
taosReadDataDirCfg
(
char
*
v1
,
char
*
v2
,
char
*
v3
);
void
taosPrintDataDirCfg
();
int32_t
taosCreateLog
(
const
char
*
logname
,
int32_t
logFileNum
,
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
,
bool
tsc
);
int32_t
taosInitCfg
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
,
bool
tsc
);
void
taosCleanupCfg
();
void
taosCfgDynamicOptions
(
const
char
*
option
,
const
char
*
value
);
struct
SConfig
*
taosGetCfg
();
#ifdef __cplusplus
}
...
...
include/dnode/mgmt/dnode.h
浏览文件 @
68514f3d
...
...
@@ -25,29 +25,12 @@ extern "C" {
/* ------------------------ TYPES EXPOSED ---------------- */
typedef
struct
SDnode
SDnode
;
/* ------------------------ Environment ------------------ */
typedef
struct
{
int32_t
sver
;
int32_t
numOfCores
;
uint16_t
numOfCommitThreads
;
bool
enableTelem
;
bool
printAuth
;
int32_t
rpcTimer
;
int32_t
rpcMaxTime
;
char
timezone
[
TD_TIMEZONE_LEN
];
char
locale
[
TD_LOCALE_LEN
];
char
charset
[
TD_LOCALE_LEN
];
char
buildinfo
[
64
];
char
gitinfo
[
48
];
}
SDnodeEnvCfg
;
/**
* @brief Initialize the environment
*
* @param pOption Option of the environment
* @return int32_t 0 for success and -1 for failure
*/
int32_t
dndInit
(
const
SDnodeEnvCfg
*
pCfg
);
int32_t
dndInit
();
/**
* @brief clear the environment
...
...
@@ -58,11 +41,6 @@ void dndCleanup();
/* ------------------------ SDnode ----------------------- */
typedef
struct
{
int32_t
numOfSupportVnodes
;
int32_t
statusInterval
;
float
numOfThreadsPerCore
;
float
ratioOfQueryCores
;
int32_t
maxShellConns
;
int32_t
shellActivityTimer
;
uint16_t
serverPort
;
char
dataDir
[
TSDB_FILENAME_LEN
];
char
localEp
[
TSDB_EP_LEN
];
...
...
include/dnode/mnode/mnode.h
浏览文件 @
68514f3d
...
...
@@ -44,26 +44,12 @@ typedef struct SMnodeLoad {
int64_t
compStorage
;
}
SMnodeLoad
;
typedef
struct
SMnodeCfg
{
int32_t
sver
;
bool
enableTelem
;
bool
printAuth
;
int32_t
statusInterval
;
int32_t
shellActivityTimer
;
char
*
timezone
;
char
*
locale
;
char
*
charset
;
char
*
buildinfo
;
char
*
gitinfo
;
}
SMnodeCfg
;
typedef
struct
{
int32_t
dnodeId
;
int64_t
clusterId
;
int8_t
replica
;
int8_t
selfIndex
;
SReplica
replicas
[
TSDB_MAX_REPLICA
];
SMnodeCfg
cfg
;
SDnode
*
pDnode
;
PutReqToMWriteQFp
putReqToMWriteQFp
;
PutReqToMReadQFp
putReqToMReadQFp
;
...
...
include/libs/transport/trpc.h
浏览文件 @
68514f3d
...
...
@@ -84,13 +84,7 @@ typedef struct SRpcInit {
void
*
parent
;
}
SRpcInit
;
typedef
struct
{
int32_t
rpcTimer
;
int32_t
rpcMaxTime
;
int32_t
sver
;
}
SRpcCfg
;
int32_t
rpcInit
(
SRpcCfg
*
pCfg
);
int32_t
rpcInit
();
void
rpcCleanup
();
void
*
rpcOpen
(
const
SRpcInit
*
pRpc
);
void
rpcClose
(
void
*
);
...
...
include/os/osEnv.h
浏览文件 @
68514f3d
...
...
@@ -47,6 +47,8 @@ void osSetLogReservedSpace(float sizeInGB);
void
osSetTempReservedSpace
(
float
sizeInGB
);
void
osSetDataReservedSpace
(
float
sizeInGB
);
void
osSetTimezone
(
const
char
*
timezone
);
void
osSetLocale
(
const
char
*
locale
,
const
char
*
charset
);
bool
osSetEnableCore
(
bool
enable
);
#ifdef __cplusplus
}
...
...
include/
common
/tcfg.h
→
include/
util
/tcfg.h
浏览文件 @
68514f3d
文件已移动
include/
libs/config/
config.h
→
include/
util/t
config.h
浏览文件 @
68514f3d
...
...
@@ -42,7 +42,6 @@ typedef enum {
CFG_DTYPE_INT64
,
CFG_DTYPE_FLOAT
,
CFG_DTYPE_STRING
,
CFG_DTYPE_IPSTR
,
CFG_DTYPE_DIR
,
CFG_DTYPE_LOCALE
,
CFG_DTYPE_CHARSET
,
...
...
@@ -52,6 +51,7 @@ typedef enum {
typedef
struct
SConfigItem
{
ECfgSrcType
stype
;
ECfgDataType
dtype
;
bool
tsc
;
char
*
name
;
union
{
bool
bval
;
...
...
@@ -82,13 +82,12 @@ void cfgCancelIterate(SConfig *pCfg, SConfigItem *pIter);
SConfigItem
*
cfgGetItem
(
SConfig
*
pCfg
,
const
char
*
name
);
int32_t
cfgSetItem
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
value
,
ECfgSrcType
stype
);
int32_t
cfgAddBool
(
SConfig
*
pCfg
,
const
char
*
name
,
bool
defaultVal
);
int32_t
cfgAddInt32
(
SConfig
*
pCfg
,
const
char
*
name
,
int32_t
defaultVal
,
int64_t
minval
,
int64_t
maxval
);
int32_t
cfgAddInt64
(
SConfig
*
pCfg
,
const
char
*
name
,
int64_t
defaultVal
,
int64_t
minval
,
int64_t
maxval
);
int32_t
cfgAddFloat
(
SConfig
*
pCfg
,
const
char
*
name
,
float
defaultVal
,
double
minval
,
double
maxval
);
int32_t
cfgAddString
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
);
int32_t
cfgAddIpStr
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVa
);
int32_t
cfgAddDir
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
);
int32_t
cfgAddBool
(
SConfig
*
pCfg
,
const
char
*
name
,
bool
defaultVal
,
bool
tsc
);
int32_t
cfgAddInt32
(
SConfig
*
pCfg
,
const
char
*
name
,
int32_t
defaultVal
,
int64_t
minval
,
int64_t
maxval
,
bool
tsc
);
int32_t
cfgAddInt64
(
SConfig
*
pCfg
,
const
char
*
name
,
int64_t
defaultVal
,
int64_t
minval
,
int64_t
maxval
,
bool
tsc
);
int32_t
cfgAddFloat
(
SConfig
*
pCfg
,
const
char
*
name
,
float
defaultVal
,
double
minval
,
double
maxval
,
bool
tsc
);
int32_t
cfgAddString
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
,
bool
tsc
);
int32_t
cfgAddDir
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
,
bool
tsc
);
int32_t
cfgAddLocale
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
);
int32_t
cfgAddCharset
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
);
int32_t
cfgAddTimezone
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
);
...
...
@@ -96,7 +95,7 @@ int32_t cfgAddTimezone(SConfig *pCfg, const char *name, const char *defaultVal);
const
char
*
cfgStypeStr
(
ECfgSrcType
type
);
const
char
*
cfgDtypeStr
(
ECfgDataType
type
);
void
cfgDumpCfg
(
SConfig
*
pCfg
);
void
cfgDumpCfg
(
SConfig
*
pCfg
,
bool
tsc
,
bool
dump
);
#ifdef __cplusplus
}
...
...
source/client/CMakeLists.txt
浏览文件 @
68514f3d
...
...
@@ -8,7 +8,7 @@ target_include_directories(
target_link_libraries
(
taos
INTERFACE api
PRIVATE os util common transport parser planner catalog scheduler function qcom
config
PRIVATE os util common transport parser planner catalog scheduler function qcom
)
if
(
${
BUILD_TEST
}
)
...
...
source/client/inc/clientInt.h
浏览文件 @
68514f3d
...
...
@@ -32,7 +32,7 @@ extern "C" {
#include "tmsgtype.h"
#include "trpc.h"
#include "config.h"
#include "
t
config.h"
#define CHECK_CODE_GOTO(expr, label) \
do { \
...
...
@@ -253,13 +253,6 @@ int hbAddConnInfo(SAppHbMgr* pAppHbMgr, SClientHbKey connKey, void* key, void* v
// --- mq
void
hbMgrInitMqHbRspHandle
();
// config
int32_t
tscInitLog
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
);
int32_t
tscInitCfg
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
);
extern
SConfig
*
tscCfg
;
#ifdef __cplusplus
}
#endif
...
...
source/client/src/clientCfg.c
已删除
100644 → 0
浏览文件 @
fac3fad4
/*
* 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 "clientInt.h"
#include "ulog.h"
// todo refact
SConfig
*
tscCfg
;
static
int32_t
tscLoadCfg
(
SConfig
*
pConfig
,
const
char
*
inputCfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
)
{
char
cfgDir
[
PATH_MAX
]
=
{
0
};
char
cfgFile
[
PATH_MAX
+
100
]
=
{
0
};
taosExpandDir
(
inputCfgDir
,
cfgDir
,
PATH_MAX
);
snprintf
(
cfgFile
,
sizeof
(
cfgFile
),
"%s"
TD_DIRSEP
"taos.cfg"
,
cfgDir
);
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_APOLLO_URL
,
apolloUrl
)
!=
0
)
{
uError
(
"failed to load from apollo url:%s since %s
\n
"
,
apolloUrl
,
terrstr
());
return
-
1
;
}
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_CFG_FILE
,
cfgFile
)
!=
0
)
{
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_CFG_FILE
,
cfgDir
)
!=
0
)
{
uError
(
"failed to load from config file:%s since %s
\n
"
,
cfgFile
,
terrstr
());
return
-
1
;
}
}
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_ENV_FILE
,
envFile
)
!=
0
)
{
uError
(
"failed to load from env file:%s since %s
\n
"
,
envFile
,
terrstr
());
return
-
1
;
}
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_ENV_VAR
,
NULL
)
!=
0
)
{
uError
(
"failed to load from global env variables since %s
\n
"
,
terrstr
());
return
-
1
;
}
return
0
;
}
static
int32_t
tscAddLogCfg
(
SConfig
*
pCfg
)
{
if
(
cfgAddDir
(
pCfg
,
"logDir"
,
"/var/log/taos"
)
!=
0
)
return
-
1
;
if
(
cfgAddBool
(
pCfg
,
"asyncLog"
,
1
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"numOfLogLines"
,
10000000
,
1000
,
2000000000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"logKeepDays"
,
0
,
-
365000
,
365000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"debugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"cDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"jniDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"tmrDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"uDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"rpcDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
return
0
;
}
static
int32_t
tscSetLogCfg
(
SConfig
*
pCfg
)
{
osSetLogDir
(
cfgGetItem
(
pCfg
,
"logDir"
)
->
str
);
tsAsyncLog
=
cfgGetItem
(
pCfg
,
"asyncLog"
)
->
bval
;
tsNumOfLogLines
=
cfgGetItem
(
pCfg
,
"numOfLogLines"
)
->
i32
;
tsLogKeepDays
=
cfgGetItem
(
pCfg
,
"logKeepDays"
)
->
i32
;
cDebugFlag
=
cfgGetItem
(
pCfg
,
"cDebugFlag"
)
->
i32
;
jniDebugFlag
=
cfgGetItem
(
pCfg
,
"jniDebugFlag"
)
->
i32
;
tmrDebugFlag
=
cfgGetItem
(
pCfg
,
"tmrDebugFlag"
)
->
i32
;
uDebugFlag
=
cfgGetItem
(
pCfg
,
"uDebugFlag"
)
->
i32
;
rpcDebugFlag
=
cfgGetItem
(
pCfg
,
"rpcDebugFlag"
)
->
i32
;
int32_t
debugFlag
=
cfgGetItem
(
pCfg
,
"debugFlag"
)
->
i32
;
taosSetAllDebugFlag
(
debugFlag
);
return
0
;
}
int32_t
tscInitLog
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
)
{
if
(
tsLogInited
)
return
0
;
SConfig
*
pCfg
=
cfgInit
();
if
(
pCfg
==
NULL
)
return
-
1
;
if
(
tscAddLogCfg
(
pCfg
)
!=
0
)
{
printf
(
"failed to add log cfg since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
-
1
;
}
if
(
tscLoadCfg
(
pCfg
,
cfgDir
,
envFile
,
apolloUrl
)
!=
0
)
{
printf
(
"failed to load log cfg since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
-
1
;
}
if
(
tscSetLogCfg
(
pCfg
)
!=
0
)
{
printf
(
"failed to set log cfg since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
-
1
;
}
const
int32_t
maxLogFileNum
=
10
;
if
(
taosInitLog
(
"taoslog"
,
maxLogFileNum
)
!=
0
)
{
printf
(
"failed to init log file since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
-
1
;
}
cfgDumpCfg
(
pCfg
);
cfgCleanup
(
pCfg
);
return
0
;
}
static
int32_t
tscAddEpCfg
(
SConfig
*
pCfg
)
{
char
defaultFqdn
[
TSDB_FQDN_LEN
]
=
{
0
};
if
(
taosGetFqdn
(
defaultFqdn
)
!=
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
if
(
cfgAddString
(
pCfg
,
"fqdn"
,
defaultFqdn
)
!=
0
)
return
-
1
;
int32_t
defaultServerPort
=
6030
;
if
(
cfgAddInt32
(
pCfg
,
"serverPort"
,
defaultServerPort
,
1
,
65056
)
!=
0
)
return
-
1
;
char
defaultFirstEp
[
TSDB_EP_LEN
]
=
{
0
};
char
defaultSecondEp
[
TSDB_EP_LEN
]
=
{
0
};
snprintf
(
defaultFirstEp
,
TSDB_EP_LEN
,
"%s:%d"
,
defaultFqdn
,
defaultServerPort
);
snprintf
(
defaultSecondEp
,
TSDB_EP_LEN
,
"%s:%d"
,
defaultFqdn
,
defaultServerPort
);
if
(
cfgAddString
(
pCfg
,
"firstEp"
,
defaultFirstEp
)
!=
0
)
return
-
1
;
if
(
cfgAddString
(
pCfg
,
"secondEp"
,
defaultSecondEp
)
!=
0
)
return
-
1
;
return
0
;
}
static
int32_t
tscAddCfg
(
SConfig
*
pCfg
)
{
if
(
tscAddEpCfg
(
pCfg
)
!=
0
)
return
-
1
;
// if (cfgAddString(pCfg, "buildinfo", buildinfo) != 0) return -1;
// if (cfgAddString(pCfg, "gitinfo", gitinfo) != 0) return -1;
// if (cfgAddString(pCfg, "version", version) != 0) return -1;
// if (cfgAddDir(pCfg, "dataDir", osDataDir()) != 0) return -1;
if
(
cfgAddTimezone
(
pCfg
,
"timezone"
,
""
)
!=
0
)
return
-
1
;
if
(
cfgAddLocale
(
pCfg
,
"locale"
,
""
)
!=
0
)
return
-
1
;
if
(
cfgAddCharset
(
pCfg
,
"charset"
,
""
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"numOfCores"
,
1
,
1
,
100000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"numOfCommitThreads"
,
4
,
1
,
1000
)
!=
0
)
return
-
1
;
// if (cfgAddBool(pCfg, "telemetryReporting", 0) != 0) return -1;
if
(
cfgAddBool
(
pCfg
,
"enableCoreFile"
,
0
)
!=
0
)
return
-
1
;
// if (cfgAddInt32(pCfg, "supportVnodes", 256, 0, 65536) != 0) return -1;
if
(
cfgAddInt32
(
pCfg
,
"statusInterval"
,
1
,
1
,
30
)
!=
0
)
return
-
1
;
if
(
cfgAddFloat
(
pCfg
,
"numOfThreadsPerCore"
,
1
,
0
,
10
)
!=
0
)
return
-
1
;
if
(
cfgAddFloat
(
pCfg
,
"ratioOfQueryCores"
,
1
,
0
,
5
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"shellActivityTimer"
,
3
,
1
,
120
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"rpcTimer"
,
300
,
100
,
3000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"rpcMaxTime"
,
600
,
100
,
7200
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"maxConnections"
,
50000
,
1
,
100000
)
!=
0
)
return
-
1
;
return
0
;
}
int32_t
tscCheckCfg
(
SConfig
*
pCfg
)
{
bool
enableCore
=
cfgGetItem
(
pCfg
,
"enableCoreFile"
)
->
bval
;
taosSetCoreDump
(
enableCore
);
return
0
;
}
SConfig
*
tscInitCfgImp
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
)
{
SConfig
*
pCfg
=
cfgInit
();
if
(
pCfg
==
NULL
)
return
NULL
;
if
(
tscAddCfg
(
pCfg
)
!=
0
)
{
uError
(
"failed to init tsc cfg since %s"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
NULL
;
}
if
(
tscLoadCfg
(
pCfg
,
cfgDir
,
envFile
,
apolloUrl
)
!=
0
)
{
printf
(
"failed to load tsc cfg since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
NULL
;
}
if
(
tscCheckCfg
(
pCfg
)
!=
0
)
{
uError
(
"failed to check cfg since %s"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
NULL
;
}
cfgDumpCfg
(
pCfg
);
return
pCfg
;
}
int32_t
tscInitCfg
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
)
{
tscCfg
=
tscInitCfgImp
(
cfgDir
,
envFile
,
apolloUrl
);
if
(
tscCfg
==
NULL
)
return
-
1
;
return
0
;
}
\ No newline at end of file
source/client/src/clientEnv.c
浏览文件 @
68514f3d
...
...
@@ -93,10 +93,10 @@ void *openTransporter(const char *user, const char *auth, int32_t numOfThread) {
rpcInit
.
numOfThreads
=
numOfThread
;
rpcInit
.
cfp
=
processMsgFromServer
;
rpcInit
.
pfp
=
persistConnForSpecificMsg
;
rpcInit
.
sessions
=
cfgGetItem
(
tscCfg
,
"maxConnections"
)
->
i32
;
rpcInit
.
sessions
=
tsMaxConnections
;
rpcInit
.
connType
=
TAOS_CONN_CLIENT
;
rpcInit
.
user
=
(
char
*
)
user
;
rpcInit
.
idleTime
=
cfgGetItem
(
tscCfg
,
"shellActivityTimer"
)
->
i32
*
1000
;
rpcInit
.
idleTime
=
tsShellActivityTimer
*
1000
;
rpcInit
.
ckey
=
"key"
;
rpcInit
.
spi
=
1
;
rpcInit
.
secret
=
(
char
*
)
auth
;
...
...
@@ -212,12 +212,12 @@ void taos_init_imp(void) {
deltaToUtcInitOnce
();
if
(
t
scInitLog
(
configDir
,
NULL
,
NULL
)
!=
0
)
{
if
(
t
aosCreateLog
(
"taoslog"
,
10
,
configDir
,
NULL
,
NULL
,
1
)
!=
0
)
{
tscInitRes
=
-
1
;
return
;
}
if
(
t
scInitCfg
(
configDir
,
NULL
,
NULL
)
!=
0
)
{
if
(
t
aosInitCfg
(
configDir
,
NULL
,
NULL
,
1
)
!=
0
)
{
tscInitRes
=
-
1
;
return
;
}
...
...
@@ -225,11 +225,7 @@ void taos_init_imp(void) {
initMsgHandleFp
();
initQueryModuleMsgHandle
();
SRpcCfg
rpcCfg
=
{
0
};
rpcCfg
.
rpcTimer
=
cfgGetItem
(
tscCfg
,
"rpcTimer"
)
->
i32
;
rpcCfg
.
rpcMaxTime
=
cfgGetItem
(
tscCfg
,
"rpcMaxTime"
)
->
i32
;
rpcCfg
.
sver
=
30000000
;
rpcInit
(
&
rpcCfg
);
rpcInit
();
SCatalogCfg
cfg
=
{.
maxDBCacheNum
=
100
,
.
maxTblCacheNum
=
100
};
catalogInit
(
&
cfg
);
...
...
source/client/src/clientImpl.c
浏览文件 @
68514f3d
...
...
@@ -11,7 +11,7 @@
#include "tpagedbuf.h"
#include "tref.h"
static
int32_t
initEpSetFromCfg
(
const
char
*
ip
,
uint16_t
port
,
SCorEpSet
*
pEpSet
);
static
int32_t
initEpSetFromCfg
(
const
char
*
firstEp
,
const
char
*
secondEp
,
SCorEpSet
*
pEpSet
);
static
SMsgSendInfo
*
buildConnectMsg
(
SRequestObj
*
pRequest
);
static
void
destroySendMsgInfo
(
SMsgSendInfo
*
pMsgBody
);
static
void
setQueryResultFromRsp
(
SReqResultInfo
*
pResultInfo
,
const
SRetrieveTableRsp
*
pRsp
);
...
...
@@ -80,7 +80,19 @@ TAOS* taos_connect_internal(const char* ip, const char* user, const char* pass,
}
SCorEpSet
epSet
=
{
0
};
initEpSetFromCfg
(
ip
,
port
,
&
epSet
);
if
(
ip
)
{
if
(
initEpSetFromCfg
(
ip
,
NULL
,
&
epSet
)
<
0
)
{
return
NULL
;
}
if
(
port
)
{
epSet
.
epSet
.
eps
[
0
].
port
=
port
;
}
}
else
{
if
(
initEpSetFromCfg
(
tsFirst
,
tsSecond
,
&
epSet
)
<
0
)
{
return
NULL
;
}
}
char
*
key
=
getClusterKey
(
user
,
secretEncrypt
,
ip
,
port
);
SAppInstInfo
**
pInst
=
NULL
;
...
...
@@ -267,40 +279,32 @@ _return:
return
pRequest
;
}
int
initEpSetFromCfg
(
const
char
*
ip
,
uint16_t
port
,
SCorEpSet
*
pEpSet
)
{
SConfigItem
*
pFirst
=
cfgGetItem
(
tscCfg
,
"firstEp"
);
SConfigItem
*
pSecond
=
cfgGetItem
(
tscCfg
,
"secondEp"
);
SConfigItem
*
pPort
=
cfgGetItem
(
tscCfg
,
"serverPort"
);
int
initEpSetFromCfg
(
const
char
*
firstEp
,
const
char
*
secondEp
,
SCorEpSet
*
pEpSet
)
{
pEpSet
->
version
=
0
;
// init mnode ip set
SEpSet
*
mgmtEpSet
=
&
(
pEpSet
->
epSet
);
mgmtEpSet
->
numOfEps
=
0
;
mgmtEpSet
->
inUse
=
0
;
pEpSet
->
version
=
0
;
if
(
ip
!=
NULL
)
{
taosGetFqdnPortFromEp
(
ip
,
(
uint16_t
)
pPort
->
i32
,
&
mgmtEpSet
->
eps
[
0
]);
mgmtEpSet
->
numOfEps
++
;
if
(
port
)
{
mgmtEpSet
->
eps
[
0
].
port
=
port
;
}
}
else
{
if
(
pFirst
->
str
[
0
]
!=
0
)
{
if
(
strlen
(
pFirst
->
str
)
>=
TSDB_EP_LEN
)
{
terrno
=
TSDB_CODE_TSC_INVALID_FQDN
;
return
-
1
;
}
taosGetFqdnPortFromEp
(
pFirst
->
str
,
(
uint16_t
)
pPort
->
i32
,
&
mgmtEpSet
->
eps
[
0
]);
mgmtEpSet
->
numOfEps
++
;
if
(
firstEp
&&
firstEp
[
0
]
!=
0
)
{
if
(
strlen
(
firstEp
)
>=
TSDB_EP_LEN
)
{
terrno
=
TSDB_CODE_TSC_INVALID_FQDN
;
return
-
1
;
}
if
(
pSecond
->
str
[
0
]
!=
0
)
{
if
(
strlen
(
pSecond
->
str
)
>=
TSDB_EP_LEN
)
{
terrno
=
TSDB_CODE_TSC_INVALID_FQDN
;
return
-
1
;
}
taosGetFqdnPortFromEp
(
pSecond
->
str
,
(
uint16_t
)
pPort
->
i32
,
&
mgmtEpSet
->
eps
[
1
]);
mgmtEpSet
->
numOfEps
++
;
taosGetFqdnPortFromEp
(
firstEp
,
&
mgmtEpSet
->
eps
[
0
]);
mgmtEpSet
->
numOfEps
++
;
}
if
(
secondEp
&&
secondEp
[
0
]
!=
0
)
{
if
(
strlen
(
secondEp
)
>=
TSDB_EP_LEN
)
{
terrno
=
TSDB_CODE_TSC_INVALID_FQDN
;
return
-
1
;
}
taosGetFqdnPortFromEp
(
secondEp
,
&
mgmtEpSet
->
eps
[
mgmtEpSet
->
numOfEps
]);
mgmtEpSet
->
numOfEps
++
;
}
if
(
mgmtEpSet
->
numOfEps
==
0
)
{
...
...
source/client/test/CMakeLists.txt
浏览文件 @
68514f3d
...
...
@@ -8,13 +8,13 @@ AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST)
ADD_EXECUTABLE
(
clientTest clientTests.cpp
)
TARGET_LINK_LIBRARIES
(
clientTest
PUBLIC os util common transport parser catalog scheduler function gtest taos qcom
config
PUBLIC os util common transport parser catalog scheduler function gtest taos qcom
)
ADD_EXECUTABLE
(
tmqTest tmqTest.cpp
)
TARGET_LINK_LIBRARIES
(
tmqTest
PUBLIC os util common transport parser catalog scheduler function gtest taos qcom
config
PUBLIC os util common transport parser catalog scheduler function gtest taos qcom
)
TARGET_INCLUDE_DIRECTORIES
(
...
...
source/common/src/tep.c
浏览文件 @
68514f3d
...
...
@@ -4,7 +4,7 @@
#include "tglobal.h"
#include "tlockfree.h"
int
taosGetFqdnPortFromEp
(
const
char
*
ep
,
uint16_t
defaultPort
,
SEp
*
pEp
)
{
int
taosGetFqdnPortFromEp
(
const
char
*
ep
,
SEp
*
pEp
)
{
pEp
->
port
=
0
;
strcpy
(
pEp
->
fqdn
,
ep
);
...
...
@@ -15,7 +15,7 @@ int taosGetFqdnPortFromEp(const char *ep, uint16_t defaultPort, SEp* pEp) {
}
if
(
pEp
->
port
==
0
)
{
pEp
->
port
=
default
Port
;
pEp
->
port
=
tsServer
Port
;
return
-
1
;
}
...
...
source/common/src/tglobal.c
浏览文件 @
68514f3d
此差异已折叠。
点击以展开。
source/dnode/mgmt/daemon/CMakeLists.txt
浏览文件 @
68514f3d
...
...
@@ -6,4 +6,4 @@ target_include_directories(
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
)
target_link_libraries
(
taosd dnode
config
util os
)
target_link_libraries
(
taosd dnode util os
)
source/dnode/mgmt/daemon/inc/dmnInt.h
浏览文件 @
68514f3d
...
...
@@ -17,7 +17,7 @@
#ifndef _TD_DMN_INT_H_
#define _TD_DMN_INT_H_
#include "config.h"
#include "
t
config.h"
#include "dnode.h"
#include "taoserror.h"
#include "tglobal.h"
...
...
@@ -28,15 +28,9 @@
extern
"C"
{
#endif
int32_t
dmnAddLogCfg
(
SConfig
*
pCfg
);
int32_t
dmnInitLog
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
);
int32_t
dmnLoadCfg
(
SConfig
*
pConfig
,
const
char
*
inputCfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
);
SDnodeObjCfg
dmnGetObjCfg
();
SConfig
*
dmnReadCfg
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
);
SDnodeEnvCfg
dmnGetEnvCfg
(
SConfig
*
pCfg
);
SDnodeObjCfg
dmnGetObjCfg
(
SConfig
*
pCfg
);
void
dmnDumpCfg
(
SConfig
*
pCfg
);
void
dmnDumpCfg
();
void
dmnPrintVersion
();
void
dmnGenerateGrant
();
...
...
source/dnode/mgmt/daemon/src/dmnCfg.c
浏览文件 @
68514f3d
...
...
@@ -15,204 +15,23 @@
#define _DEFAULT_SOURCE
#include "dmnInt.h"
#include "tconfig.h"
static
int32_t
dmnAddEpCfg
(
SConfig
*
pCfg
)
{
char
defaultFqdn
[
TSDB_FQDN_LEN
]
=
{
0
};
if
(
taosGetFqdn
(
defaultFqdn
)
!=
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
if
(
cfgAddString
(
pCfg
,
"fqdn"
,
defaultFqdn
)
!=
0
)
return
-
1
;
int32_t
defaultServerPort
=
6030
;
if
(
cfgAddInt32
(
pCfg
,
"serverPort"
,
defaultServerPort
,
1
,
65056
)
!=
0
)
return
-
1
;
char
defaultFirstEp
[
TSDB_EP_LEN
]
=
{
0
};
char
defaultSecondEp
[
TSDB_EP_LEN
]
=
{
0
};
snprintf
(
defaultFirstEp
,
TSDB_EP_LEN
,
"%s:%d"
,
defaultFqdn
,
defaultServerPort
);
snprintf
(
defaultSecondEp
,
TSDB_EP_LEN
,
"%s:%d"
,
defaultFqdn
,
defaultServerPort
);
if
(
cfgAddString
(
pCfg
,
"firstEp"
,
defaultFirstEp
)
!=
0
)
return
-
1
;
if
(
cfgAddString
(
pCfg
,
"secondEp"
,
defaultSecondEp
)
!=
0
)
return
-
1
;
return
0
;
}
static
int32_t
dmnAddDirCfg
(
SConfig
*
pCfg
)
{
if
(
cfgAddDir
(
pCfg
,
"dataDir"
,
osDataDir
())
!=
0
)
return
-
1
;
if
(
cfgAddDir
(
pCfg
,
"tempDir"
,
osTempDir
())
!=
0
)
return
-
1
;
if
(
cfgAddFloat
(
pCfg
,
"minimalDataDirGB"
,
2
.
0
f
,
0
.
001
f
,
10000000
)
!=
0
)
return
-
1
;
if
(
cfgAddFloat
(
pCfg
,
"minimalTempDirGB"
,
1
.
0
f
,
0
.
001
f
,
10000000
)
!=
0
)
return
-
1
;
return
0
;
}
static
int32_t
dmnCheckDirCfg
(
SConfig
*
pCfg
)
{
osSetDataDir
(
cfgGetItem
(
pCfg
,
"dataDir"
)
->
str
);
osSetTempDir
(
cfgGetItem
(
pCfg
,
"tempDir"
)
->
str
);
osSetTempReservedSpace
(
cfgGetItem
(
pCfg
,
"minimalDataDirGB"
)
->
fval
);
osSetDataReservedSpace
(
cfgGetItem
(
pCfg
,
"minimalTempDirGB"
)
->
fval
);
return
0
;
}
static
int32_t
dmnAddVersionCfg
(
SConfig
*
pCfg
)
{
if
(
cfgAddString
(
pCfg
,
"buildinfo"
,
buildinfo
)
!=
0
)
return
-
1
;
if
(
cfgAddString
(
pCfg
,
"gitinfo"
,
gitinfo
)
!=
0
)
return
-
1
;
if
(
cfgAddString
(
pCfg
,
"version"
,
version
)
!=
0
)
return
-
1
;
return
0
;
}
static
int32_t
dmnAddDnodeCfg
(
SConfig
*
pCfg
)
{
if
(
dmnAddEpCfg
(
pCfg
)
!=
0
)
return
-
1
;
if
(
dmnAddDirCfg
(
pCfg
)
!=
0
)
return
-
1
;
if
(
dmnAddVersionCfg
(
pCfg
)
!=
0
)
return
-
1
;
if
(
cfgAddTimezone
(
pCfg
,
"timezone"
,
""
)
!=
0
)
return
-
1
;
if
(
cfgAddLocale
(
pCfg
,
"locale"
,
""
)
!=
0
)
return
-
1
;
if
(
cfgAddCharset
(
pCfg
,
"charset"
,
""
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"numOfCores"
,
2
,
1
,
100000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"numOfCommitThreads"
,
4
,
1
,
1000
)
!=
0
)
return
-
1
;
if
(
cfgAddBool
(
pCfg
,
"telemetryReporting"
,
0
)
!=
0
)
return
-
1
;
if
(
cfgAddBool
(
pCfg
,
"enableCoreFile"
,
0
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"supportVnodes"
,
256
,
0
,
65536
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"statusInterval"
,
1
,
1
,
30
)
!=
0
)
return
-
1
;
if
(
cfgAddFloat
(
pCfg
,
"numOfThreadsPerCore"
,
1
,
0
,
10
)
!=
0
)
return
-
1
;
if
(
cfgAddFloat
(
pCfg
,
"ratioOfQueryCores"
,
1
,
0
,
5
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"maxShellConns"
,
50000
,
10
,
50000000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"shellActivityTimer"
,
3
,
1
,
120
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"rpcTimer"
,
300
,
100
,
3000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"rpcMaxTime"
,
600
,
100
,
7200
)
!=
0
)
return
-
1
;
return
0
;
}
static
void
dmnSetDnodeCfg
(
SConfig
*
pCfg
)
{
SConfigItem
*
pItem
=
cfgGetItem
(
pCfg
,
"timezone"
);
osSetTimezone
(
pItem
->
str
);
uDebug
(
"timezone format changed from %s to %s"
,
pItem
->
str
,
osTimezone
());
cfgSetItem
(
pCfg
,
"timezone"
,
osTimezone
(),
pItem
->
stype
);
}
static
int32_t
dmnCheckCfg
(
SConfig
*
pCfg
)
{
bool
enableCore
=
cfgGetItem
(
pCfg
,
"enableCoreFile"
)
->
bval
;
taosSetCoreDump
(
enableCore
);
dmnSetDnodeCfg
(
pCfg
);
if
(
dmnCheckDirCfg
(
pCfg
)
!=
0
)
{
return
-
1
;
}
taosGetSystemInfo
();
if
(
tsNumOfCores
<=
0
)
{
tsNumOfCores
=
1
;
}
if
(
tsQueryBufferSize
>=
0
)
{
tsQueryBufferSizeBytes
=
tsQueryBufferSize
*
1048576UL
;
}
return
0
;
}
SConfig
*
dmnReadCfg
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
)
{
SConfig
*
pCfg
=
cfgInit
();
if
(
pCfg
==
NULL
)
return
NULL
;
if
(
dmnAddLogCfg
(
pCfg
)
!=
0
)
{
uError
(
"failed to add log cfg since %s"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
NULL
;
}
if
(
dmnAddDnodeCfg
(
pCfg
)
!=
0
)
{
uError
(
"failed to init dnode cfg since %s"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
NULL
;
}
if
(
dmnLoadCfg
(
pCfg
,
cfgDir
,
envFile
,
apolloUrl
)
!=
0
)
{
uError
(
"failed to load cfg since %s"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
NULL
;
}
if
(
dmnCheckCfg
(
pCfg
)
!=
0
)
{
uError
(
"failed to check cfg since %s"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
NULL
;
}
cfgDumpCfg
(
pCfg
);
return
pCfg
;
}
void
dmnDumpCfg
(
SConfig
*
pCfg
)
{
printf
(
"taos global config:
\n
"
);
printf
(
"==================================
\n
"
);
SConfigItem
*
pItem
=
cfgIterate
(
pCfg
,
NULL
);
while
(
pItem
!=
NULL
)
{
switch
(
pItem
->
dtype
)
{
case
CFG_DTYPE_BOOL
:
printf
(
"cfg:%s, value:%u src:%s
\n
"
,
pItem
->
name
,
pItem
->
bval
,
cfgStypeStr
(
pItem
->
stype
));
break
;
case
CFG_DTYPE_INT32
:
printf
(
"cfg:%s, value:%d src:%s
\n
"
,
pItem
->
name
,
pItem
->
i32
,
cfgStypeStr
(
pItem
->
stype
));
break
;
case
CFG_DTYPE_INT64
:
printf
(
"cfg:%s, value:%"
PRId64
" src:%s
\n
"
,
pItem
->
name
,
pItem
->
i64
,
cfgStypeStr
(
pItem
->
stype
));
break
;
case
CFG_DTYPE_FLOAT
:
printf
(
"cfg:%s, value:%f src:%s
\n
"
,
pItem
->
name
,
pItem
->
fval
,
cfgStypeStr
(
pItem
->
stype
));
break
;
case
CFG_DTYPE_STRING
:
case
CFG_DTYPE_IPSTR
:
case
CFG_DTYPE_DIR
:
case
CFG_DTYPE_LOCALE
:
case
CFG_DTYPE_CHARSET
:
case
CFG_DTYPE_TIMEZONE
:
printf
(
"cfg:%s, value:%s src:%s
\n
"
,
pItem
->
name
,
pItem
->
str
,
cfgStypeStr
(
pItem
->
stype
));
break
;
}
pItem
=
cfgIterate
(
pCfg
,
pItem
);
}
}
SDnodeEnvCfg
dmnGetEnvCfg
(
SConfig
*
pCfg
)
{
SDnodeEnvCfg
envCfg
=
{
0
};
const
char
*
vstr
=
cfgGetItem
(
pCfg
,
"version"
)
->
str
;
envCfg
.
sver
=
30000000
;
tstrncpy
(
envCfg
.
buildinfo
,
cfgGetItem
(
pCfg
,
"buildinfo"
)
->
str
,
sizeof
(
envCfg
.
buildinfo
));
tstrncpy
(
envCfg
.
gitinfo
,
cfgGetItem
(
pCfg
,
"gitinfo"
)
->
str
,
sizeof
(
envCfg
.
gitinfo
));
tstrncpy
(
envCfg
.
timezone
,
cfgGetItem
(
pCfg
,
"timezone"
)
->
str
,
sizeof
(
envCfg
.
timezone
));
tstrncpy
(
envCfg
.
locale
,
cfgGetItem
(
pCfg
,
"locale"
)
->
str
,
sizeof
(
envCfg
.
locale
));
tstrncpy
(
envCfg
.
charset
,
cfgGetItem
(
pCfg
,
"charset"
)
->
str
,
sizeof
(
envCfg
.
charset
));
envCfg
.
numOfCores
=
cfgGetItem
(
pCfg
,
"numOfCores"
)
->
i32
;
envCfg
.
numOfCommitThreads
=
(
uint16_t
)
cfgGetItem
(
pCfg
,
"numOfCommitThreads"
)
->
i32
;
envCfg
.
enableTelem
=
cfgGetItem
(
pCfg
,
"telemetryReporting"
)
->
bval
;
envCfg
.
rpcMaxTime
=
cfgGetItem
(
pCfg
,
"rpcMaxTime"
)
->
i32
;
envCfg
.
rpcTimer
=
cfgGetItem
(
pCfg
,
"rpcTimer"
)
->
i32
;
return
envCfg
;
}
SDnodeObjCfg
dmnGetObjCfg
(
SConfig
*
pCfg
)
{
SDnodeObjCfg
dmnGetObjCfg
()
{
SConfig
*
pCfg
=
taosGetCfg
();
SDnodeObjCfg
objCfg
=
{
0
};
objCfg
.
numOfSupportVnodes
=
cfgGetItem
(
pCfg
,
"supportVnodes"
)
->
i32
;
objCfg
.
statusInterval
=
cfgGetItem
(
pCfg
,
"statusInterval"
)
->
i32
;
objCfg
.
numOfThreadsPerCore
=
cfgGetItem
(
pCfg
,
"numOfThreadsPerCore"
)
->
fval
;
objCfg
.
ratioOfQueryCores
=
cfgGetItem
(
pCfg
,
"ratioOfQueryCores"
)
->
fval
;
objCfg
.
maxShellConns
=
cfgGetItem
(
pCfg
,
"maxShellConns"
)
->
i32
;
objCfg
.
shellActivityTimer
=
cfgGetItem
(
pCfg
,
"shellActivityTimer"
)
->
i32
;
tstrncpy
(
objCfg
.
dataDir
,
cfgGetItem
(
pCfg
,
"dataDir"
)
->
str
,
sizeof
(
objCfg
.
dataDir
));
tstrncpy
(
objCfg
.
firstEp
,
cfgGetItem
(
pCfg
,
"firstEp"
)
->
str
,
sizeof
(
objCfg
.
firstEp
));
tstrncpy
(
objCfg
.
secondEp
,
cfgGetItem
(
pCfg
,
"secondEp"
)
->
str
,
sizeof
(
objCfg
.
firstEp
));
objCfg
.
serverPort
=
(
uint16_t
)
cfgGetItem
(
pCfg
,
"serverPort"
)
->
i32
;
tstrncpy
(
objCfg
.
localFqdn
,
cfgGetItem
(
pCfg
,
"fqdn"
)
->
str
,
sizeof
(
objCfg
.
localFqdn
));
snprintf
(
objCfg
.
localEp
,
sizeof
(
objCfg
.
localEp
),
"%s:%u"
,
objCfg
.
localFqdn
,
objCfg
.
serverPort
);
return
objCfg
;
}
void
dmnDumpCfg
()
{
SConfig
*
pCfg
=
taosGetCfg
();
cfgDumpCfg
(
pCfg
,
0
,
1
);
}
\ No newline at end of file
source/dnode/mgmt/daemon/src/dmnLog.c
已删除
100644 → 0
浏览文件 @
fac3fad4
/*
* 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 "dmnInt.h"
int32_t
dmnAddLogCfg
(
SConfig
*
pCfg
)
{
if
(
cfgAddDir
(
pCfg
,
"logDir"
,
osLogDir
())
!=
0
)
return
-
1
;
if
(
cfgAddFloat
(
pCfg
,
"minimalLogDirGB"
,
1
.
0
f
,
0
.
001
f
,
10000000
)
!=
0
)
return
-
1
;
if
(
cfgAddBool
(
pCfg
,
"asyncLog"
,
1
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"numOfLogLines"
,
10000000
,
1000
,
2000000000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"logKeepDays"
,
0
,
-
365000
,
365000
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"debugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"dDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"vDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"mDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"cDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"jniDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"tmrDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"uDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"rpcDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"qDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"wDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"sDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"tsdbDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"tqDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
if
(
cfgAddInt32
(
pCfg
,
"fsDebugFlag"
,
0
,
0
,
255
)
!=
0
)
return
-
1
;
return
0
;
}
int32_t
dmnSetLogCfg
(
SConfig
*
pCfg
)
{
osSetLogDir
(
cfgGetItem
(
pCfg
,
"logDir"
)
->
str
);
osSetLogReservedSpace
(
cfgGetItem
(
pCfg
,
"minimalLogDirGB"
)
->
fval
);
tsAsyncLog
=
cfgGetItem
(
pCfg
,
"asyncLog"
)
->
bval
;
tsNumOfLogLines
=
cfgGetItem
(
pCfg
,
"numOfLogLines"
)
->
i32
;
tsLogKeepDays
=
cfgGetItem
(
pCfg
,
"logKeepDays"
)
->
i32
;
dDebugFlag
=
cfgGetItem
(
pCfg
,
"dDebugFlag"
)
->
i32
;
vDebugFlag
=
cfgGetItem
(
pCfg
,
"vDebugFlag"
)
->
i32
;
mDebugFlag
=
cfgGetItem
(
pCfg
,
"mDebugFlag"
)
->
i32
;
cDebugFlag
=
cfgGetItem
(
pCfg
,
"cDebugFlag"
)
->
i32
;
jniDebugFlag
=
cfgGetItem
(
pCfg
,
"jniDebugFlag"
)
->
i32
;
tmrDebugFlag
=
cfgGetItem
(
pCfg
,
"tmrDebugFlag"
)
->
i32
;
uDebugFlag
=
cfgGetItem
(
pCfg
,
"uDebugFlag"
)
->
i32
;
rpcDebugFlag
=
cfgGetItem
(
pCfg
,
"rpcDebugFlag"
)
->
i32
;
qDebugFlag
=
cfgGetItem
(
pCfg
,
"qDebugFlag"
)
->
i32
;
wDebugFlag
=
cfgGetItem
(
pCfg
,
"wDebugFlag"
)
->
i32
;
sDebugFlag
=
cfgGetItem
(
pCfg
,
"sDebugFlag"
)
->
i32
;
tsdbDebugFlag
=
cfgGetItem
(
pCfg
,
"tsdbDebugFlag"
)
->
i32
;
tqDebugFlag
=
cfgGetItem
(
pCfg
,
"tqDebugFlag"
)
->
i32
;
fsDebugFlag
=
cfgGetItem
(
pCfg
,
"fsDebugFlag"
)
->
i32
;
int32_t
debugFlag
=
cfgGetItem
(
pCfg
,
"debugFlag"
)
->
i32
;
taosSetAllDebugFlag
(
debugFlag
);
return
0
;
}
int32_t
dmnInitLog
(
const
char
*
cfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
)
{
SConfig
*
pCfg
=
cfgInit
();
if
(
pCfg
==
NULL
)
return
-
1
;
if
(
dmnAddLogCfg
(
pCfg
)
!=
0
)
{
printf
(
"failed to add log cfg since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
-
1
;
}
if
(
dmnLoadCfg
(
pCfg
,
cfgDir
,
envFile
,
apolloUrl
)
!=
0
)
{
printf
(
"failed to load log cfg since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
-
1
;
}
if
(
dmnSetLogCfg
(
pCfg
)
!=
0
)
{
printf
(
"failed to set log cfg since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
-
1
;
}
if
(
taosInitLog
(
"taosdlog"
,
1
)
!=
0
)
{
printf
(
"failed to init log file since %s
\n
"
,
terrstr
());
cfgCleanup
(
pCfg
);
return
-
1
;
}
cfgCleanup
(
pCfg
);
return
0
;
}
int32_t
dmnLoadCfg
(
SConfig
*
pConfig
,
const
char
*
inputCfgDir
,
const
char
*
envFile
,
const
char
*
apolloUrl
)
{
char
configDir
[
PATH_MAX
]
=
{
0
};
char
configFile
[
PATH_MAX
+
100
]
=
{
0
};
taosExpandDir
(
inputCfgDir
,
configDir
,
PATH_MAX
);
snprintf
(
configFile
,
sizeof
(
configFile
),
"%s"
TD_DIRSEP
"taos.cfg"
,
configDir
);
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_APOLLO_URL
,
apolloUrl
)
!=
0
)
{
uError
(
"failed to load from apollo url:%s since %s
\n
"
,
apolloUrl
,
terrstr
());
return
-
1
;
}
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_CFG_FILE
,
configFile
)
!=
0
)
{
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_CFG_FILE
,
configDir
)
!=
0
)
{
uError
(
"failed to load from config file:%s since %s
\n
"
,
configFile
,
terrstr
());
return
-
1
;
}
}
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_ENV_FILE
,
envFile
)
!=
0
)
{
uError
(
"failed to load from env file:%s since %s
\n
"
,
envFile
,
terrstr
());
return
-
1
;
}
if
(
cfgLoad
(
pConfig
,
CFG_STYPE_ENV_VAR
,
NULL
)
!=
0
)
{
uError
(
"failed to load from global env variables since %s
\n
"
,
terrstr
());
return
-
1
;
}
return
0
;
}
source/dnode/mgmt/daemon/src/dmnMain.c
浏览文件 @
68514f3d
...
...
@@ -72,15 +72,14 @@ static int32_t dmnParseOption(int32_t argc, char const *argv[]) {
return
0
;
}
int32_t
dmnRunDnode
(
SConfig
*
pCfg
)
{
SDnodeEnvCfg
envCfg
=
dmnGetEnvCfg
(
pCfg
);
if
(
dndInit
(
&
envCfg
)
!=
0
)
{
int32_t
dmnRunDnode
()
{
if
(
dndInit
()
!=
0
)
{
uInfo
(
"Failed to start TDengine, please check the log"
);
return
-
1
;
}
SDnodeObjCfg
objCfg
=
dmnGetObjCfg
(
pCfg
);
SDnode
*
pDnode
=
dndCreate
(
&
objCfg
);
SDnodeObjCfg
objCfg
=
dmnGetObjCfg
();
SDnode
*
pDnode
=
dndCreate
(
&
objCfg
);
if
(
pDnode
==
NULL
)
{
uInfo
(
"Failed to start TDengine, please check the log"
);
return
-
1
;
...
...
@@ -93,12 +92,11 @@ int32_t dmnRunDnode(SConfig *pCfg) {
dndClose
(
pDnode
);
dndCleanup
();
taosCloseLog
();
taosCleanupCfg
();
return
0
;
}
int
main
(
int
argc
,
char
const
*
argv
[])
{
osInit
();
if
(
dmnParseOption
(
argc
,
argv
)
!=
0
)
{
return
-
1
;
}
...
...
@@ -113,23 +111,21 @@ int main(int argc, char const *argv[]) {
return
0
;
}
if
(
dmnInitLog
(
configDir
,
dmn
.
envFile
,
dmn
.
apolloUrl
)
!=
0
)
{
if
(
taosCreateLog
(
"taosdlog"
,
1
,
configDir
,
dmn
.
envFile
,
dmn
.
apolloUrl
,
0
)
!=
0
)
{
uInfo
(
"Failed to start TDengine since read config error"
);
return
-
1
;
}
SConfig
*
pCfg
=
dmnReadCfg
(
configDir
,
dmn
.
envFile
,
dmn
.
apolloUrl
);
if
(
pCfg
==
NULL
)
{
if
(
taosInitCfg
(
configDir
,
dmn
.
envFile
,
dmn
.
apolloUrl
,
0
)
!=
0
)
{
uInfo
(
"Failed to start TDengine since read config error"
);
return
-
1
;
}
if
(
dmn
.
dumpConfig
)
{
dmnDumpCfg
(
pCfg
);
cfgCleanup
(
pCfg
);
dmnDumpCfg
();
taosCleanupCfg
(
);
return
0
;
}
int32_t
code
=
dmnRunDnode
(
pCfg
);
cfgCleanup
(
pCfg
);
return
code
;
return
dmnRunDnode
();
}
source/dnode/mgmt/impl/inc/dndEnv.h
浏览文件 @
68514f3d
...
...
@@ -124,7 +124,6 @@ typedef struct {
typedef
struct
SDnode
{
EStat
stat
;
SDnodeObjCfg
cfg
;
SDnodeEnvCfg
env
;
SDnodeDir
dir
;
FileFd
lockFd
;
SDnodeMgmt
dmgmt
;
...
...
@@ -138,11 +137,6 @@ typedef struct SDnode {
SStartupReq
startup
;
}
SDnode
;
typedef
struct
{
int8_t
once
;
SDnodeEnvCfg
cfg
;
}
SDnodeEnv
;
#ifdef __cplusplus
}
#endif
...
...
source/dnode/mgmt/impl/inc/dndInt.h
浏览文件 @
68514f3d
...
...
@@ -35,6 +35,7 @@ extern "C" {
#include "tthread.h"
#include "ttime.h"
#include "tworker.h"
#include "tglobal.h"
#include "dnode.h"
...
...
source/dnode/mgmt/impl/src/dndBnode.c
浏览文件 @
68514f3d
...
...
@@ -179,7 +179,7 @@ static void dndBuildBnodeOption(SDnode *pDnode, SBnodeOpt *pOption) {
pOption
->
sendRedirectRspFp
=
dndSendRedirectRsp
;
pOption
->
dnodeId
=
dndGetDnodeId
(
pDnode
);
pOption
->
clusterId
=
dndGetClusterId
(
pDnode
);
pOption
->
sver
=
pDnode
->
env
.
sver
;
pOption
->
sver
=
tsVersion
;
}
static
int32_t
dndOpenBnode
(
SDnode
*
pDnode
)
{
...
...
source/dnode/mgmt/impl/src/dndEnv.c
浏览文件 @
68514f3d
...
...
@@ -25,7 +25,7 @@
#include "tfs.h"
#include "wal.h"
static
SDnodeEnv
dndEnv
=
{
0
}
;
static
int8_t
once
=
DND_ENV_INIT
;
EStat
dndGetStat
(
SDnode
*
pDnode
)
{
return
pDnode
->
stat
;
}
...
...
@@ -137,7 +137,6 @@ static int32_t dndCreateImp(SDnode *pDnode, SDnodeObjCfg *pCfg) {
}
memcpy
(
&
pDnode
->
cfg
,
pCfg
,
sizeof
(
SDnodeObjCfg
));
memcpy
(
&
pDnode
->
env
,
&
dndEnv
.
cfg
,
sizeof
(
SDnodeEnvCfg
));
return
0
;
}
...
...
@@ -259,8 +258,8 @@ void dndClose(SDnode *pDnode) {
dInfo
(
"dnode object is closed, data:%p"
,
pDnode
);
}
int32_t
dndInit
(
const
SDnodeEnvCfg
*
pCfg
)
{
if
(
atomic_val_compare_exchange_8
(
&
dndEnv
.
once
,
DND_ENV_INIT
,
DND_ENV_READY
)
!=
DND_ENV_INIT
)
{
int32_t
dndInit
()
{
if
(
atomic_val_compare_exchange_8
(
&
once
,
DND_ENV_INIT
,
DND_ENV_READY
)
!=
DND_ENV_INIT
)
{
terrno
=
TSDB_CODE_REPEAT_INIT
;
dError
(
"failed to init dnode env since %s"
,
terrstr
());
return
-
1
;
...
...
@@ -270,8 +269,7 @@ int32_t dndInit(const SDnodeEnvCfg *pCfg) {
taosBlockSIGPIPE
();
taosResolveCRC
();
SRpcCfg
rpcCfg
=
{.
rpcTimer
=
pCfg
->
rpcTimer
,
.
rpcMaxTime
=
pCfg
->
rpcMaxTime
,
.
sver
=
pCfg
->
sver
};
if
(
rpcInit
(
&
rpcCfg
)
!=
0
)
{
if
(
rpcInit
()
!=
0
)
{
dError
(
"failed to init rpc since %s"
,
terrstr
());
dndCleanup
();
return
-
1
;
...
...
@@ -284,11 +282,8 @@ int32_t dndInit(const SDnodeEnvCfg *pCfg) {
}
SVnodeOpt
vnodeOpt
=
{
.
sver
=
pCfg
->
sver
,
.
timezone
=
pCfg
->
timezone
,
.
locale
=
pCfg
->
locale
,
.
charset
=
pCfg
->
charset
,
.
nthreads
=
pCfg
->
numOfCommitThreads
,
.
sver
=
tsVersion
,
.
nthreads
=
tsNumOfCommitThreads
,
.
putReqToVQueryQFp
=
dndPutReqToVQueryQ
,
.
sendReqToDnodeFp
=
dndSendReqToDnode
};
...
...
@@ -299,13 +294,12 @@ int32_t dndInit(const SDnodeEnvCfg *pCfg) {
return
-
1
;
}
memcpy
(
&
dndEnv
.
cfg
,
pCfg
,
sizeof
(
SDnodeEnvCfg
));
dInfo
(
"dnode env is initialized"
);
return
0
;
}
void
dndCleanup
()
{
if
(
atomic_val_compare_exchange_8
(
&
dndEnv
.
once
,
DND_ENV_READY
,
DND_ENV_CLEANUP
)
!=
DND_ENV_READY
)
{
if
(
atomic_val_compare_exchange_8
(
&
once
,
DND_ENV_READY
,
DND_ENV_CLEANUP
)
!=
DND_ENV_READY
)
{
dError
(
"dnode env is already cleaned up"
);
return
;
}
...
...
source/dnode/mgmt/impl/src/dndMgmt.c
浏览文件 @
68514f3d
...
...
@@ -296,7 +296,7 @@ PRASE_DNODE_OVER:
if
(
taosArrayGetSize
(
pMgmt
->
pDnodeEps
)
==
0
)
{
SDnodeEp
dnodeEp
=
{
0
};
dnodeEp
.
isMnode
=
1
;
taosGetFqdnPortFromEp
(
pDnode
->
cfg
.
firstEp
,
pDnode
->
cfg
.
serverPort
,
&
dnodeEp
.
ep
);
taosGetFqdnPortFromEp
(
pDnode
->
cfg
.
firstEp
,
&
dnodeEp
.
ep
);
taosArrayPush
(
pMgmt
->
pDnodeEps
,
&
dnodeEp
);
}
...
...
@@ -357,23 +357,23 @@ void dndSendStatusReq(SDnode *pDnode) {
SDnodeMgmt
*
pMgmt
=
&
pDnode
->
dmgmt
;
taosRLockLatch
(
&
pMgmt
->
latch
);
req
.
sver
=
pDnode
->
env
.
sver
;
req
.
sver
=
tsVersion
;
req
.
dver
=
pMgmt
->
dver
;
req
.
dnodeId
=
pMgmt
->
dnodeId
;
req
.
clusterId
=
pMgmt
->
clusterId
;
req
.
rebootTime
=
pMgmt
->
rebootTime
;
req
.
updateTime
=
pMgmt
->
updateTime
;
req
.
numOfCores
=
pDnode
->
env
.
n
umOfCores
;
req
.
numOfCores
=
tsN
umOfCores
;
req
.
numOfSupportVnodes
=
pDnode
->
cfg
.
numOfSupportVnodes
;
memcpy
(
req
.
dnodeEp
,
pDnode
->
cfg
.
localEp
,
TSDB_EP_LEN
);
req
.
clusterCfg
.
statusInterval
=
pDnode
->
cfg
.
s
tatusInterval
;
req
.
clusterCfg
.
statusInterval
=
tsS
tatusInterval
;
req
.
clusterCfg
.
checkTime
=
0
;
char
timestr
[
32
]
=
"1970-01-01 00:00:00.00"
;
(
void
)
taosParseTime
(
timestr
,
&
req
.
clusterCfg
.
checkTime
,
(
int32_t
)
strlen
(
timestr
),
TSDB_TIME_PRECISION_MILLI
,
0
);
memcpy
(
req
.
clusterCfg
.
timezone
,
pDnode
->
env
.
timezone
,
TD_TIMEZONE_LEN
);
memcpy
(
req
.
clusterCfg
.
locale
,
pDnode
->
env
.
locale
,
TD_LOCALE_LEN
);
memcpy
(
req
.
clusterCfg
.
charset
,
pDnode
->
env
.
charset
,
TD_LOCALE_LEN
);
memcpy
(
req
.
clusterCfg
.
timezone
,
osTimezone
()
,
TD_TIMEZONE_LEN
);
memcpy
(
req
.
clusterCfg
.
locale
,
osLocale
()
,
TD_LOCALE_LEN
);
memcpy
(
req
.
clusterCfg
.
charset
,
osCharset
()
,
TD_LOCALE_LEN
);
taosRUnLockLatch
(
&
pMgmt
->
latch
);
req
.
pVloads
=
taosArrayInit
(
TSDB_MAX_VNODES
,
sizeof
(
SVnodeLoad
));
...
...
@@ -475,7 +475,7 @@ void dndProcessStartupReq(SDnode *pDnode, SRpcMsg *pReq) {
static
void
*
dnodeThreadRoutine
(
void
*
param
)
{
SDnode
*
pDnode
=
param
;
SDnodeMgmt
*
pMgmt
=
&
pDnode
->
dmgmt
;
int32_t
ms
=
pDnode
->
cfg
.
s
tatusInterval
*
1000
;
int32_t
ms
=
tsS
tatusInterval
*
1000
;
setThreadName
(
"dnode-hb"
);
...
...
source/dnode/mgmt/impl/src/dndMnode.c
浏览文件 @
68514f3d
...
...
@@ -273,15 +273,6 @@ static void dndInitMnodeOption(SDnode *pDnode, SMnodeOpt *pOption) {
pOption
->
putReqToMReadQFp
=
dndPutMsgToMReadQ
;
pOption
->
dnodeId
=
dndGetDnodeId
(
pDnode
);
pOption
->
clusterId
=
dndGetClusterId
(
pDnode
);
pOption
->
cfg
.
sver
=
pDnode
->
env
.
sver
;
pOption
->
cfg
.
enableTelem
=
pDnode
->
env
.
enableTelem
;
pOption
->
cfg
.
statusInterval
=
pDnode
->
cfg
.
statusInterval
;
pOption
->
cfg
.
shellActivityTimer
=
pDnode
->
cfg
.
shellActivityTimer
;
pOption
->
cfg
.
timezone
=
pDnode
->
env
.
timezone
;
pOption
->
cfg
.
charset
=
pDnode
->
env
.
charset
;
pOption
->
cfg
.
locale
=
pDnode
->
env
.
locale
;
pOption
->
cfg
.
gitinfo
=
pDnode
->
env
.
gitinfo
;
pOption
->
cfg
.
buildinfo
=
pDnode
->
env
.
buildinfo
;
}
static
void
dndBuildMnodeDeployOption
(
SDnode
*
pDnode
,
SMnodeOpt
*
pOption
)
{
...
...
source/dnode/mgmt/impl/src/dndQnode.c
浏览文件 @
68514f3d
...
...
@@ -185,7 +185,7 @@ static void dndBuildQnodeOption(SDnode *pDnode, SQnodeOpt *pOption) {
pOption
->
sendRedirectRspFp
=
dndSendRedirectRsp
;
pOption
->
dnodeId
=
dndGetDnodeId
(
pDnode
);
pOption
->
clusterId
=
dndGetClusterId
(
pDnode
);
pOption
->
sver
=
pDnode
->
env
.
sver
;
pOption
->
sver
=
tsVersion
;
}
static
int32_t
dndOpenQnode
(
SDnode
*
pDnode
)
{
...
...
source/dnode/mgmt/impl/src/dndSnode.c
浏览文件 @
68514f3d
...
...
@@ -179,7 +179,7 @@ static void dndBuildSnodeOption(SDnode *pDnode, SSnodeOpt *pOption) {
pOption
->
sendRedirectRspFp
=
dndSendRedirectRsp
;
pOption
->
dnodeId
=
dndGetDnodeId
(
pDnode
);
pOption
->
clusterId
=
dndGetClusterId
(
pDnode
);
pOption
->
sver
=
pDnode
->
env
.
sver
;
pOption
->
sver
=
tsVersion
;
}
static
int32_t
dndOpenSnode
(
SDnode
*
pDnode
)
{
...
...
source/dnode/mgmt/impl/src/dndTransport.c
浏览文件 @
68514f3d
...
...
@@ -189,7 +189,7 @@ static int32_t dndInitClient(SDnode *pDnode) {
rpcInit
.
cfp
=
dndProcessResponse
;
rpcInit
.
sessions
=
1024
;
rpcInit
.
connType
=
TAOS_CONN_CLIENT
;
rpcInit
.
idleTime
=
pDnode
->
cfg
.
s
hellActivityTimer
*
1000
;
rpcInit
.
idleTime
=
tsS
hellActivityTimer
*
1000
;
rpcInit
.
user
=
INTERNAL_USER
;
rpcInit
.
ckey
=
INTERNAL_CKEY
;
rpcInit
.
spi
=
1
;
...
...
@@ -344,7 +344,7 @@ static int32_t dndInitServer(SDnode *pDnode) {
STransMgmt
*
pMgmt
=
&
pDnode
->
tmgmt
;
dndInitMsgFp
(
pMgmt
);
int32_t
numOfThreads
=
(
int32_t
)((
pDnode
->
env
.
numOfCores
*
pDnode
->
cfg
.
n
umOfThreadsPerCore
)
/
2
.
0
);
int32_t
numOfThreads
=
(
int32_t
)((
tsNumOfCores
*
tsN
umOfThreadsPerCore
)
/
2
.
0
);
if
(
numOfThreads
<
1
)
{
numOfThreads
=
1
;
}
...
...
@@ -355,9 +355,9 @@ static int32_t dndInitServer(SDnode *pDnode) {
rpcInit
.
label
=
"D-S"
;
rpcInit
.
numOfThreads
=
numOfThreads
;
rpcInit
.
cfp
=
dndProcessRequest
;
rpcInit
.
sessions
=
pDnode
->
cfg
.
m
axShellConns
;
rpcInit
.
sessions
=
tsM
axShellConns
;
rpcInit
.
connType
=
TAOS_CONN_SERVER
;
rpcInit
.
idleTime
=
pDnode
->
cfg
.
s
hellActivityTimer
*
1000
;
rpcInit
.
idleTime
=
tsS
hellActivityTimer
*
1000
;
rpcInit
.
afp
=
dndRetrieveUserAuthInfo
;
rpcInit
.
parent
=
pDnode
;
...
...
source/dnode/mgmt/impl/src/dndVnodes.c
浏览文件 @
68514f3d
...
...
@@ -421,7 +421,7 @@ static int32_t dndOpenVnodes(SDnode *pDnode) {
pMgmt
->
totalVnodes
=
numOfVnodes
;
int32_t
threadNum
=
pDnode
->
env
.
n
umOfCores
;
int32_t
threadNum
=
tsN
umOfCores
;
#if 1
threadNum
=
1
;
#endif
...
...
@@ -874,11 +874,11 @@ static int32_t dndInitVnodeWorkers(SDnode *pDnode) {
SVnodesMgmt
*
pMgmt
=
&
pDnode
->
vmgmt
;
int32_t
maxFetchThreads
=
4
;
int32_t
minFetchThreads
=
TMIN
(
maxFetchThreads
,
pDnode
->
env
.
n
umOfCores
);
int32_t
minQueryThreads
=
TMAX
((
int32_t
)(
pDnode
->
env
.
numOfCores
*
pDnode
->
cfg
.
r
atioOfQueryCores
),
1
);
int32_t
minFetchThreads
=
TMIN
(
maxFetchThreads
,
tsN
umOfCores
);
int32_t
minQueryThreads
=
TMAX
((
int32_t
)(
tsNumOfCores
*
tsR
atioOfQueryCores
),
1
);
int32_t
maxQueryThreads
=
minQueryThreads
;
int32_t
maxWriteThreads
=
TMAX
(
pDnode
->
env
.
n
umOfCores
,
1
);
int32_t
maxSyncThreads
=
TMAX
(
pDnode
->
env
.
n
umOfCores
/
2
,
1
);
int32_t
maxWriteThreads
=
TMAX
(
tsN
umOfCores
,
1
);
int32_t
maxSyncThreads
=
TMAX
(
tsN
umOfCores
/
2
,
1
);
SQWorkerPool
*
pQPool
=
&
pMgmt
->
queryPool
;
pQPool
->
name
=
"vnode-query"
;
...
...
source/dnode/mgmt/impl/test/sut/src/server.cpp
浏览文件 @
68514f3d
...
...
@@ -25,11 +25,6 @@ void* serverLoop(void* param) {
SDnodeObjCfg
TestServer
::
BuildOption
(
const
char
*
path
,
const
char
*
fqdn
,
uint16_t
port
,
const
char
*
firstEp
)
{
SDnodeObjCfg
cfg
=
{
0
};
cfg
.
numOfSupportVnodes
=
16
;
cfg
.
statusInterval
=
1
;
cfg
.
numOfThreadsPerCore
=
1
;
cfg
.
ratioOfQueryCores
=
1
;
cfg
.
maxShellConns
=
1000
;
cfg
.
shellActivityTimer
=
30
;
cfg
.
serverPort
=
port
;
strcpy
(
cfg
.
dataDir
,
path
);
snprintf
(
cfg
.
localEp
,
TSDB_EP_LEN
,
"%s:%u"
,
fqdn
,
port
);
...
...
source/dnode/mgmt/impl/test/sut/src/sut.cpp
浏览文件 @
68514f3d
...
...
@@ -40,12 +40,7 @@ void Testbase::InitLog(const char* path) {
}
void
Testbase
::
Init
(
const
char
*
path
,
int16_t
port
)
{
SDnodeEnvCfg
cfg
=
{
0
};
cfg
.
numOfCommitThreads
=
1
;
cfg
.
numOfCores
=
1
;
cfg
.
rpcMaxTime
=
600
;
cfg
.
rpcTimer
=
300
;
dndInit
(
&
cfg
);
dndInit
();
char
fqdn
[]
=
"localhost"
;
char
firstEp
[
TSDB_EP_LEN
]
=
{
0
};
...
...
source/dnode/mnode/impl/inc/mndInt.h
浏览文件 @
68514f3d
...
...
@@ -24,6 +24,8 @@
#include "tqueue.h"
#include "ttime.h"
#include "wal.h"
#include "version.h"
#include "tglobal.h"
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -80,7 +82,6 @@ typedef struct SMnode {
tmr_h
mqTimer
;
tmr_h
telemTimer
;
char
*
path
;
SMnodeCfg
cfg
;
int64_t
checkTime
;
SSdb
*
pSdb
;
SDnode
*
pDnode
;
...
...
source/dnode/mnode/impl/src/mndDnode.c
浏览文件 @
68514f3d
...
...
@@ -237,7 +237,7 @@ int32_t mndGetDnodeSize(SMnode *pMnode) {
bool
mndIsDnodeOnline
(
SMnode
*
pMnode
,
SDnodeObj
*
pDnode
,
int64_t
curMs
)
{
int64_t
interval
=
TABS
(
pDnode
->
lastAccessTime
-
curMs
);
if
(
interval
>
3500
*
pMnode
->
cfg
.
s
tatusInterval
)
{
if
(
interval
>
3500
*
tsS
tatusInterval
)
{
if
(
pDnode
->
rebootTime
>
0
)
{
pDnode
->
offlineReason
=
DND_REASON_STATUS_MSG_TIMEOUT
;
}
...
...
@@ -272,24 +272,24 @@ static void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeEps) {
}
static
int32_t
mndCheckClusterCfgPara
(
SMnode
*
pMnode
,
const
SClusterCfg
*
pCfg
)
{
if
(
pCfg
->
statusInterval
!=
pMnode
->
cfg
.
s
tatusInterval
)
{
mError
(
"statusInterval [%d - %d] cfg inconsistent"
,
pCfg
->
statusInterval
,
pMnode
->
cfg
.
s
tatusInterval
);
if
(
pCfg
->
statusInterval
!=
tsS
tatusInterval
)
{
mError
(
"statusInterval [%d - %d] cfg inconsistent"
,
pCfg
->
statusInterval
,
tsS
tatusInterval
);
return
DND_REASON_STATUS_INTERVAL_NOT_MATCH
;
}
if
((
0
!=
strcasecmp
(
pCfg
->
timezone
,
pMnode
->
cfg
.
timezone
))
&&
(
pMnode
->
checkTime
!=
pCfg
->
checkTime
))
{
mError
(
"timezone [%s - %s] [%"
PRId64
" - %"
PRId64
"] cfg inconsistent"
,
pCfg
->
timezone
,
pMnode
->
cfg
.
timezone
,
if
((
0
!=
strcasecmp
(
pCfg
->
timezone
,
osTimezone
()
))
&&
(
pMnode
->
checkTime
!=
pCfg
->
checkTime
))
{
mError
(
"timezone [%s - %s] [%"
PRId64
" - %"
PRId64
"] cfg inconsistent"
,
pCfg
->
timezone
,
osTimezone
()
,
pCfg
->
checkTime
,
pMnode
->
checkTime
);
return
DND_REASON_TIME_ZONE_NOT_MATCH
;
}
if
(
0
!=
strcasecmp
(
pCfg
->
locale
,
pMnode
->
cfg
.
locale
))
{
mError
(
"locale [%s - %s] cfg inconsistent"
,
pCfg
->
locale
,
pMnode
->
cfg
.
locale
);
if
(
0
!=
strcasecmp
(
pCfg
->
locale
,
osLocale
()
))
{
mError
(
"locale [%s - %s] cfg inconsistent"
,
pCfg
->
locale
,
osLocale
()
);
return
DND_REASON_LOCALE_NOT_MATCH
;
}
if
(
0
!=
strcasecmp
(
pCfg
->
charset
,
pMnode
->
cfg
.
charset
))
{
mError
(
"charset [%s - %s] cfg inconsistent."
,
pCfg
->
charset
,
pMnode
->
cfg
.
charset
);
if
(
0
!=
strcasecmp
(
pCfg
->
charset
,
osCharset
()
))
{
mError
(
"charset [%s - %s] cfg inconsistent."
,
pCfg
->
charset
,
osCharset
()
);
return
DND_REASON_CHARSET_NOT_MATCH
;
}
...
...
@@ -355,12 +355,11 @@ static int32_t mndProcessStatusReq(SMnodeMsg *pReq) {
bool
needCheck
=
!
online
||
dnodeChanged
||
reboot
;
if
(
needCheck
)
{
if
(
statusReq
.
sver
!=
pMnode
->
cfg
.
sver
)
{
if
(
statusReq
.
sver
!=
tsVersion
)
{
if
(
pDnode
!=
NULL
)
{
pDnode
->
offlineReason
=
DND_REASON_VERSION_NOT_MATCH
;
}
mError
(
"dnode:%d, status msg version:%d not match cluster:%d"
,
statusReq
.
dnodeId
,
statusReq
.
sver
,
pMnode
->
cfg
.
sver
);
mError
(
"dnode:%d, status msg version:%d not match cluster:%d"
,
statusReq
.
dnodeId
,
statusReq
.
sver
,
tsVersion
);
terrno
=
TSDB_CODE_MND_INVALID_MSG_VERSION
;
goto
PROCESS_STATUS_MSG_OVER
;
}
...
...
@@ -666,19 +665,19 @@ static int32_t mndRetrieveConfigs(SMnodeMsg *pReq, SShowObj *pShow, char *data,
int32_t
cols
=
0
;
cfgOpts
[
numOfRows
]
=
"statusInterval"
;
snprintf
(
cfgVals
[
numOfRows
],
TSDB_CONIIG_VALUE_LEN
,
"%d"
,
pMnode
->
cfg
.
s
tatusInterval
);
snprintf
(
cfgVals
[
numOfRows
],
TSDB_CONIIG_VALUE_LEN
,
"%d"
,
tsS
tatusInterval
);
numOfRows
++
;
cfgOpts
[
numOfRows
]
=
"timezone"
;
snprintf
(
cfgVals
[
numOfRows
],
TSDB_CONIIG_VALUE_LEN
,
"%s"
,
pMnode
->
cfg
.
timezone
);
snprintf
(
cfgVals
[
numOfRows
],
TSDB_CONIIG_VALUE_LEN
,
"%s"
,
osTimezone
()
);
numOfRows
++
;
cfgOpts
[
numOfRows
]
=
"locale"
;
snprintf
(
cfgVals
[
numOfRows
],
TSDB_CONIIG_VALUE_LEN
,
"%s"
,
pMnode
->
cfg
.
locale
);
snprintf
(
cfgVals
[
numOfRows
],
TSDB_CONIIG_VALUE_LEN
,
"%s"
,
osLocale
()
);
numOfRows
++
;
cfgOpts
[
numOfRows
]
=
"charset"
;
snprintf
(
cfgVals
[
numOfRows
],
TSDB_CONIIG_VALUE_LEN
,
"%s"
,
pMnode
->
cfg
.
charset
);
snprintf
(
cfgVals
[
numOfRows
],
TSDB_CONIIG_VALUE_LEN
,
"%s"
,
osCharset
()
);
numOfRows
++
;
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
i
++
)
{
...
...
source/dnode/mnode/impl/src/mndProfile.c
浏览文件 @
68514f3d
...
...
@@ -63,7 +63,7 @@ static void mndCancelGetNextQuery(SMnode *pMnode, void *pIter);
int32_t
mndInitProfile
(
SMnode
*
pMnode
)
{
SProfileMgmt
*
pMgmt
=
&
pMnode
->
profileMgmt
;
int32_t
connCheckTime
=
pMnode
->
cfg
.
s
hellActivityTimer
*
2
;
int32_t
connCheckTime
=
tsS
hellActivityTimer
*
2
;
pMgmt
->
cache
=
taosCacheInit
(
TSDB_DATA_TYPE_INT
,
connCheckTime
,
true
,
(
__cache_free_fn_t
)
mndFreeConn
,
"conn"
);
if
(
pMgmt
->
cache
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -117,7 +117,7 @@ static SConnObj *mndCreateConn(SMnode *pMnode, SRpcConnInfo *pInfo, int32_t pid,
tstrncpy
(
connObj
.
user
,
pInfo
->
user
,
TSDB_USER_LEN
);
tstrncpy
(
connObj
.
app
,
app
,
TSDB_APP_NAME_LEN
);
int32_t
keepTime
=
pMnode
->
cfg
.
s
hellActivityTimer
*
3
;
int32_t
keepTime
=
tsS
hellActivityTimer
*
3
;
SConnObj
*
pConn
=
taosCachePut
(
pMgmt
->
cache
,
&
connId
,
sizeof
(
int32_t
),
&
connObj
,
sizeof
(
connObj
),
keepTime
*
1000
);
if
(
pConn
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -143,7 +143,7 @@ static SConnObj *mndAcquireConn(SMnode *pMnode, int32_t connId) {
return
NULL
;
}
int32_t
keepTime
=
pMnode
->
cfg
.
s
hellActivityTimer
*
3
;
int32_t
keepTime
=
tsS
hellActivityTimer
*
3
;
pConn
->
lastAccessTimeMs
=
keepTime
*
1000
+
(
uint64_t
)
taosGetTimestampMs
();
mTrace
(
"conn:%d, acquired from cache, data:%p"
,
pConn
->
id
,
pConn
);
...
...
source/dnode/mnode/impl/src/mndShow.c
浏览文件 @
68514f3d
...
...
@@ -64,7 +64,7 @@ static SShowObj *mndCreateShowObj(SMnode *pMnode, SShowReq *pReq) {
memcpy
(
showObj
.
db
,
pReq
->
db
,
TSDB_DB_FNAME_LEN
);
memcpy
(
showObj
.
payload
,
pReq
->
payload
,
pReq
->
payloadLen
);
int32_t
keepTime
=
pMnode
->
cfg
.
s
hellActivityTimer
*
6
*
1000
;
int32_t
keepTime
=
tsS
hellActivityTimer
*
6
*
1000
;
SShowObj
*
pShow
=
taosCachePut
(
pMgmt
->
cache
,
&
showId
,
sizeof
(
int64_t
),
&
showObj
,
size
,
keepTime
);
if
(
pShow
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
source/dnode/mnode/impl/src/mndTelem.c
浏览文件 @
68514f3d
...
...
@@ -138,13 +138,9 @@ static void mndAddMemoryInfo(SMnode* pMnode, SBufferWriter* bw) {
static
void
mndAddVersionInfo
(
SMnode
*
pMnode
,
SBufferWriter
*
bw
)
{
STelemMgmt
*
pMgmt
=
&
pMnode
->
telemMgmt
;
char
vstr
[
32
]
=
{
0
};
taosVersionIntToStr
(
pMnode
->
cfg
.
sver
,
vstr
,
32
);
mndAddStringField
(
bw
,
"version"
,
vstr
);
mndAddStringField
(
bw
,
"buildInfo"
,
pMnode
->
cfg
.
buildinfo
);
mndAddStringField
(
bw
,
"gitInfo"
,
pMnode
->
cfg
.
gitinfo
);
mndAddStringField
(
bw
,
"version"
,
version
);
mndAddStringField
(
bw
,
"buildInfo"
,
buildinfo
);
mndAddStringField
(
bw
,
"gitInfo"
,
gitinfo
);
mndAddStringField
(
bw
,
"email"
,
pMgmt
->
email
);
}
...
...
@@ -270,7 +266,7 @@ static void mndGetEmail(SMnode* pMnode, char* filepath) {
int32_t
mndInitTelem
(
SMnode
*
pMnode
)
{
STelemMgmt
*
pMgmt
=
&
pMnode
->
telemMgmt
;
pMgmt
->
enable
=
pMnode
->
cfg
.
enableTelem
;
pMgmt
->
enable
=
tsEnableTelemetryReporting
;
taosInitRWLatch
(
&
pMgmt
->
lock
);
mndGetEmail
(
pMnode
,
"/usr/local/taos/email"
);
...
...
source/dnode/mnode/impl/src/mnode.c
浏览文件 @
68514f3d
...
...
@@ -290,28 +290,13 @@ static int32_t mndSetOptions(SMnode *pMnode, const SMnodeOpt *pOption) {
pMnode
->
sendReqToDnodeFp
=
pOption
->
sendReqToDnodeFp
;
pMnode
->
sendReqToMnodeFp
=
pOption
->
sendReqToMnodeFp
;
pMnode
->
sendRedirectRspFp
=
pOption
->
sendRedirectRspFp
;
pMnode
->
cfg
.
sver
=
pOption
->
cfg
.
sver
;
pMnode
->
cfg
.
enableTelem
=
pOption
->
cfg
.
enableTelem
;
pMnode
->
cfg
.
statusInterval
=
pOption
->
cfg
.
statusInterval
;
pMnode
->
cfg
.
shellActivityTimer
=
pOption
->
cfg
.
shellActivityTimer
;
pMnode
->
cfg
.
timezone
=
strdup
(
pOption
->
cfg
.
timezone
);
pMnode
->
cfg
.
locale
=
strdup
(
pOption
->
cfg
.
locale
);
pMnode
->
cfg
.
charset
=
strdup
(
pOption
->
cfg
.
charset
);
pMnode
->
cfg
.
gitinfo
=
strdup
(
pOption
->
cfg
.
gitinfo
);
pMnode
->
cfg
.
buildinfo
=
strdup
(
pOption
->
cfg
.
buildinfo
);
if
(
pMnode
->
sendReqToDnodeFp
==
NULL
||
pMnode
->
sendReqToMnodeFp
==
NULL
||
pMnode
->
sendRedirectRspFp
==
NULL
||
pMnode
->
putReqToMWriteQFp
==
NULL
||
pMnode
->
dnodeId
<
0
||
pMnode
->
clusterId
<
0
||
pMnode
->
cfg
.
statusInterval
<
1
)
{
pMnode
->
putReqToMWriteQFp
==
NULL
||
pMnode
->
dnodeId
<
0
||
pMnode
->
clusterId
<
0
)
{
terrno
=
TSDB_CODE_MND_INVALID_OPTIONS
;
return
-
1
;
}
if
(
pMnode
->
cfg
.
timezone
==
NULL
||
pMnode
->
cfg
.
locale
==
NULL
||
pMnode
->
cfg
.
charset
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
return
0
;
}
...
...
@@ -381,11 +366,6 @@ void mndClose(SMnode *pMnode) {
mDebug
(
"start to close mnode"
);
mndCleanupSteps
(
pMnode
,
-
1
);
tfree
(
pMnode
->
path
);
tfree
(
pMnode
->
cfg
.
charset
);
tfree
(
pMnode
->
cfg
.
locale
);
tfree
(
pMnode
->
cfg
.
timezone
);
tfree
(
pMnode
->
cfg
.
gitinfo
);
tfree
(
pMnode
->
cfg
.
buildinfo
);
tfree
(
pMnode
);
mDebug
(
"mnode is closed"
);
}
...
...
source/libs/CMakeLists.txt
浏览文件 @
68514f3d
...
...
@@ -14,5 +14,4 @@ add_subdirectory(qcom)
add_subdirectory
(
qworker
)
add_subdirectory
(
tfs
)
add_subdirectory
(
nodes
)
add_subdirectory
(
config
)
add_subdirectory
(
scalar
)
source/libs/config/CMakeLists.txt
已删除
100644 → 0
浏览文件 @
fac3fad4
aux_source_directory
(
src CONFIG_SRC
)
add_library
(
config STATIC
${
CONFIG_SRC
}
)
target_include_directories
(
config
PUBLIC
"
${
CMAKE_SOURCE_DIR
}
/include/libs/config"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
)
target_link_libraries
(
config os util common
)
if
(
${
BUILD_TEST
}
)
ADD_SUBDIRECTORY
(
test
)
endif
(
${
BUILD_TEST
}
)
\ No newline at end of file
source/libs/config/inc/cfgInt.h
已删除
100644 → 0
浏览文件 @
fac3fad4
/*
* 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/>.
*/
#ifndef _TD_CFG_INT_H_
#define _TD_CFG_INT_H_
#include "config.h"
#include "taoserror.h"
#include "thash.h"
#include "tutil.h"
#include "ulog.h"
#include "tglobal.h"
#ifdef __cplusplus
extern
"C"
{
#endif
typedef
struct
SConfig
{
ECfgSrcType
stype
;
SHashObj
*
hash
;
}
SConfig
;
int32_t
cfgLoadFromCfgFile
(
SConfig
*
pConfig
,
const
char
*
filepath
);
int32_t
cfgLoadFromEnvFile
(
SConfig
*
pConfig
,
const
char
*
filepath
);
int32_t
cfgLoadFromEnvVar
(
SConfig
*
pConfig
);
int32_t
cfgLoadFromApollUrl
(
SConfig
*
pConfig
,
const
char
*
url
);
int32_t
cfgSetItem
(
SConfig
*
pConfig
,
const
char
*
name
,
const
char
*
value
,
ECfgSrcType
stype
);
#ifdef __cplusplus
}
#endif
#endif
/*_TD_CFG_INT_H_*/
source/libs/config/src/cfgApolloUrl.c
已删除
100644 → 0
浏览文件 @
fac3fad4
/*
* 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 "cfgInt.h"
int32_t
cfgLoadFromApollUrl
(
SConfig
*
pConfig
,
const
char
*
url
)
{
uInfo
(
"load from apoll url %s"
,
url
);
return
0
;
}
\ No newline at end of file
source/libs/config/src/cfgCfgFile.c
已删除
100644 → 0
浏览文件 @
fac3fad4
/*
* 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 "cfgInt.h"
int32_t
cfgLoadFromCfgFile
(
SConfig
*
pConfig
,
const
char
*
filepath
)
{
char
*
line
,
*
name
,
*
value
,
*
value2
,
*
value3
;
int
olen
,
vlen
,
vlen2
,
vlen3
;
ssize_t
_bytes
=
0
;
size_t
len
=
1024
;
FILE
*
fp
=
fopen
(
filepath
,
"r"
);
if
(
fp
==
NULL
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
line
=
malloc
(
len
);
while
(
!
feof
(
fp
))
{
memset
(
line
,
0
,
len
);
name
=
value
=
value2
=
value3
=
NULL
;
olen
=
vlen
=
vlen2
=
vlen3
=
0
;
_bytes
=
tgetline
(
&
line
,
&
len
,
fp
);
if
(
_bytes
<
0
)
{
break
;
}
line
[
len
-
1
]
=
0
;
paGetToken
(
line
,
&
name
,
&
olen
);
if
(
olen
==
0
)
continue
;
name
[
olen
]
=
0
;
paGetToken
(
name
+
olen
+
1
,
&
value
,
&
vlen
);
if
(
vlen
==
0
)
continue
;
value
[
vlen
]
=
0
;
paGetToken
(
value
+
vlen
+
1
,
&
value2
,
&
vlen2
);
if
(
vlen2
!=
0
)
{
value2
[
vlen2
]
=
0
;
paGetToken
(
value2
+
vlen2
+
1
,
&
value3
,
&
vlen3
);
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
}
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_CFG_FILE
);
// taosReadConfigOption(name, value, value2, value3);
}
fclose
(
fp
);
tfree
(
line
);
uInfo
(
"load from cfg file %s success"
,
filepath
);
return
0
;
}
\ No newline at end of file
source/libs/config/src/cfgEnvFile.c
已删除
100644 → 0
浏览文件 @
fac3fad4
/*
* 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 "cfgInt.h"
int32_t
cfgLoadFromEnvFile
(
SConfig
*
pConfig
,
const
char
*
filepath
)
{
uInfo
(
"load from env file %s"
,
filepath
);
return
0
;
}
\ No newline at end of file
source/libs/config/src/cfgEnvVar.c
已删除
100644 → 0
浏览文件 @
fac3fad4
/*
* 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 "cfgInt.h"
int32_t
cfgLoadFromEnvVar
(
SConfig
*
pConfig
)
{
uInfo
(
"load from global env variables"
);
return
0
;
}
\ No newline at end of file
source/libs/config/test/CMakeLists.txt
已删除
100644 → 0
浏览文件 @
fac3fad4
enable_testing
()
aux_source_directory
(
. CFG_TEST_SRC
)
add_executable
(
cfg_test
${
CFG_TEST_SRC
}
)
target_link_libraries
(
cfg_test
PUBLIC config
PUBLIC gtest_main
)
add_test
(
NAME cfg_test
COMMAND cfg_test
)
source/libs/executor/src/executorimpl.c
浏览文件 @
68514f3d
...
...
@@ -132,8 +132,7 @@ do { \
} while (0)
int32_t
getMaximumIdleDurationSec
()
{
// todo
return
6
;
//tsShellActivityTimer * 2;
return
tsShellActivityTimer
*
2
;
}
static
int32_t
getExprFunctionId
(
SExprInfo
*
pExprInfo
)
{
...
...
@@ -5302,12 +5301,10 @@ SOperatorInfo* createExchangeOperatorInfo(const SArray* pSources, const SArray*
rpcInit
.
label
=
"EX"
;
rpcInit
.
numOfThreads
=
1
;
rpcInit
.
cfp
=
qProcessFetchRsp
;
// todo
rpcInit
.
sessions
=
50000
;
//tsMaxConnections;
rpcInit
.
sessions
=
tsMaxConnections
;
rpcInit
.
connType
=
TAOS_CONN_CLIENT
;
rpcInit
.
user
=
(
char
*
)
"root"
;
// todo
rpcInit
.
idleTime
=
6
;
//tsShellActivityTimer * 1000;
rpcInit
.
idleTime
=
tsShellActivityTimer
*
1000
;
rpcInit
.
ckey
=
"key"
;
rpcInit
.
spi
=
1
;
rpcInit
.
secret
=
(
char
*
)
"dcc5bed04851fec854c035b2e40263b6"
;
...
...
source/libs/qcom/src/queryUtil.c
浏览文件 @
68514f3d
...
...
@@ -85,11 +85,10 @@ static void* pTaskQueue = NULL;
int32_t
initTaskQueue
()
{
double
factor
=
4
.
0
;
// todo
// int32_t numOfThreads = TMAX((int)(tsNumOfCores * tsNumOfThreadsPerCore / factor), 2);
int32_t
numOfThreads
=
TMAX
((
int
)(
tsNumOfCores
*
1
.
0
f
/
factor
),
2
);
int32_t
queueSize
=
25000
;
//tsMaxConnections * 2;
int32_t
numOfThreads
=
TMAX
((
int
)(
tsNumOfCores
*
tsNumOfThreadsPerCore
/
factor
),
2
);
int32_t
queueSize
=
tsMaxConnections
*
2
;
pTaskQueue
=
taosInitScheduler
(
queueSize
,
numOfThreads
,
"tsc"
);
if
(
NULL
==
pTaskQueue
)
{
qError
(
"failed to init task queue"
);
...
...
source/libs/transport/src/rpcMain.c
浏览文件 @
68514f3d
...
...
@@ -42,8 +42,6 @@ int tsRpcMaxRetry;
int
tsRpcHeadSize
;
int
tsRpcOverhead
;
int32_t
tsRpcForceTcp
=
1
;
// disable this, means query, show command use udp protocol as default
SHashObj
*
tsFqdnHash
;
#ifndef USE_UV
...
...
@@ -146,10 +144,6 @@ typedef struct SRpcConn {
static
int
tsRpcRefId
=
-
1
;
static
int32_t
tsRpcNum
=
0
;
int32_t
tsRpcTimer
=
300
;
int32_t
tsRpcMaxTime
=
600
;
// seconds;
uint32_t
tsVersion
=
0
;
// static pthread_once_t tsRpcInit = PTHREAD_ONCE_INIT;
// server:0 client:1 tcp:2 udp:0
...
...
@@ -229,9 +223,7 @@ static void rpcInitImp(void) {
tsFqdnHash
=
taosHashInit
(
64
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
),
false
,
HASH_ENTRY_LOCK
);
}
int32_t
rpcInit
(
SRpcCfg
*
pCfg
)
{
tsRpcTimer
=
pCfg
->
rpcTimer
;
tsRpcMaxTime
=
pCfg
->
rpcMaxTime
;
int32_t
rpcInit
()
{
pthread_once
(
&
tsRpcInitOnce
,
rpcInitImp
);
return
0
;
}
...
...
source/libs/transport/src/trans.c
浏览文件 @
68514f3d
...
...
@@ -112,7 +112,7 @@ void rpcSendRedirectRsp(void* thandle, const SEpSet* pEpSet) {
int
rpcReportProgress
(
void
*
pConn
,
char
*
pCont
,
int
contLen
)
{
return
-
1
;
}
void
rpcCancelRequest
(
int64_t
rid
)
{
return
;
}
int32_t
rpcInit
(
SRpcCfg
*
pCfg
)
{
int32_t
rpcInit
()
{
// impl later
return
0
;
}
...
...
source/os/src/osEnv.c
浏览文件 @
68514f3d
...
...
@@ -31,6 +31,7 @@ typedef struct SOsEnv {
char
locale
[
TD_LOCALE_LEN
];
char
charset
[
TD_CHARSET_LEN
];
int8_t
daylight
;
bool
enableCoreFile
;
}
SOsEnv
;
static
SOsEnv
env
=
{
0
};
...
...
@@ -73,9 +74,12 @@ void osSetLogReservedSpace(float sizeInGB) { env.logSpace.reserved = sizeInGB; }
void
osSetTempReservedSpace
(
float
sizeInGB
)
{
env
.
tempSpace
.
reserved
=
sizeInGB
;
}
void
osSetDataReservedSpace
(
float
sizeInGB
)
{
env
.
dataSpace
.
reserved
=
sizeInGB
;
}
void
osSetTimezone
(
const
char
*
timezone
)
{
taosSetSystemTimezone
(
timezone
,
env
.
timezone
,
&
env
.
daylight
);
}
void
osSetLocale
(
const
char
*
locale
,
const
char
*
charset
)
{
taosSetSystemLocale
(
locale
,
charset
);
}
bool
osSetEnableCore
(
bool
enable
)
{
env
.
enableCoreFile
=
enable
;
}
void
osInit
()
{
srand
(
taosSafeRand
());
taosGetSystemInfo
();
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
taosWinSocketInit
();
...
...
@@ -88,21 +92,27 @@ void osInit() {
strcpy
(
env
.
tempDir
,
tmpDir
);
}
strcpy
(
configDir
,
"C:
\\
TDengine
\\
cfg"
);
if
(
configDir
[
0
]
==
0
)
{
strcpy
(
configDir
,
"C:
\\
TDengine
\\
cfg"
);
}
strcpy
(
env
.
dataDir
,
"C:
\\
TDengine
\\
data"
);
strcpy
(
env
.
logDir
,
"C:
\\
TDengine
\\
log"
);
strcpy
(
env
.
tempDir
,
"C:
\\
Windows
\\
Temp"
);
strcpy
(
env
.
osName
,
"Windows"
);
#elif defined(_TD_DARWIN_64)
strcpy
(
configDir
,
"/tmp/taosd"
);
if
(
configDir
[
0
]
==
0
)
{
strcpy
(
configDir
,
"/tmp/taosd"
);
}
strcpy
(
env
.
dataDir
,
"/usr/local/var/lib/taos"
);
strcpy
(
env
.
logDir
,
"/usr/local/var/log/taos"
);
strcpy
(
env
.
tempDir
,
"/usr/local/etc/taos"
);
strcpy
(
env
.
osName
,
"Darwin"
);
#else
strcpy
(
configDir
,
"/etc/taos"
);
if
(
configDir
[
0
]
==
0
)
{
strcpy
(
configDir
,
"/etc/taos"
);
}
strcpy
(
env
.
dataDir
,
"/var/lib/taos"
);
strcpy
(
env
.
logDir
,
"/var/log/taos"
);
strcpy
(
env
.
tempDir
,
"/tmp"
);
...
...
source/os/src/osLocale.c
浏览文件 @
68514f3d
...
...
@@ -75,13 +75,8 @@ void taosSetSystemLocale(const char *inLocale, const char *inCharSet) {
char
*
locale
=
setlocale
(
LC_CTYPE
,
inLocale
);
// default locale or user specified locale is not valid, abort launch
if
(
inLocale
==
NULL
)
{
printf
(
"Invalid locale:%s, please set the valid locale in config file
\n
"
,
inLocale
);
}
if
(
strlen
(
inCharSet
)
==
0
)
{
printf
(
"failed to get charset, please set the valid charset in config file
\n
"
);
exit
(
-
1
);
if
(
inLocale
==
NULL
||
strlen
(
inLocale
)
==
0
)
{
//printf("Invalid locale:%s, please set the valid locale in config file\n", inLocale);
}
if
(
!
taosValidateEncodec
(
inCharSet
))
{
...
...
source/os/src/osSysinfo.c
浏览文件 @
68514f3d
...
...
@@ -20,7 +20,7 @@ int32_t tsTotalMemoryMB = 0;
int64_t
tsPageSize
=
0
;
int64_t
tsOpenMax
=
0
;
int64_t
tsStreamMax
=
0
;
int32_t
tsNumOfCores
=
1
;
int32_t
tsNumOfCores
=
2
;
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
/*
...
...
source/
libs/config/src/
config.c
→
source/
util/src/t
config.c
浏览文件 @
68514f3d
...
...
@@ -14,12 +14,25 @@
*/
#define _DEFAULT_SOURCE
#include "cfgInt.h"
#include "tep.h"
#include "tmsg.h"
#define CFG_NAME_PRINT_LEN 22
#define CFG_SRC_PRINT_LEN 12
#include "tconfig.h"
#include "taoserror.h"
#include "thash.h"
#include "tutil.h"
#include "ulog.h"
#define CFG_NAME_PRINT_LEN 24
#define CFG_SRC_PRINT_LEN 12
typedef
struct
SConfig
{
ECfgSrcType
stype
;
SHashObj
*
hash
;
}
SConfig
;
int32_t
cfgLoadFromCfgFile
(
SConfig
*
pConfig
,
const
char
*
filepath
);
int32_t
cfgLoadFromEnvFile
(
SConfig
*
pConfig
,
const
char
*
filepath
);
int32_t
cfgLoadFromEnvVar
(
SConfig
*
pConfig
);
int32_t
cfgLoadFromApollUrl
(
SConfig
*
pConfig
,
const
char
*
url
);
int32_t
cfgSetItem
(
SConfig
*
pConfig
,
const
char
*
name
,
const
char
*
value
,
ECfgSrcType
stype
);
SConfig
*
cfgInit
()
{
SConfig
*
pCfg
=
calloc
(
1
,
sizeof
(
SConfig
));
...
...
@@ -131,23 +144,6 @@ static int32_t cfgCheckAndSetDir(SConfigItem *pItem, const char *inputDir) {
return
0
;
}
static
int32_t
cfgCheckAndSetIpStr
(
SConfigItem
*
pItem
,
const
char
*
ip
)
{
uint32_t
value
=
taosInetAddr
(
ip
);
if
(
value
==
INADDR_NONE
)
{
uError
(
"ip:%s is not a valid ip address"
,
ip
);
return
-
1
;
}
tfree
(
pItem
->
str
);
pItem
->
str
=
strdup
(
ip
);
if
(
pItem
->
str
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
return
0
;
}
static
int32_t
cfgSetBool
(
SConfigItem
*
pItem
,
const
char
*
value
,
ECfgSrcType
stype
)
{
bool
tmp
=
false
;
if
(
strcasecmp
(
value
,
"true"
)
==
0
)
{
...
...
@@ -223,20 +219,6 @@ static int32_t cfgSetString(SConfigItem *pItem, const char *value, ECfgSrcType s
return
0
;
}
static
int32_t
cfgSetIpStr
(
SConfigItem
*
pItem
,
const
char
*
value
,
ECfgSrcType
stype
)
{
char
*
tmp
=
strdup
(
value
);
if
(
tmp
==
NULL
||
cfgCheckAndSetIpStr
(
pItem
,
value
)
!=
0
)
{
free
(
tmp
);
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
uError
(
"cfg:%s, type:%s src:%s value:%s failed to dup since %s, use last src:%s value:%s"
,
pItem
->
name
,
cfgDtypeStr
(
pItem
->
dtype
),
cfgStypeStr
(
stype
),
value
,
terrstr
(),
cfgStypeStr
(
pItem
->
stype
),
pItem
->
str
);
return
-
1
;
}
pItem
->
stype
=
stype
;
return
0
;
}
static
int32_t
cfgSetDir
(
SConfigItem
*
pItem
,
const
char
*
value
,
ECfgSrcType
stype
)
{
char
*
tmp
=
strdup
(
value
);
if
(
tmp
==
NULL
||
cfgCheckAndSetDir
(
pItem
,
value
)
!=
0
)
{
...
...
@@ -310,8 +292,6 @@ int32_t cfgSetItem(SConfig *pCfg, const char *name, const char *value, ECfgSrcTy
return
cfgSetFloat
(
pItem
,
value
,
stype
);
case
CFG_DTYPE_STRING
:
return
cfgSetString
(
pItem
,
value
,
stype
);
case
CFG_DTYPE_IPSTR
:
return
cfgSetIpStr
(
pItem
,
value
,
stype
);
case
CFG_DTYPE_DIR
:
return
cfgSetDir
(
pItem
,
value
,
stype
);
case
CFG_DTYPE_TIMEZONE
:
...
...
@@ -366,43 +346,43 @@ static int32_t cfgAddItem(SConfig *pCfg, SConfigItem *pItem, const char *name) {
return
0
;
}
int32_t
cfgAddBool
(
SConfig
*
pCfg
,
const
char
*
name
,
bool
defaultVal
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_BOOL
,
.
bval
=
defaultVal
};
int32_t
cfgAddBool
(
SConfig
*
pCfg
,
const
char
*
name
,
bool
defaultVal
,
bool
tsc
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_BOOL
,
.
bval
=
defaultVal
,
.
tsc
=
tsc
};
return
cfgAddItem
(
pCfg
,
&
item
,
name
);
}
int32_t
cfgAddInt32
(
SConfig
*
pCfg
,
const
char
*
name
,
int32_t
defaultVal
,
int64_t
minval
,
int64_t
maxval
)
{
int32_t
cfgAddInt32
(
SConfig
*
pCfg
,
const
char
*
name
,
int32_t
defaultVal
,
int64_t
minval
,
int64_t
maxval
,
bool
tsc
)
{
if
(
defaultVal
<
minval
||
defaultVal
>
maxval
)
{
terrno
=
TSDB_CODE_OUT_OF_RANGE
;
return
-
1
;
}
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_INT32
,
.
i32
=
defaultVal
,
.
imin
=
minval
,
.
imax
=
maxval
};
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_INT32
,
.
i32
=
defaultVal
,
.
imin
=
minval
,
.
imax
=
maxval
,
.
tsc
=
tsc
};
return
cfgAddItem
(
pCfg
,
&
item
,
name
);
}
int32_t
cfgAddInt64
(
SConfig
*
pCfg
,
const
char
*
name
,
int64_t
defaultVal
,
int64_t
minval
,
int64_t
maxval
)
{
int32_t
cfgAddInt64
(
SConfig
*
pCfg
,
const
char
*
name
,
int64_t
defaultVal
,
int64_t
minval
,
int64_t
maxval
,
bool
tsc
)
{
if
(
defaultVal
<
minval
||
defaultVal
>
maxval
)
{
terrno
=
TSDB_CODE_OUT_OF_RANGE
;
return
-
1
;
}
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_INT64
,
.
i64
=
defaultVal
,
.
imin
=
minval
,
.
imax
=
maxval
};
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_INT64
,
.
i64
=
defaultVal
,
.
imin
=
minval
,
.
imax
=
maxval
,
.
tsc
=
tsc
};
return
cfgAddItem
(
pCfg
,
&
item
,
name
);
}
int32_t
cfgAddFloat
(
SConfig
*
pCfg
,
const
char
*
name
,
float
defaultVal
,
double
minval
,
double
maxval
)
{
int32_t
cfgAddFloat
(
SConfig
*
pCfg
,
const
char
*
name
,
float
defaultVal
,
double
minval
,
double
maxval
,
bool
tsc
)
{
if
(
defaultVal
<
minval
||
defaultVal
>
maxval
)
{
terrno
=
TSDB_CODE_OUT_OF_RANGE
;
return
-
1
;
}
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_FLOAT
,
.
fval
=
defaultVal
,
.
fmin
=
minval
,
.
fmax
=
maxval
};
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_FLOAT
,
.
fval
=
defaultVal
,
.
fmin
=
minval
,
.
fmax
=
maxval
,
.
tsc
=
tsc
};
return
cfgAddItem
(
pCfg
,
&
item
,
name
);
}
int32_t
cfgAddString
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_STRING
};
int32_t
cfgAddString
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
,
bool
tsc
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_STRING
,
.
tsc
=
tsc
};
item
.
str
=
strdup
(
defaultVal
);
if
(
item
.
str
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -411,17 +391,8 @@ int32_t cfgAddString(SConfig *pCfg, const char *name, const char *defaultVal) {
return
cfgAddItem
(
pCfg
,
&
item
,
name
);
}
int32_t
cfgAddIpStr
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_IPSTR
};
if
(
cfgCheckAndSetIpStr
(
&
item
,
defaultVal
)
!=
0
)
{
return
-
1
;
}
return
cfgAddItem
(
pCfg
,
&
item
,
name
);
}
int32_t
cfgAddDir
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_DIR
};
int32_t
cfgAddDir
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
,
bool
tsc
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_DIR
,
.
tsc
=
tsc
};
if
(
cfgCheckAndSetDir
(
&
item
,
defaultVal
)
!=
0
)
{
return
-
1
;
}
...
...
@@ -430,7 +401,7 @@ int32_t cfgAddDir(SConfig *pCfg, const char *name, const char *defaultVal) {
}
int32_t
cfgAddLocale
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_LOCALE
};
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_LOCALE
,
.
tsc
=
1
};
if
(
cfgCheckAndSetLocale
(
&
item
,
defaultVal
)
!=
0
)
{
return
-
1
;
}
...
...
@@ -439,7 +410,7 @@ int32_t cfgAddLocale(SConfig *pCfg, const char *name, const char *defaultVal) {
}
int32_t
cfgAddCharset
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_CHARSET
};
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_CHARSET
,
.
tsc
=
1
};
if
(
cfgCheckAndSetCharset
(
&
item
,
defaultVal
)
!=
0
)
{
return
-
1
;
}
...
...
@@ -448,7 +419,7 @@ int32_t cfgAddCharset(SConfig *pCfg, const char *name, const char *defaultVal) {
}
int32_t
cfgAddTimezone
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
defaultVal
)
{
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_TIMEZONE
};
SConfigItem
item
=
{.
dtype
=
CFG_DTYPE_TIMEZONE
,
.
tsc
=
1
};
if
(
cfgCheckAndSetTimezone
(
&
item
,
defaultVal
)
!=
0
)
{
return
-
1
;
}
...
...
@@ -491,8 +462,6 @@ const char *cfgDtypeStr(ECfgDataType type) {
return
"float"
;
case
CFG_DTYPE_STRING
:
return
"string"
;
case
CFG_DTYPE_IPSTR
:
return
"ipstr"
;
case
CFG_DTYPE_DIR
:
return
"dir"
;
case
CFG_DTYPE_LOCALE
:
...
...
@@ -506,15 +475,23 @@ const char *cfgDtypeStr(ECfgDataType type) {
}
}
void
cfgDumpCfg
(
SConfig
*
pCfg
)
{
uInfo
(
" global config"
);
uInfo
(
"================================================================="
);
void
cfgDumpCfg
(
SConfig
*
pCfg
,
bool
tsc
,
bool
dump
)
{
if
(
dump
)
{
printf
(
" global config"
);
printf
(
"
\n
"
);
printf
(
"================================================================="
);
printf
(
"
\n
"
);
}
else
{
uInfo
(
" global config"
);
uInfo
(
"================================================================="
);
}
char
src
[
CFG_SRC_PRINT_LEN
+
1
]
=
{
0
};
char
name
[
CFG_NAME_PRINT_LEN
+
1
]
=
{
0
};
SConfigItem
*
pItem
=
cfgIterate
(
pCfg
,
NULL
);
while
(
pItem
!=
NULL
)
{
if
(
tsc
&&
!
pItem
->
tsc
)
continue
;
tstrncpy
(
src
,
cfgStypeStr
(
pItem
->
stype
),
CFG_SRC_PRINT_LEN
);
for
(
int32_t
i
=
0
;
i
<
CFG_SRC_PRINT_LEN
;
++
i
)
{
if
(
src
[
i
]
==
0
)
src
[
i
]
=
' '
;
...
...
@@ -527,107 +504,126 @@ void cfgDumpCfg(SConfig *pCfg) {
switch
(
pItem
->
dtype
)
{
case
CFG_DTYPE_BOOL
:
uInfo
(
"%s %s %u"
,
src
,
name
,
pItem
->
bval
);
if
(
dump
)
{
printf
(
"%s %s %u"
,
src
,
name
,
pItem
->
bval
);
printf
(
"
\n
"
);
}
else
{
uInfo
(
"%s %s %u"
,
src
,
name
,
pItem
->
bval
);
}
break
;
case
CFG_DTYPE_INT32
:
uInfo
(
"%s %s %d"
,
src
,
name
,
pItem
->
i32
);
if
(
dump
)
{
printf
(
"%s %s %d"
,
src
,
name
,
pItem
->
i32
);
printf
(
"
\n
"
);
}
else
{
uInfo
(
"%s %s %d"
,
src
,
name
,
pItem
->
i32
);
}
break
;
case
CFG_DTYPE_INT64
:
uInfo
(
"%s %s %"
PRId64
,
src
,
name
,
pItem
->
i64
);
if
(
dump
)
{
printf
(
"%s %s %"
PRId64
,
src
,
name
,
pItem
->
i64
);
printf
(
"
\n
"
);
}
else
{
uInfo
(
"%s %s %"
PRId64
,
src
,
name
,
pItem
->
i64
);
}
break
;
case
CFG_DTYPE_FLOAT
:
uInfo
(
"%s %s %f"
,
src
,
name
,
pItem
->
fval
);
if
(
dump
)
{
printf
(
"%s %s %f"
,
src
,
name
,
pItem
->
fval
);
printf
(
"
\n
"
);
}
else
{
uInfo
(
"%s %s %f"
,
src
,
name
,
pItem
->
fval
);
}
break
;
case
CFG_DTYPE_STRING
:
case
CFG_DTYPE_IPSTR
:
case
CFG_DTYPE_DIR
:
case
CFG_DTYPE_LOCALE
:
case
CFG_DTYPE_CHARSET
:
case
CFG_DTYPE_TIMEZONE
:
uInfo
(
"%s %s %s"
,
src
,
name
,
pItem
->
str
);
if
(
dump
)
{
printf
(
"%s %s %s"
,
src
,
name
,
pItem
->
str
);
printf
(
"
\n
"
);
}
else
{
uInfo
(
"%s %s %s"
,
src
,
name
,
pItem
->
str
);
}
break
;
}
pItem
=
cfgIterate
(
pCfg
,
pItem
);
}
uInfo
(
"================================================================="
);
if
(
dump
)
{
printf
(
"================================================================="
);
printf
(
"
\n
"
);
}
else
{
uInfo
(
"================================================================="
);
}
}
#if 0
// int32_t cfgCheck(SConfig *pCfg) {
// SConfigItem *pItem = NULL;
// pItem = cfgGetItem(pCfg, "serverPort");
// if (pItem != NULL) {
// tsServerPort = (uint16_t)pItem->i32;
// }
// pItem = cfgGetItem(pCfg, "firstEp");
// if (pItem != NULL) {
// tstrncpy(tsFirst, pItem->str, TSDB_EP_LEN);
// }
int32_t
cfgLoadFromEnvVar
(
SConfig
*
pConfig
)
{
uInfo
(
"load from global env variables"
);
return
0
;
}
// snprintf(tsLocalEp, TSDB_EP_LEN, "%s:%u", tsLocalFqdn, tsServerPort);
// uInfo("localEp is: %s", tsLocalEp);
int32_t
cfgLoadFromEnvFile
(
SConfig
*
pConfig
,
const
char
*
filepath
)
{
uInfo
(
"load from env file %s"
,
filepath
);
return
0
;
}
// SEp ep = {0};
// if (tsFirst[0] == 0) {
// strcpy(tsFirst, tsLocalEp);
// } else {
// taosGetFqdnPortFromEp(tsFirst, &ep);
// snprintf(tsFirst, TSDB_EP_LEN, "%s:%u", ep.fqdn, ep.port);
// }
int32_t
cfgLoadFromCfgFile
(
SConfig
*
pConfig
,
const
char
*
filepath
)
{
char
*
line
,
*
name
,
*
value
,
*
value2
,
*
value3
;
int
olen
,
vlen
,
vlen2
,
vlen3
;
ssize_t
_bytes
=
0
;
size_t
len
=
1024
;
// pItem = cfgGetItem(pCfg, "secondEp");
// if (pItem != NULL) {
// tstrncpy(tsSecond, pItem->str, TSDB_EP_LEN);
// }
FILE
*
fp
=
fopen
(
filepath
,
"r"
);
if
(
fp
==
NULL
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
// if (tsSecond[0] == 0) {
// strcpy(tsSecond, tsLocalEp);
// } else {
// taosGetFqdnPortFromEp(tsSecond, &ep);
// snprintf(tsSecond, TSDB_EP_LEN, "%s:%u", ep.fqdn, ep.port);
// }
line
=
malloc
(
len
);
// pItem = cfgGetItem(pCfg, "dataDir");
// if (pItem != NULL) {
// tstrncpy(osDataDir(), pItem->str, PATH_MAX);
// }
while
(
!
feof
(
fp
))
{
memset
(
line
,
0
,
len
);
// if (tsDiskCfgNum <= 0) {
// taosAddDataDir(0, osDataDir(), 0, 1);
// tsDiskCfgNum = 1;
// uTrace("dataDir:%s, level:0 primary:1 is configured by default", osDataDir());
// }
name
=
value
=
value2
=
value3
=
NULL
;
olen
=
vlen
=
vlen2
=
vlen3
=
0
;
// if (taosDirExist(osTempDir()) != 0) {
// return -1;
// }
_bytes
=
tgetline
(
&
line
,
&
len
,
fp
);
if
(
_bytes
<
0
)
{
break
;
}
// taosGetSystemInfo()
;
line
[
len
-
1
]
=
0
;
// tsSetLocale();
paGetToken
(
line
,
&
name
,
&
olen
);
if
(
olen
==
0
)
continue
;
name
[
olen
]
=
0
;
// // SGlobalCfg *cfg_timezone = taosGetConfigOption("timezone");
// // if (cfg_timezone && cfg_timezone->cfgStatus == TAOS_CFG_CSTATUS_FILE) {
// tsSetTimeZone();
// // }
paGetToken
(
name
+
olen
+
1
,
&
value
,
&
vlen
);
if
(
vlen
==
0
)
continue
;
value
[
vlen
]
=
0
;
// pItem = cfgGetItem(pCfg, "numOfCores");
// if (pItem != NULL) {
// tsNumOfCores = pItem->i32;
// }
paGetToken
(
value
+
vlen
+
1
,
&
value2
,
&
vlen2
);
if
(
vlen2
!=
0
)
{
value2
[
vlen2
]
=
0
;
paGetToken
(
value2
+
vlen2
+
1
,
&
value3
,
&
vlen3
);
if
(
vlen3
!=
0
)
value3
[
vlen3
]
=
0
;
}
// if (tsNumOfCores <= 0) {
// tsNumOfCores = 1
;
//
}
cfgSetItem
(
pConfig
,
name
,
value
,
CFG_STYPE_CFG_FILE
);
// taosReadConfigOption(name, value, value2, value3)
;
}
// if (tsQueryBufferSize >= 0) {
// tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL;
// }
fclose
(
fp
);
tfree
(
line
);
// cfgPrintCfg(pCfg);
uInfo
(
"load from cfg file %s success"
,
filepath
);
return
0
;
}
// return 0;
// }
#endif
\ No newline at end of file
int32_t
cfgLoadFromApollUrl
(
SConfig
*
pConfig
,
const
char
*
url
)
{
uInfo
(
"load from apoll url %s"
,
url
);
return
0
;
}
\ No newline at end of file
source/util/src/ttimer.c
浏览文件 @
68514f3d
...
...
@@ -111,7 +111,7 @@ typedef struct time_wheel_t {
tmr_obj_t
**
slots
;
}
time_wheel_t
;
u
int32_t
tsMaxTmrCtrl
=
512
;
int32_t
tsMaxTmrCtrl
=
512
;
static
pthread_once_t
tmrModuleInit
=
PTHREAD_ONCE_INIT
;
static
pthread_mutex_t
tmrCtrlMutex
;
...
...
source/util/test/CMakeLists.txt
浏览文件 @
68514f3d
...
...
@@ -51,4 +51,12 @@ target_link_libraries(queue_test os util gtest_main)
add_test
(
NAME queue_test
COMMAND queue_test
)
# cfgTest
add_executable
(
cfgTest
"cfgTest.cpp"
)
target_link_libraries
(
cfgTest os util gtest_main
)
add_test
(
NAME cfgTest
COMMAND cfgTest
)
\ No newline at end of file
source/
libs/config
/test/cfgTest.cpp
→
source/
util
/test/cfgTest.cpp
浏览文件 @
68514f3d
...
...
@@ -10,7 +10,7 @@
*/
#include <gtest/gtest.h>
#include "config.h"
#include "
t
config.h"
class
CfgTest
:
public
::
testing
::
Test
{
protected:
...
...
@@ -43,7 +43,6 @@ TEST_F(CfgTest, 01_Str) {
EXPECT_STREQ
(
cfgDtypeStr
(
CFG_DTYPE_INT64
),
"int64"
);
EXPECT_STREQ
(
cfgDtypeStr
(
CFG_DTYPE_FLOAT
),
"float"
);
EXPECT_STREQ
(
cfgDtypeStr
(
CFG_DTYPE_STRING
),
"string"
);
EXPECT_STREQ
(
cfgDtypeStr
(
CFG_DTYPE_IPSTR
),
"ipstr"
);
EXPECT_STREQ
(
cfgDtypeStr
(
CFG_DTYPE_DIR
),
"dir"
);
EXPECT_STREQ
(
cfgDtypeStr
(
CFG_DTYPE_DIR
),
"dir"
);
EXPECT_STREQ
(
cfgDtypeStr
(
CFG_DTYPE_DIR
),
"dir"
);
...
...
@@ -55,15 +54,14 @@ TEST_F(CfgTest, 02_Basic) {
SConfig
*
pConfig
=
cfgInit
();
ASSERT_NE
(
pConfig
,
nullptr
);
EXPECT_EQ
(
cfgAddBool
(
pConfig
,
"test_bool"
,
0
),
0
);
EXPECT_EQ
(
cfgAddInt32
(
pConfig
,
"test_int32"
,
1
,
0
,
16
),
0
);
EXPECT_EQ
(
cfgAddInt64
(
pConfig
,
"test_int64"
,
2
,
0
,
16
),
0
);
EXPECT_EQ
(
cfgAddFloat
(
pConfig
,
"test_float"
,
3
,
0
,
16
),
0
);
EXPECT_EQ
(
cfgAddString
(
pConfig
,
"test_string"
,
"4"
),
0
);
EXPECT_EQ
(
cfgAddIpStr
(
pConfig
,
"test_ipstr"
,
"192.168.0.1"
),
0
);
EXPECT_EQ
(
cfgAddDir
(
pConfig
,
"test_dir"
,
"/tmp"
),
0
);
EXPECT_EQ
(
cfgAddBool
(
pConfig
,
"test_bool"
,
0
,
0
),
0
);
EXPECT_EQ
(
cfgAddInt32
(
pConfig
,
"test_int32"
,
1
,
0
,
16
,
0
),
0
);
EXPECT_EQ
(
cfgAddInt64
(
pConfig
,
"test_int64"
,
2
,
0
,
16
,
0
),
0
);
EXPECT_EQ
(
cfgAddFloat
(
pConfig
,
"test_float"
,
3
,
0
,
16
,
0
),
0
);
EXPECT_EQ
(
cfgAddString
(
pConfig
,
"test_string"
,
"4"
,
0
),
0
);
EXPECT_EQ
(
cfgAddDir
(
pConfig
,
"test_dir"
,
"/tmp"
,
0
),
0
);
EXPECT_EQ
(
cfgGetSize
(
pConfig
),
7
);
EXPECT_EQ
(
cfgGetSize
(
pConfig
),
6
);
int32_t
size
=
0
;
SConfigItem
*
pItem
=
cfgIterate
(
pConfig
,
NULL
);
...
...
@@ -84,9 +82,6 @@ TEST_F(CfgTest, 02_Basic) {
case
CFG_DTYPE_STRING
:
printf
(
"index:%d, cfg:%s value:%s
\n
"
,
size
,
pItem
->
name
,
pItem
->
str
);
break
;
case
CFG_DTYPE_IPSTR
:
printf
(
"index:%d, cfg:%s value:%s
\n
"
,
size
,
pItem
->
name
,
pItem
->
str
);
break
;
case
CFG_DTYPE_DIR
:
printf
(
"index:%d, cfg:%s value:%s
\n
"
,
size
,
pItem
->
name
,
pItem
->
str
);
break
;
...
...
@@ -99,7 +94,7 @@ TEST_F(CfgTest, 02_Basic) {
}
cfgCancelIterate
(
pConfig
,
pItem
);
EXPECT_EQ
(
cfgGetSize
(
pConfig
),
7
);
EXPECT_EQ
(
cfgGetSize
(
pConfig
),
6
);
pItem
=
cfgGetItem
(
pConfig
,
"test_bool"
);
EXPECT_EQ
(
pItem
->
stype
,
CFG_STYPE_DEFAULT
);
...
...
@@ -131,12 +126,6 @@ TEST_F(CfgTest, 02_Basic) {
EXPECT_STREQ
(
pItem
->
name
,
"test_string"
);
EXPECT_STREQ
(
pItem
->
str
,
"4"
);
pItem
=
cfgGetItem
(
pConfig
,
"test_ipstr"
);
EXPECT_EQ
(
pItem
->
stype
,
CFG_STYPE_DEFAULT
);
EXPECT_EQ
(
pItem
->
dtype
,
CFG_DTYPE_IPSTR
);
EXPECT_STREQ
(
pItem
->
name
,
"test_ipstr"
);
EXPECT_STREQ
(
pItem
->
str
,
"192.168.0.1"
);
pItem
=
cfgGetItem
(
pConfig
,
"test_dir"
);
EXPECT_EQ
(
pItem
->
stype
,
CFG_STYPE_DEFAULT
);
EXPECT_EQ
(
pItem
->
dtype
,
CFG_DTYPE_DIR
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录