feat: DB-first architecture with lock-safe writes
- price_monitor: writes live prices to both JSON and mofin.db (holdings + live_prices + portfolio_summary) - mofin_db: added execute_with_retry/commit_with_retry with exponential backoff on 'database is locked' - mofin_db: increased timeout 5s->15s, added PRAGMA busy_timeout=15000 - price_monitor retry loop: fixed break-before-if-ok bug (was not retrying on write failure) - DB connection: WAL mode + retry decorator for all write operations - cash sync: preserves DB authoritative cash (JSON cash not pushed to DB) This is the DB-first version. JSON writes remain for dashboard compatibility. Next step: remove JSON writes entirely for full DB-only architecture.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
"""Verify self_todo_executor works with real DB"""
|
||||
import subprocess
|
||||
script = '/home/hmo/.hermes/profiles/position-analyst/scripts/self_todo_executor.py'
|
||||
|
||||
# Test 1: DB_PATH
|
||||
content = open(script).read()
|
||||
if 'web-dashboard/data/mofin.db' in content:
|
||||
print("DB_PATH: OK")
|
||||
else:
|
||||
print("DB_PATH: WRONG")
|
||||
exit(1)
|
||||
|
||||
# Test 2: script can import and run
|
||||
try:
|
||||
import importlib.util
|
||||
spec = importlib.util.spec_from_file_location("executor", script)
|
||||
mod = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(mod)
|
||||
print("Import: OK")
|
||||
except Exception as e:
|
||||
print(f"Import: FAIL -> {e}")
|
||||
exit(1)
|
||||
|
||||
# Test 3: get_pending works
|
||||
try:
|
||||
rows = mod.get_pending()
|
||||
print(f"get_pending: OK ({len(rows)} pending)")
|
||||
except Exception as e:
|
||||
print(f"get_pending: FAIL -> {e}")
|
||||
exit(1)
|
||||
|
||||
print("\nAll checks passed.")
|
||||
Reference in New Issue
Block a user