Fix a bug where solar conditions and status data were not properly persisted to disk between restarts. Release v2.0.5

This commit is contained in:
Ian Renton
2026-08-29 09:17:24 +01:00
parent 8451ca2727
commit ba56acd7ac
18 changed files with 89 additions and 56 deletions
+16 -14
View File
@@ -25,8 +25,9 @@ class StatusReporter:
self._stop_event = Event()
self._startup_time = datetime.now(pytz.UTC)
DATA_STORE.status_data["software_version"] = SOFTWARE_VERSION
DATA_STORE.status_data["server_owner_callsign"] = SERVER_OWNER_CALLSIGN
DATA_STORE.status.get()["software_version"] = SOFTWARE_VERSION
DATA_STORE.status.get()["server_owner_callsign"] = SERVER_OWNER_CALLSIGN
DATA_STORE.status.store()
def start(self):
"""Start the reporter thread"""
@@ -50,11 +51,11 @@ class StatusReporter:
def _report(self):
"""Write status information"""
DATA_STORE.status_data["uptime"] = (datetime.now(pytz.UTC) - self._startup_time).total_seconds()
DATA_STORE.status_data["mem_use_mb"] = round(psutil.Process(os.getpid()).memory_info().rss / (1024 * 1024), 3)
DATA_STORE.status_data["num_spots"] = len(DATA_STORE.spots.values())
DATA_STORE.status_data["num_alerts"] = len(DATA_STORE.alerts.values())
DATA_STORE.status_data["spot_providers"] = [
DATA_STORE.status.get()["uptime"] = (datetime.now(pytz.UTC) - self._startup_time).total_seconds()
DATA_STORE.status.get()["mem_use_mb"] = round(psutil.Process(os.getpid()).memory_info().rss / (1024 * 1024), 3)
DATA_STORE.status.get()["num_spots"] = len(DATA_STORE.spots.values())
DATA_STORE.status.get()["num_alerts"] = len(DATA_STORE.alerts.values())
DATA_STORE.status.get()["spot_providers"] = [
{
"name": p.name,
"enabled": p.enabled,
@@ -69,7 +70,7 @@ class StatusReporter:
}
for p in DATA_PROVIDERS.spot_providers
]
DATA_STORE.status_data["alert_providers"] = [
DATA_STORE.status.get()["alert_providers"] = [
{
"name": p.name,
"enabled": p.enabled,
@@ -80,7 +81,7 @@ class StatusReporter:
}
for p in DATA_PROVIDERS.alert_providers
]
DATA_STORE.status_data["solar_condition_providers"] = [
DATA_STORE.status.get()["solar_condition_providers"] = [
{
"name": p.name,
"enabled": p.enabled,
@@ -91,7 +92,7 @@ class StatusReporter:
}
for p in DATA_PROVIDERS.solar_condition_providers
]
DATA_STORE.status_data["static_data_providers"] = [
DATA_STORE.status.get()["static_data_providers"] = [
{
"name": p.name,
"enabled": p.enabled,
@@ -102,7 +103,7 @@ class StatusReporter:
}
for p in DATA_PROVIDERS.static_data_providers
]
DATA_STORE.status_data["sig_ref_data_providers"] = [
DATA_STORE.status.get()["sig_ref_data_providers"] = [
{
"sig_name": p.sig_name,
"enabled": p.enabled,
@@ -114,7 +115,7 @@ class StatusReporter:
}
for p in DATA_PROVIDERS.sig_ref_data_providers
]
DATA_STORE.status_data["callsign_data_providers"] = [
DATA_STORE.status.get()["callsign_data_providers"] = [
{
"name": p.name,
"enabled": p.enabled,
@@ -126,13 +127,13 @@ class StatusReporter:
}
for p in DATA_PROVIDERS.callsign_data_providers
]
DATA_STORE.status_data["cleanup"] = {
DATA_STORE.status.get()["cleanup"] = {
"status": CLEANUP_TIMER.status,
"last_ran": CLEANUP_TIMER.last_cleanup_time.replace(tzinfo=pytz.UTC).timestamp()
if CLEANUP_TIMER.last_cleanup_time
else 0,
}
DATA_STORE.status_data["webserver"] = {
DATA_STORE.status.get()["webserver"] = {
"status": WEB_SERVER.web_server_metrics["status"],
"last_api_access": WEB_SERVER.web_server_metrics["last_api_access_time"]
.replace(tzinfo=pytz.UTC)
@@ -147,6 +148,7 @@ class StatusReporter:
else 0,
"page_access_count": WEB_SERVER.web_server_metrics["page_access_counter"],
}
DATA_STORE.status.store()
# Update Prometheus metrics
memory_use_gauge.set(psutil.Process(os.getpid()).memory_info().rss)