storage: each runtime database connection keeps a page cache sized for its role, read back at open
This commit is contained in:
+7
-8
@@ -397,14 +397,13 @@ fn serve(r: cli.Runner, args: cli.RunArgs) !u8 {
|
||||
var data = try cli.DataDir.open(io, gpa, paths.data_dir, true);
|
||||
defer data.close(io, gpa);
|
||||
|
||||
var config_db = try data.openConfigDb(io);
|
||||
var config_db = try data.openMigratedConfigDb(io);
|
||||
defer config_db.close();
|
||||
_ = try migrations.migrate(&config_db);
|
||||
|
||||
// Opened unconditionally, not gated on `cfg.web.enabled`: diagnostics record
|
||||
// what went wrong whether or not anyone is running the UI, and the store
|
||||
// owns this connection outright (`storage/events.zig`).
|
||||
var events_db = try data.openConfigDb(io);
|
||||
var events_db = try data.openRuntimeDb(io, .config);
|
||||
defer events_db.close();
|
||||
const boot_now_s = std.Io.Clock.real.now(io).toSeconds();
|
||||
var event_store_storage: ?events.Store = events.Store.init(io, &events_db, boot_now_s) catch |err| blk: {
|
||||
@@ -656,21 +655,21 @@ fn serve(r: cli.Runner, args: cli.RunArgs) !u8 {
|
||||
defer log_controller.deinit(io);
|
||||
var sink: query_sink.QuerySink = .init(&log_controller, hub);
|
||||
|
||||
var querylog_retention_db = try data.reopenQuerylogDb(io);
|
||||
var querylog_retention_db = try data.openRuntimeDb(io, .querylog_retention);
|
||||
defer querylog_retention_db.close();
|
||||
var tracker_db = try data.openConfigDb(io);
|
||||
var tracker_db = try data.openRuntimeDb(io, .config);
|
||||
defer tracker_db.close();
|
||||
|
||||
// The web task's own two connections (ruling 26; m7 ruling 21: one SQLite
|
||||
// connection per task), opened only when the web interface is (ruling 6).
|
||||
// `reopenQuerylogDb` requires the file `openQuerylogDb` established above.
|
||||
// A query-log role requires the file `openQuerylogDb` established above.
|
||||
var web_config_db: ?db.Db = null;
|
||||
defer if (web_config_db) |*database| database.close();
|
||||
var web_querylog_db: ?db.Db = null;
|
||||
defer if (web_querylog_db) |*database| database.close();
|
||||
if (cfg.web.enabled) {
|
||||
web_config_db = try data.openConfigDb(io);
|
||||
web_querylog_db = try data.reopenQuerylogDb(io);
|
||||
web_config_db = try data.openRuntimeDb(io, .config);
|
||||
web_querylog_db = try data.openRuntimeDb(io, .querylog_reader);
|
||||
}
|
||||
|
||||
var sessions: ?auth.Sessions = if (cfg.web.enabled) .init(cfg.web.session_ttl_hours) else null;
|
||||
|
||||
Reference in New Issue
Block a user