Add a default busy timeout (#20201)
* Switch message to warning Add busy timeout handler * Add message
Stelios Fragkakis committed
Apr 28, 2025 at 21:15 UTC
fcd51e075d08276e7544b80dac8d19430df9bbff
3 files changed
+4
-1
src/database/sqlite/sqlite_functions.c
+1
-1
@@ -272,7 +272,7 @@ int db_execute(sqlite3 *db, const char *cmd)
272
break;
273
274
++cnt;
275
- error_report("Failed to execute '%s', rc = %d (%s) -- attempt %d", cmd, rc, err_msg ? err_msg : "unknown", cnt);
275
+ nd_log_daemon(NDLP_WARNING, "Failed to execute '%s', rc = %d (%s) -- attempt %d", cmd, rc, err_msg ? err_msg : "unknown", cnt);
276
if (err_msg) {
277
sqlite3_free(err_msg);
278
}
src/database/sqlite/sqlite_functions.h
+1
@@ -83,6 +83,7 @@ void analytics_set_data_str(char **name, const char *value);
83
84
#define SQL_MAX_RETRY (100)
85
#define SQLITE_INSERT_DELAY (10) // Insert delay in case of lock
86
+#define SQLITE_BUSY_DELAY_MS (30) // Busy timeout delay
87
88
SQLITE_API int sqlite3_step_monitored(sqlite3_stmt *stmt);
89
SQLITE_API int sqlite3_exec_monitored(
src/database/sqlite/sqlite_metadata.c
+2
@@ -797,6 +797,8 @@ int sql_init_meta_database(db_check_action_type_t rebuild, int memory)
797
goto close_database;
798
799
netdata_log_info("SQLite database initialization completed");
800
+ if (sqlite3_busy_timeout(db_meta, SQLITE_BUSY_DELAY_MS) != SQLITE_OK)
801
+ nd_log_daemon(NDLP_WARNING, "SQLITE: Failed to set busy timeout to %d ms", SQLITE_BUSY_DELAY_MS);
802
803
return 0;
804