storage: version querylog.db and migrate it in place, never reset a healthy file
querylog.db carries a schema version; migrations run at startup as one transaction after a vacuumed 0600 backup, and every failure refuses startup (exit 2, no systemd restart loop) instead of starting empty. corruption is the only automatic recreate left. the cut gate now requires a fixture-proven migration or an explicit versioned break with restore instructions, and locks shipped migration files and fixtures byte-for-byte.
This commit is contained in:
@@ -27,6 +27,7 @@ const disk_monitor = @import("disk_monitor.zig");
|
||||
const logger = @import("logger.zig");
|
||||
const queries_repo = @import("repositories/queries_repo.zig");
|
||||
const querylog_schema = @import("querylog_schema.zig");
|
||||
const querylog_versions = @import("querylog_versions.zig");
|
||||
const retention = @import("retention.zig");
|
||||
|
||||
const testing = std.testing;
|
||||
@@ -233,7 +234,7 @@ test "S8 case 1: the logger writes a real querylog.db end to end" {
|
||||
try testing.expectEqual(@as(i64, 250), try queries_repo.countRows(log_db.database()));
|
||||
try testing.expectEqual(@as(i64, 10), try queries_repo.countDomains(log_db.database()));
|
||||
try testing.expectEqual(
|
||||
@as(i64, querylog_schema.fingerprint),
|
||||
@as(i64, querylog_versions.current_version),
|
||||
try log_db.database().queryInt("PRAGMA user_version"),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user