From 3bad06b76f237ee34522fe72aaf5ed73e542848c Mon Sep 17 00:00:00 2001 From: kailixu Date: Wed, 17 Apr 2024 16:59:43 +0800 Subject: [PATCH] enh: error log optimization for invalid dnode cfg --- include/util/taoserror.h | 7 ++++++- source/dnode/mnode/impl/src/mndDnode.c | 11 +++++++++-- source/util/src/terror.c | 6 ++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/include/util/taoserror.h b/include/util/taoserror.h index c249b2ed41..4afb29f6c9 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -426,7 +426,12 @@ int32_t* taosGetErrno(); #define TSDB_CODE_DNODE_INVALID_ENCRYPTKEY TAOS_DEF_ERROR_CODE(0, 0x0420) #define TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED TAOS_DEF_ERROR_CODE(0, 0x0421) #define TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN TAOS_DEF_ERROR_CODE(0, 0x0422) - +#define TSDB_CODE_DNODE_INVALID_STATUS_INTERVAL TAOS_DEF_ERROR_CODE(0, 0x0423) +#define TSDB_CODE_DNODE_INVALID_TIMEZONE TAOS_DEF_ERROR_CODE(0, 0x0424) +#define TSDB_CODE_DNODE_INVALID_CHARSET TAOS_DEF_ERROR_CODE(0, 0x0425) +#define TSDB_CODE_DNODE_INVALID_LOCALE TAOS_DEF_ERROR_CODE(0, 0x0426) +#define TSDB_CODE_DNODE_INVALID_TTL_CHG_ON_WR TAOS_DEF_ERROR_CODE(0, 0x0427) +#define TSDB_CODE_DNODE_INVALID_EN_WHITELIST TAOS_DEF_ERROR_CODE(0, 0x0428) // mnode-sma #define TSDB_CODE_MND_SMA_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0480) diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index 3bf975a5ee..34757ee032 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -42,7 +42,7 @@ static const char *offlineReason[] = { "version not match", "dnodeId not match", "clusterId not match", - "interval not match", + "statusInterval not match", "timezone not match", "locale not match", "charset not match", @@ -442,33 +442,39 @@ static int32_t mndCheckClusterCfgPara(SMnode *pMnode, SDnodeObj *pDnode, const S if (pCfg->statusInterval != tsStatusInterval) { mError("dnode:%d, statusInterval:%d inconsistent with cluster:%d", pDnode->id, pCfg->statusInterval, tsStatusInterval); + terrno = TSDB_CODE_DNODE_INVALID_STATUS_INTERVAL; return DND_REASON_STATUS_INTERVAL_NOT_MATCH; } if ((0 != strcasecmp(pCfg->timezone, tsTimezoneStr)) && (pMnode->checkTime != pCfg->checkTime)) { mError("dnode:%d, timezone:%s checkTime:%" PRId64 " inconsistent with cluster %s %" PRId64, pDnode->id, pCfg->timezone, pCfg->checkTime, tsTimezoneStr, pMnode->checkTime); + terrno = TSDB_CODE_DNODE_INVALID_TIMEZONE; return DND_REASON_TIME_ZONE_NOT_MATCH; } if (0 != strcasecmp(pCfg->locale, tsLocale)) { mError("dnode:%d, locale:%s inconsistent with cluster:%s", pDnode->id, pCfg->locale, tsLocale); + terrno = TSDB_CODE_DNODE_INVALID_LOCALE; return DND_REASON_LOCALE_NOT_MATCH; } if (0 != strcasecmp(pCfg->charset, tsCharset)) { mError("dnode:%d, charset:%s inconsistent with cluster:%s", pDnode->id, pCfg->charset, tsCharset); + terrno = TSDB_CODE_DNODE_INVALID_CHARSET; return DND_REASON_CHARSET_NOT_MATCH; } if (pCfg->ttlChangeOnWrite != tsTtlChangeOnWrite) { mError("dnode:%d, ttlChangeOnWrite:%d inconsistent with cluster:%d", pDnode->id, pCfg->ttlChangeOnWrite, tsTtlChangeOnWrite); + terrno = TSDB_CODE_DNODE_INVALID_TTL_CHG_ON_WR; return DND_REASON_TTL_CHANGE_ON_WRITE_NOT_MATCH; } int8_t enable = tsEnableWhiteList ? 1 : 0; if (pCfg->enableWhiteList != enable) { mError("dnode:%d, enableWhiteList:%d inconsistent with cluster:%d", pDnode->id, pCfg->enableWhiteList, enable); + terrno = TSDB_CODE_DNODE_INVALID_EN_WHITELIST; return DND_REASON_ENABLE_WHITELIST_NOT_MATCH; } @@ -476,6 +482,7 @@ static int32_t mndCheckClusterCfgPara(SMnode *pMnode, SDnodeObj *pDnode, const S (pCfg->encryptionKeyStat != tsEncryptionKeyStat || pCfg->encryptionKeyChksum != tsEncryptionKeyChksum)) { mError("dnode:%d, encryptionKey:%" PRIi8 "-%u inconsistent with cluster:%" PRIi8 "-%u", pDnode->id, pCfg->encryptionKeyStat, pCfg->encryptionKeyChksum, tsEncryptionKeyStat, tsEncryptionKeyChksum); + terrno = TSDB_CODE_DNODE_INVALID_ENCRYPTKEY; return DND_REASON_ENCRYPTION_KEY_NOT_MATCH; } @@ -905,7 +912,7 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) { pDnode->offlineReason = mndCheckClusterCfgPara(pMnode, pDnode, &statusReq.clusterCfg); if (pDnode->offlineReason != 0) { mError("dnode:%d, cluster cfg inconsistent since:%s", pDnode->id, offlineReason[pDnode->offlineReason]); - terrno = TSDB_CODE_MND_INVALID_CLUSTER_CFG; + if (terrno == 0) terrno = TSDB_CODE_MND_INVALID_CLUSTER_CFG; goto _OVER; } diff --git a/source/util/src/terror.c b/source/util/src/terror.c index 2afdad15db..0f526d4b1e 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -362,6 +362,12 @@ TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_ENCRYPT_CONFIG, "invalid encryption co TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_ENCRYPTKEY, "invalid encryption key") TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED, "encryption key was changed") TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN, "Invalid encryption key length") +TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_STATUS_INTERVAL,"statusInterval not match") +TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_TIMEZONE, "timezone not match") +TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_CHARSET, "charset not match") +TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_LOCALE, "locale not match") +TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_TTL_CHG_ON_WR, "ttlChangeOnWrite not match") +TAOS_DEFINE_ERROR(TSDB_CODE_DNODE_INVALID_EN_WHITELIST, "enableWhiteList not match") // vnode TAOS_DEFINE_ERROR(TSDB_CODE_VND_INVALID_VGROUP_ID, "Vnode is closed or removed")