Skip to content

Commit 63519e5

Browse files
Copilotcadem
andcommitted
Fix critical bugs in audit record processing
Co-authored-by: cadem <[email protected]>
1 parent d101582 commit 63519e5

File tree

1 file changed

+33
-24
lines changed

1 file changed

+33
-24
lines changed

source/dnode/vnode/src/vnd/vnodeSvr.c

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3021,33 +3021,31 @@ static int32_t vnodeSaveOneAuditRecord(SVnode *pVnode, int64_t ver, SJson *pJson
30213021
vTrace("vgId:%d, affectedRow:%d", TD_VID(pVnode), pSubmitRsp->affectedRows);
30223022

30233023
_exit:
3024-
if (code != 0)
3024+
if (code != 0) {
30253025
vError("vgId:%d, failed to save one AuditRecord at line:%d, since %s", TD_VID(pVnode), lino, tstrerror(code));
3026+
} else {
3027+
// update statistics only on success
3028+
(void)atomic_add_fetch_64(&pVnode->statis.nInsert, pSubmitRsp->affectedRows);
3029+
(void)atomic_add_fetch_64(&pVnode->statis.nInsertSuccess, pSubmitRsp->affectedRows);
3030+
(void)atomic_add_fetch_64(&pVnode->statis.nBatchInsert, 1);
3031+
(void)atomic_add_fetch_64(&pVnode->statis.nBatchInsertSuccess, 1);
30263032

3027-
// update statistics
3028-
(void)atomic_add_fetch_64(&pVnode->statis.nInsert, pSubmitRsp->affectedRows);
3029-
(void)atomic_add_fetch_64(&pVnode->statis.nInsertSuccess, pSubmitRsp->affectedRows);
3030-
(void)atomic_add_fetch_64(&pVnode->statis.nBatchInsert, 1);
3033+
// update metrics
3034+
METRICS_UPDATE(pVnode->writeMetrics.total_requests, METRIC_LEVEL_LOW, 1);
3035+
METRICS_UPDATE(pVnode->writeMetrics.total_rows, METRIC_LEVEL_HIGH, pSubmitRsp->affectedRows);
3036+
// METRICS_UPDATE(pVnode->writeMetrics.total_bytes, METRIC_LEVEL_LOW, pMsg->header.contLen);
30313037

3032-
// update metrics
3033-
METRICS_UPDATE(pVnode->writeMetrics.total_requests, METRIC_LEVEL_LOW, 1);
3034-
METRICS_UPDATE(pVnode->writeMetrics.total_rows, METRIC_LEVEL_HIGH, pSubmitRsp->affectedRows);
3035-
// METRICS_UPDATE(pVnode->writeMetrics.total_bytes, METRIC_LEVEL_LOW, pMsg->header.contLen);
3036-
3037-
if (tsEnableMonitor && tsMonitorFqdn[0] != 0 && tsMonitorPort != 0 && pSubmitRsp->affectedRows > 0 &&
3038-
strlen(RPC_MSG_USER(pOriginalMsg)) > 0 && tsInsertCounter != NULL) {
3039-
const char *sample_labels[] = {VNODE_METRIC_TAG_VALUE_INSERT_AFFECTED_ROWS,
3040-
pVnode->monitor.strClusterId,
3041-
pVnode->monitor.strDnodeId,
3042-
tsLocalEp,
3043-
pVnode->monitor.strVgId,
3044-
RPC_MSG_USER(pOriginalMsg),
3045-
"Success"};
3046-
int tv = taos_counter_add(tsInsertCounter, pSubmitRsp->affectedRows, sample_labels);
3047-
}
3048-
3049-
if (code == 0) {
3050-
(void)atomic_add_fetch_64(&pVnode->statis.nBatchInsertSuccess, 1);
3038+
if (tsEnableMonitor && tsMonitorFqdn[0] != 0 && tsMonitorPort != 0 && pSubmitRsp->affectedRows > 0 &&
3039+
strlen(RPC_MSG_USER(pOriginalMsg)) > 0 && tsInsertCounter != NULL) {
3040+
const char *sample_labels[] = {VNODE_METRIC_TAG_VALUE_INSERT_AFFECTED_ROWS,
3041+
pVnode->monitor.strClusterId,
3042+
pVnode->monitor.strDnodeId,
3043+
tsLocalEp,
3044+
pVnode->monitor.strVgId,
3045+
RPC_MSG_USER(pOriginalMsg),
3046+
"Success"};
3047+
int tv = taos_counter_add(tsInsertCounter, pSubmitRsp->affectedRows, sample_labels);
3048+
}
30513049
}
30523050

30533051
// clear
@@ -3074,6 +3072,12 @@ static int32_t vnodeProcessAuditRecordReq(SVnode *pVnode, int64_t ver, void *pRe
30743072
return code;
30753073
}
30763074

3075+
if (req.data == NULL) {
3076+
vError("vgId:%d, audit record data is NULL", TD_VID(pVnode));
3077+
code = TSDB_CODE_INVALID_MSG;
3078+
return code;
3079+
}
3080+
30773081
vTrace("vgId:%d, start to process AuditRecord Req, data:%s", TD_VID(pVnode), req.data);
30783082

30793083
SJson *pJson = NULL;
@@ -3113,6 +3117,11 @@ static int32_t vnodeProcessAuditRecordReq(SVnode *pVnode, int64_t ver, void *pRe
31133117
vTrace("%d items in records", size);
31143118
for (int32_t i = 0; i < size; ++i) {
31153119
SJson *pRecord = tjsonGetArrayItem(pRecords, i);
3120+
if (pRecord == NULL) {
3121+
vError("vgId:%d, failed to get array item %d", TD_VID(pVnode), i);
3122+
code = TSDB_CODE_INVALID_JSON_FORMAT;
3123+
TAOS_CHECK_GOTO(code, &lino, _exit);
3124+
}
31163125
TAOS_CHECK_GOTO(vnodeSaveOneAuditRecord(pVnode, ver, pRecord, pTagSchema, suid, pSchema, pOriginalMsg), &lino,
31173126
_exit);
31183127
}

0 commit comments

Comments
 (0)