@cryptotaxi247 / netdata-1 / commits / 111fba235

Set sqlite max soft and hard heap limit (#19963)

Set SQLite heap memory limits and log their values on initialization

Stelios Fragkakis committed Mar 27, 2025 at 12:47 UTC 111fba23590cf4197a578cb5c7203b7173b6356a
1 file changed +20
src/database/sqlite/sqlite_functions.c
+20
@@ -399,11 +399,31 @@ uint64_t get_total_database_space(void)
399 */
400 }
401
402 +#define SQLITE_HEAP_HARD_LIMIT (256 * 1024 * 1024)
403 +#define SQLITE_HEAP_SOFT_LIMIT (32 * 1024 * 1024)
404 +
405 int sqlite_library_init(void)
406 {
407 initialize_thread_key_pool();
408
409 int rc = sqlite3_initialize();
410 + if (rc == SQLITE_OK) {
411 +
412 + (void )sqlite3_hard_heap_limit64(SQLITE_HEAP_HARD_LIMIT);
413 + int64_t hard_limit_bytes = sqlite3_hard_heap_limit64(-1);
414 +
415 + (void) sqlite3_soft_heap_limit64(SQLITE_HEAP_SOFT_LIMIT);
416 + int64_t soft_limit_bytes = sqlite3_soft_heap_limit64(-1);
417 +
418 + const char sqlite_hard_limit_mb[32];
419 + size_snprintf_bytes((char *)sqlite_hard_limit_mb, sizeof(sqlite_hard_limit_mb), hard_limit_bytes);
420 +
421 + const char sqlite_soft_limit_mb[32];
422 + size_snprintf_bytes((char *)sqlite_soft_limit_mb, sizeof(sqlite_soft_limit_mb), soft_limit_bytes);
423 +
424 + nd_log_daemon(
425 + NDLP_INFO, "SQLITE: heap memory hard limit %s, soft limit %s", sqlite_hard_limit_mb, sqlite_soft_limit_mb);
426 + }
427
428 return (SQLITE_OK != rc);
429 }