mdbx: корректировка log_error() для устранение ложных ошибок при работе mdbx_chk с высоким уровнем логирования (backport).

Некая проблема была в том, что при высоком уровне логирования в логгер
также отправлялись неизбежные MDBX_NOTFOND при достижении конца
интегрируемых данных. В свою очередь, chk-логика формирования отчета
подсчитывала эти сообщения как ошибки при проверке БД...
This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2025-03-03 01:49:32 +03:00
parent 5e714ed946
commit 40f655e2da

View File

@ -58,10 +58,11 @@ __cold void debug_log(int level, const char *function, int line, const char *fmt
__cold void log_error(const int err, const char *func, unsigned line) { __cold void log_error(const int err, const char *func, unsigned line) {
assert(err != MDBX_SUCCESS); assert(err != MDBX_SUCCESS);
if (unlikely(globals.loglevel >= MDBX_LOG_DEBUG) && if (unlikely(globals.loglevel >= MDBX_LOG_DEBUG)) {
(globals.loglevel >= MDBX_LOG_TRACE || !(err == MDBX_RESULT_TRUE || err == MDBX_NOTFOUND))) { const bool is_error = err != MDBX_RESULT_TRUE && err != MDBX_NOTFOUND;
char buf[256]; char buf[256];
debug_log(MDBX_LOG_ERROR, func, line, "error %d (%s)\n", err, mdbx_strerror_r(err, buf, sizeof(buf))); debug_log(is_error ? MDBX_LOG_ERROR : MDBX_LOG_VERBOSE, func, line, "%s %d (%s)\n",
is_error ? "error" : "condition", err, mdbx_strerror_r(err, buf, sizeof(buf)));
} }
} }