Skip to content

Version n20260805

Latest

Choose a tag to compare

@vthorsteinsson vthorsteinsson released this 05 Aug 18:33
· 78 commits to master since this release
7d32fa6

Ratings process rewrite, security upgrades, backend parity

Deployed to GAE as version n20260805.

/stats/ratings rewrite (#149)

The nightly top-100 ratings computation no longer scans the entire StatsModel history (3.5M entities, ~11 minutes) with false positives that could truncate the lists:

  • Exact current tables from indexed UserModel Elo fields plus parallel newest-snapshot lookups (StatsModel.newest_before_multi) — false positives are structurally impossible
  • Daily archives — each night's tables stored as JSON in the new RatingArchiveModel kind (PG: rating_archive); yesterday/week/month deltas become keyed lookups, no new composite indexes
  • /stats/ratings_backfill — self-chaining Cloud Tasks endpoint that fills historical archives one date per task, idempotent, pinned to the executing service/version so it can run on a not-yet-promoted deployment
  • ~30–50× faster overall (measured ~15× on explo-dev; netskrafl runs should drop from 11 min to well under 30 s)
  • NDB/PG parity fixes: kind-specific fields in PG _list_by_elo, robot stats in PG newest_before, module-level put_multi in the stats job, manual memcache invalidation
  • 24 new backend-parity tests

Dependency security upgrades

Flask, Authlib and requests upgraded, resolving 18 security advisories.

NDB↔PostgreSQL backend parity (#148)

Strengthened parity between the NDB and PostgreSQL backends with expanded tests, plus a duplicate-email diagnostic utility.

Operations

  • explo-live scaling optimized; basic-scaling comment fixed in app-netskrafl.yaml
  • Deploy skill with gradual (canary) traffic rollout and log monitoring