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
}