Debug DB problem
This commit is contained in:
+4
-1
@@ -248,10 +248,13 @@ class JsonlStore:
|
||||
# Check for out-of-transaction modifications
|
||||
current_state = msgspec.to_builtins(self.db)
|
||||
if current_state != self._previous_builtins:
|
||||
diff = compute_diff(self._previous_builtins, current_state)
|
||||
diff_json = json.dumps(diff, default=str, indent=2)
|
||||
_logger.error(
|
||||
"Database state modified outside of transaction! "
|
||||
"This indicates a bug where DB changes occurred without a transaction wrapper. "
|
||||
"Resetting to last known state from JSONL file."
|
||||
"Resetting to last known state from JSONL file.\n"
|
||||
f"Changes detected:\n{diff_json}"
|
||||
)
|
||||
# Hard reset to last known good state
|
||||
decoder = msgspec.json.Decoder(DB)
|
||||
|
||||
@@ -31,4 +31,20 @@ def apply_migrations(data_dict: dict) -> bool:
|
||||
migrated = True
|
||||
_logger.info("Applied schema migration: v0 -> v1 (removed org.created_at)")
|
||||
|
||||
if db_version < 2:
|
||||
# Migration v1 -> v2: Convert null ip/user_agent to empty strings in sessions
|
||||
if "sessions" in data_dict:
|
||||
for session_data in data_dict["sessions"].values():
|
||||
if session_data.get("ip") is None:
|
||||
session_data["ip"] = ""
|
||||
if session_data.get("user_agent") is None:
|
||||
session_data["user_agent"] = ""
|
||||
if session_data.get("host") is None:
|
||||
session_data["host"] = ""
|
||||
data_dict["v"] = 2
|
||||
migrated = True
|
||||
_logger.info(
|
||||
"Applied schema migration: v1 -> v2 (null session fields -> empty strings)"
|
||||
)
|
||||
|
||||
return migrated
|
||||
|
||||
Reference in New Issue
Block a user