Fix DB table/column mismatch and stale PID noise on startup
build_data.py created 'profiles' but mac_manager queries 'mac_profiles'. Columns category/model renamed to device_type/device_name. device_type values aligned with _CATEGORY_MAP in mac_manager (streaming, smart_tv, phone, tablet, smart_speaker, iot, printer, gaming). ja3_fingerprints.db table renamed from 'fingerprints' to 'ja3_profiles' and expanded with all columns ja3_spoofer queries (name, description, cipher_suites, extensions, elliptic_curves, ec_point_formats as JSON). StateManager.reset_module_status() clears stale 'running' entries on startup so watchdog doesn't flag old-session PIDs as dead modules. Engine.start_all() calls reset before launch and does a 3s post-startup liveness check, logging any modules that crashed immediately after fork.
This commit is contained in:
@@ -232,6 +232,28 @@ class StateManager:
|
||||
for r in rows
|
||||
}
|
||||
|
||||
def reset_module_status(self) -> None:
|
||||
"""Mark all running modules as stopped.
|
||||
|
||||
Called at engine startup to clear stale PIDs from a previous run.
|
||||
Without this, the watchdog picks up old PIDs and reports dead modules
|
||||
that were never started in the current session.
|
||||
"""
|
||||
conn = self._get_write_conn()
|
||||
try:
|
||||
conn.execute("BEGIN IMMEDIATE")
|
||||
conn.execute(
|
||||
"UPDATE module_status SET status='stopped', pid=NULL, updated=? "
|
||||
"WHERE status='running'",
|
||||
(time.time(),),
|
||||
)
|
||||
conn.commit()
|
||||
except Exception:
|
||||
try:
|
||||
conn.rollback()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Write queue
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user