commit
abc28ce5af
|
@ -116,7 +116,7 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char name[TSDB_FILENAME_LEN];
|
char name[TSDB_FILENAME_LEN];
|
||||||
int32_t level;
|
int8_t level;
|
||||||
SDiskSize size;
|
SDiskSize size;
|
||||||
} SMonDiskDesc;
|
} SMonDiskDesc;
|
||||||
|
|
||||||
|
@ -126,9 +126,16 @@ typedef struct {
|
||||||
SMonDiskDesc tempdir;
|
SMonDiskDesc tempdir;
|
||||||
} SMonDiskInfo;
|
} SMonDiskInfo;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
MON_LEVEL_ERROR = 0,
|
||||||
|
MON_LEVEL_INFO = 1,
|
||||||
|
MON_LEVEL_DEBUG = 2,
|
||||||
|
MON_LEVEL_TRACE = 3,
|
||||||
|
} EMonLogLevel;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int64_t ts;
|
int64_t ts;
|
||||||
int8_t level;
|
EMonLogLevel level;
|
||||||
char content[MON_LOG_LEN];
|
char content[MON_LOG_LEN];
|
||||||
} SMonLogItem;
|
} SMonLogItem;
|
||||||
|
|
||||||
|
|
|
@ -155,23 +155,42 @@ static void taosAddDataDir(int32_t index, char *v1, int32_t level, int32_t prima
|
||||||
uTrace("dataDir:%s, level:%d primary:%d is configured", v1, level, primary);
|
uTrace("dataDir:%s, level:%d primary:%d is configured", v1, level, primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taosSetTfsCfg(SConfig *pCfg) {
|
static int32_t taosSetTfsCfg(SConfig *pCfg) {
|
||||||
SConfigItem *pItem = cfgGetItem(pCfg, "dataDir");
|
SConfigItem *pItem = cfgGetItem(pCfg, "dataDir");
|
||||||
if (pItem == NULL) return;
|
memset(tsDataDir, 0, PATH_MAX);
|
||||||
|
|
||||||
int32_t size = taosArrayGetSize(pItem->array);
|
int32_t size = taosArrayGetSize(pItem->array);
|
||||||
if (size <= 0) {
|
if (size <= 0) {
|
||||||
tsDiskCfgNum = 1;
|
tsDiskCfgNum = 1;
|
||||||
taosAddDataDir(0, pItem->str, 0, 1);
|
taosAddDataDir(0, pItem->str, 0, 1);
|
||||||
|
tstrncpy(tsDataDir, pItem->str, PATH_MAX);
|
||||||
|
if (taosMkDir(tsDataDir) != 0) {
|
||||||
|
uError("failed to create dataDir:%s since %s", tsDataDir, terrstr());
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
tsDiskCfgNum = size < TFS_MAX_DISKS ? size : TFS_MAX_DISKS;
|
tsDiskCfgNum = size < TFS_MAX_DISKS ? size : TFS_MAX_DISKS;
|
||||||
for (int32_t index = 0; index < tsDiskCfgNum; ++index) {
|
for (int32_t index = 0; index < tsDiskCfgNum; ++index) {
|
||||||
SDiskCfg *pCfg = taosArrayGet(pItem->array, index);
|
SDiskCfg *pCfg = taosArrayGet(pItem->array, index);
|
||||||
memcpy(&tsDiskCfg[index], pCfg, sizeof(SDiskCfg));
|
memcpy(&tsDiskCfg[index], pCfg, sizeof(SDiskCfg));
|
||||||
|
if (pCfg->level == 0 && pCfg->primary == 1) {
|
||||||
|
tstrncpy(tsDataDir, pCfg->dir, PATH_MAX);
|
||||||
|
}
|
||||||
|
if (taosMkDir(pCfg->dir) != 0) {
|
||||||
|
uError("failed to create tfsDir:%s since %s", tsDataDir, terrstr());
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tsDataDir[0] == 0) {
|
||||||
|
uError("datadir not set");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
struct SConfig *taosGetCfg() {
|
struct SConfig *taosGetCfg() {
|
||||||
return tsCfg;
|
return tsCfg;
|
||||||
}
|
}
|
||||||
|
@ -358,7 +377,7 @@ static void taosSetServerLogCfg(SConfig *pCfg) {
|
||||||
fsDebugFlag = cfgGetItem(pCfg, "fsDebugFlag")->i32;
|
fsDebugFlag = cfgGetItem(pCfg, "fsDebugFlag")->i32;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taosSetClientCfg(SConfig *pCfg) {
|
static int32_t taosSetClientCfg(SConfig *pCfg) {
|
||||||
tstrncpy(tsLocalFqdn, cfgGetItem(pCfg, "fqdn")->str, TSDB_FQDN_LEN);
|
tstrncpy(tsLocalFqdn, cfgGetItem(pCfg, "fqdn")->str, TSDB_FQDN_LEN);
|
||||||
tsServerPort = (uint16_t)cfgGetItem(pCfg, "serverPort")->i32;
|
tsServerPort = (uint16_t)cfgGetItem(pCfg, "serverPort")->i32;
|
||||||
snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort);
|
snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort);
|
||||||
|
@ -375,9 +394,13 @@ static void taosSetClientCfg(SConfig *pCfg) {
|
||||||
snprintf(tsSecond, sizeof(tsSecond), "%s:%u", secondEp.fqdn, secondEp.port);
|
snprintf(tsSecond, sizeof(tsSecond), "%s:%u", secondEp.fqdn, secondEp.port);
|
||||||
cfgSetItem(pCfg, "secondEp", tsSecond, pSecondpItem->stype);
|
cfgSetItem(pCfg, "secondEp", tsSecond, pSecondpItem->stype);
|
||||||
|
|
||||||
tstrncpy(tsLogDir, cfgGetItem(pCfg, "tempDir")->str, PATH_MAX);
|
tstrncpy(tsTempDir, cfgGetItem(pCfg, "tempDir")->str, PATH_MAX);
|
||||||
taosExpandDir(tsLogDir, tsLogDir, PATH_MAX);
|
taosExpandDir(tsTempDir, tsTempDir, PATH_MAX);
|
||||||
tsTempSpace.reserved = cfgGetItem(pCfg, "minimalTempDirGB")->fval;
|
tsTempSpace.reserved = cfgGetItem(pCfg, "minimalTempDirGB")->fval;
|
||||||
|
if (taosMkDir(tsTempDir) != 0) {
|
||||||
|
uError("failed to create tempDir:%s since %s", tsTempDir, terrstr());
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
tsNumOfThreadsPerCore = cfgGetItem(pCfg, "maxTmrCtrl")->fval;
|
tsNumOfThreadsPerCore = cfgGetItem(pCfg, "maxTmrCtrl")->fval;
|
||||||
tsMaxTmrCtrl = cfgGetItem(pCfg, "maxTmrCtrl")->i32;
|
tsMaxTmrCtrl = cfgGetItem(pCfg, "maxTmrCtrl")->i32;
|
||||||
|
@ -392,6 +415,8 @@ static void taosSetClientCfg(SConfig *pCfg) {
|
||||||
tsMaxNumOfOrderedResults = cfgGetItem(pCfg, "maxNumOfOrderedRes")->i32;
|
tsMaxNumOfOrderedResults = cfgGetItem(pCfg, "maxNumOfOrderedRes")->i32;
|
||||||
tsKeepOriginalColumnName = cfgGetItem(pCfg, "keepColumnName")->bval;
|
tsKeepOriginalColumnName = cfgGetItem(pCfg, "keepColumnName")->bval;
|
||||||
tsMaxBinaryDisplayWidth = cfgGetItem(pCfg, "maxBinaryDisplayWidth")->i32;
|
tsMaxBinaryDisplayWidth = cfgGetItem(pCfg, "maxBinaryDisplayWidth")->i32;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taosSetSystemCfg(SConfig *pCfg) {
|
static void taosSetSystemCfg(SConfig *pCfg) {
|
||||||
|
@ -411,11 +436,8 @@ static void taosSetSystemCfg(SConfig *pCfg) {
|
||||||
tsVersion = 30000000;
|
tsVersion = 30000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taosSetServerCfg(SConfig *pCfg) {
|
static int32_t taosSetServerCfg(SConfig *pCfg) {
|
||||||
tstrncpy(tsDataDir, cfgGetItem(pCfg, "dataDir")->str, PATH_MAX);
|
tsDataSpace.reserved = cfgGetItem(pCfg, "minimalDataDirGB")->fval;
|
||||||
taosExpandDir(tsDataDir, tsDataDir, PATH_MAX);
|
|
||||||
|
|
||||||
tsTempSpace.reserved = cfgGetItem(pCfg, "minimalDataDirGB")->fval;
|
|
||||||
tsNumOfCommitThreads = cfgGetItem(pCfg, "numOfCommitThreads")->i32;
|
tsNumOfCommitThreads = cfgGetItem(pCfg, "numOfCommitThreads")->i32;
|
||||||
tsRatioOfQueryCores = cfgGetItem(pCfg, "ratioOfQueryCores")->fval;
|
tsRatioOfQueryCores = cfgGetItem(pCfg, "ratioOfQueryCores")->fval;
|
||||||
tsMaxNumOfDistinctResults = cfgGetItem(pCfg, "maxNumOfDistinctRes")->i32;
|
tsMaxNumOfDistinctResults = cfgGetItem(pCfg, "maxNumOfDistinctRes")->i32;
|
||||||
|
@ -444,6 +466,8 @@ static void taosSetServerCfg(SConfig *pCfg) {
|
||||||
if (tsQueryBufferSize >= 0) {
|
if (tsQueryBufferSize >= 0) {
|
||||||
tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL;
|
tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char *envFile,
|
int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char *envFile,
|
||||||
|
@ -504,8 +528,8 @@ int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloU
|
||||||
tsCfg = cfgInit();
|
tsCfg = cfgInit();
|
||||||
|
|
||||||
if (tsc) {
|
if (tsc) {
|
||||||
if (taosAddClientLogCfg(tsCfg) != 0) return -1;
|
|
||||||
if (taosAddClientCfg(tsCfg) != 0) return -1;
|
if (taosAddClientCfg(tsCfg) != 0) return -1;
|
||||||
|
if (taosAddClientLogCfg(tsCfg) != 0) return -1;
|
||||||
} else {
|
} else {
|
||||||
if (taosAddClientCfg(tsCfg) != 0) return -1;
|
if (taosAddClientCfg(tsCfg) != 0) return -1;
|
||||||
if (taosAddServerCfg(tsCfg) != 0) return -1;
|
if (taosAddServerCfg(tsCfg) != 0) return -1;
|
||||||
|
@ -528,24 +552,14 @@ int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloU
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tsc) {
|
if (tsc) {
|
||||||
taosSetClientCfg(tsCfg);
|
if (taosSetClientCfg(tsCfg)) return -1;
|
||||||
} else {
|
} else {
|
||||||
taosSetClientCfg(tsCfg);
|
if (taosSetClientCfg(tsCfg)) return -1;
|
||||||
taosSetServerCfg(tsCfg);
|
if (taosSetServerCfg(tsCfg)) return -1;
|
||||||
taosSetTfsCfg(tsCfg);
|
if (taosSetTfsCfg(tsCfg) != 0) return -1;
|
||||||
}
|
}
|
||||||
taosSetSystemCfg(tsCfg);
|
taosSetSystemCfg(tsCfg);
|
||||||
|
|
||||||
if (taosMkDir(tsTempDir) != 0) {
|
|
||||||
uError("failed to create dir:%s since %s", tsTempDir, terrstr());
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!tsc && taosMkDir(tsDataDir) != 0) {
|
|
||||||
uError("failed to create dir:%s since %s", tsDataDir, terrstr());
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
cfgDumpCfg(tsCfg, tsc, false);
|
cfgDumpCfg(tsCfg, tsc, false);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -924,4 +924,7 @@ static void mndCancelGetNextQuery(SMnode *pMnode, void *pIter) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t mndGetNumOfConnections(SMnode *pMnode) { return taosHashGetSize(pMnode->profileMgmt.cache->pHashTable); }
|
int32_t mndGetNumOfConnections(SMnode *pMnode) {
|
||||||
|
SProfileMgmt *pMgmt = &pMnode->profileMgmt;
|
||||||
|
return taosCacheGetNumOfObj(pMgmt->cache);
|
||||||
|
}
|
|
@ -270,6 +270,21 @@ void monSetDiskInfo(SMonInfo *pMonitor, SMonDiskInfo *pInfo) {
|
||||||
tjsonAddDoubleToObject(pTempdirJson, "total", pInfo->tempdir.size.total);
|
tjsonAddDoubleToObject(pTempdirJson, "total", pInfo->tempdir.size.total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *monLogLevelStr(EMonLogLevel level) {
|
||||||
|
switch (level) {
|
||||||
|
case MON_LEVEL_ERROR:
|
||||||
|
return "error";
|
||||||
|
case MON_LEVEL_INFO:
|
||||||
|
return "info";
|
||||||
|
case MON_LEVEL_DEBUG:
|
||||||
|
return "debug";
|
||||||
|
case MON_LEVEL_TRACE:
|
||||||
|
return "trace";
|
||||||
|
default:
|
||||||
|
return "undefine";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void monSetLogInfo(SMonInfo *pMonitor) {
|
static void monSetLogInfo(SMonInfo *pMonitor) {
|
||||||
SJson *pJson = tjsonCreateObject();
|
SJson *pJson = tjsonCreateObject();
|
||||||
if (pJson == NULL) return;
|
if (pJson == NULL) return;
|
||||||
|
@ -291,7 +306,7 @@ static void monSetLogInfo(SMonInfo *pMonitor) {
|
||||||
taosFormatUtcTime(buf, sizeof(buf), pLogItem->ts, TSDB_TIME_PRECISION_MILLI);
|
taosFormatUtcTime(buf, sizeof(buf), pLogItem->ts, TSDB_TIME_PRECISION_MILLI);
|
||||||
|
|
||||||
tjsonAddStringToObject(pLogJson, "ts", buf);
|
tjsonAddStringToObject(pLogJson, "ts", buf);
|
||||||
tjsonAddDoubleToObject(pLogJson, "level", pLogItem->level);
|
tjsonAddStringToObject(pLogJson, "level", monLogLevelStr(pLogItem->level));
|
||||||
tjsonAddStringToObject(pLogJson, "content", pLogItem->content);
|
tjsonAddStringToObject(pLogJson, "content", pLogItem->content);
|
||||||
|
|
||||||
if (tjsonAddItemToArray(pLogsJson, pLogJson) != 0) tjsonDelete(pLogJson);
|
if (tjsonAddItemToArray(pLogsJson, pLogJson) != 0) tjsonDelete(pLogJson);
|
||||||
|
|
|
@ -195,19 +195,19 @@ void MonitorTest::GetDiskInfo(SMonInfo *pMonitor, SMonDiskInfo *pInfo) {
|
||||||
void MonitorTest::AddLogInfo1() {
|
void MonitorTest::AddLogInfo1() {
|
||||||
SMonLogItem log1 = {0};
|
SMonLogItem log1 = {0};
|
||||||
log1.ts = taosGetTimestampMs();
|
log1.ts = taosGetTimestampMs();
|
||||||
log1.level = 1;
|
log1.level = MON_LEVEL_INFO;
|
||||||
strcpy(log1.content, "1 -------------------------- a");
|
strcpy(log1.content, "1 -------------------------- a");
|
||||||
monAddLogItem(&log1);
|
monAddLogItem(&log1);
|
||||||
|
|
||||||
SMonLogItem log2 = {0};
|
SMonLogItem log2 = {0};
|
||||||
log2.ts = taosGetTimestampMs();
|
log2.ts = taosGetTimestampMs();
|
||||||
log2.level = 1;
|
log2.level = MON_LEVEL_ERROR;
|
||||||
strcpy(log2.content, "1 ------------------------ b");
|
strcpy(log2.content, "1 ------------------------ b");
|
||||||
monAddLogItem(&log2);
|
monAddLogItem(&log2);
|
||||||
|
|
||||||
SMonLogItem log3 = {0};
|
SMonLogItem log3 = {0};
|
||||||
log3.ts = taosGetTimestampMs();
|
log3.ts = taosGetTimestampMs();
|
||||||
log3.level = 1;
|
log3.level = MON_LEVEL_DEBUG;
|
||||||
strcpy(log3.content, "1 ------- c");
|
strcpy(log3.content, "1 ------- c");
|
||||||
monAddLogItem(&log3);
|
monAddLogItem(&log3);
|
||||||
}
|
}
|
||||||
|
@ -215,13 +215,13 @@ void MonitorTest::AddLogInfo1() {
|
||||||
void MonitorTest::AddLogInfo2() {
|
void MonitorTest::AddLogInfo2() {
|
||||||
SMonLogItem log1;
|
SMonLogItem log1;
|
||||||
log1.ts = taosGetTimestampMs();
|
log1.ts = taosGetTimestampMs();
|
||||||
log1.level = 01;
|
log1.level = MON_LEVEL_ERROR;
|
||||||
strcpy(log1.content, "2 ------- a");
|
strcpy(log1.content, "2 ------- a");
|
||||||
monAddLogItem(&log1);
|
monAddLogItem(&log1);
|
||||||
|
|
||||||
SMonLogItem log2;
|
SMonLogItem log2;
|
||||||
log2.ts = taosGetTimestampMs();
|
log2.ts = taosGetTimestampMs();
|
||||||
log2.level = 0;
|
log2.level = MON_LEVEL_ERROR;
|
||||||
strcpy(log2.content, "2 ------- b");
|
strcpy(log2.content, "2 ------- b");
|
||||||
monAddLogItem(&log2);
|
monAddLogItem(&log2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,14 +145,7 @@ static int32_t cfgCheckAndSetDir(SConfigItem *pItem, const char *inputDir) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
tfree(pItem->str);
|
||||||
if (taosMkDir(fullDir) != 0) {
|
|
||||||
uError("failed to create dir:%s realpath:%s since %s", inputDir, fullDir, terrstr());
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
cfgFreeItem(pItem);
|
|
||||||
pItem->str = strdup(fullDir);
|
pItem->str = strdup(fullDir);
|
||||||
if (pItem->str == NULL) {
|
if (pItem->str == NULL) {
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
@ -647,7 +640,7 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
|
||||||
}
|
}
|
||||||
|
|
||||||
cfgSetItem(pConfig, name, value, CFG_STYPE_CFG_FILE);
|
cfgSetItem(pConfig, name, value, CFG_STYPE_CFG_FILE);
|
||||||
if (value2 != NULL && value3 != NULL && value2[0] != 0 && value3[0] != 0) {
|
if (value2 != NULL && value3 != NULL && value2[0] != 0 && value3[0] != 0 && strcasecmp(name, "dataDir") == 0) {
|
||||||
cfgSetTfsItem(pConfig, name, value, value2, value3, CFG_STYPE_CFG_FILE);
|
cfgSetTfsItem(pConfig, name, value, value2, value3, CFG_STYPE_CFG_FILE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue