Skip to content

Commit 74732a0

Browse files
author
Dennis Braun
committed
Hotfix: reliable speedtest cache population
2 parents 7f41e4d + 2c8fcce commit 74732a0

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

app/main.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,15 @@ def polling_loop(config_mgr, storage, stop_event):
126126
# Delta fetch: cache new results in storage
127127
try:
128128
last_id = storage.get_latest_speedtest_id()
129-
if last_id == 0:
129+
cached_count = storage.get_speedtest_count()
130+
if cached_count < 50:
131+
# Initial or incomplete cache: full fetch (descending)
130132
new_results = stt_client.get_results(per_page=2000)
131133
else:
132134
new_results = stt_client.get_newer_than(last_id)
133135
if new_results:
134136
storage.save_speedtest_results(new_results)
135-
log.info("Cached %d new speedtest results", len(new_results))
137+
log.info("Cached %d new speedtest results (total: %d)", len(new_results), cached_count + len(new_results))
136138
except Exception as e:
137139
log.warning("Speedtest delta cache failed: %s", e)
138140

app/storage.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,12 @@ def get_speedtest_results(self, limit=2000):
248248
).fetchall()
249249
return [dict(r) for r in rows]
250250

251+
def get_speedtest_count(self):
252+
"""Return number of cached speedtest results."""
253+
with sqlite3.connect(self.db_path) as conn:
254+
row = conn.execute("SELECT COUNT(*) FROM speedtest_results").fetchone()
255+
return row[0] if row else 0
256+
251257
def get_latest_speedtest_id(self):
252258
"""Return the highest speedtest result id, or 0 if none."""
253259
with sqlite3.connect(self.db_path) as conn:

app/web.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -600,11 +600,12 @@ def api_speedtest():
600600
_config_manager.get("speedtest_tracker_url"),
601601
_config_manager.get("speedtest_tracker_token"),
602602
)
603-
last_id = _storage.get_latest_speedtest_id()
604-
if last_id == 0:
605-
# First fetch: get newest results directly (descending)
606-
new_results = client.get_results(per_page=count)
603+
cached_count = _storage.get_speedtest_count()
604+
if cached_count < 50:
605+
# Initial or incomplete cache: full fetch (descending)
606+
new_results = client.get_results(per_page=2000)
607607
else:
608+
last_id = _storage.get_latest_speedtest_id()
608609
new_results = client.get_newer_than(last_id)
609610
if new_results:
610611
_storage.save_speedtest_results(new_results)

0 commit comments

Comments
 (0)