search for standard sites pub-search.waow.tech
search zig blog atproto
11
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: persist timing on every request

removed interval batching - just persist immediately.
simpler code, no data loss between deploys.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

zzstoatzz 123c3c3a bf476017

+3 -9
+3 -9
backend/src/timing.zig
··· 16 16 const ENDPOINT_COUNT = @typeInfo(Endpoint).@"enum".fields.len; 17 17 const PERSIST_PATH = "/data/timing.bin"; 18 18 const PERSIST_PATH_HOURLY = "/data/timing_hourly.bin"; 19 - const PERSIST_INTERVAL = 100; // save every N records 20 19 const HOURS_TO_KEEP = 24; 21 20 22 21 /// per-endpoint latency buffer ··· 76 75 var buffers: [ENDPOINT_COUNT]LatencyBuffer = [_]LatencyBuffer{.{}} ** ENDPOINT_COUNT; 77 76 var hourly: [ENDPOINT_COUNT][HOURS_TO_KEEP]HourlyBucket = [_][HOURS_TO_KEEP]HourlyBucket{[_]HourlyBucket{.{}} ** HOURS_TO_KEEP} ** ENDPOINT_COUNT; 78 77 var mutex: std.Thread.Mutex = .{}; 79 - var records_since_persist: u32 = 0; 80 78 var initialized: bool = false; 81 79 82 80 fn getCurrentHour() i64 { ··· 109 107 buffers[ep_idx].record(elapsed_us); 110 108 hourly[ep_idx][hour_idx].record(current_hour, elapsed_us); 111 109 112 - // persist periodically 113 - records_since_persist += 1; 114 - if (records_since_persist >= PERSIST_INTERVAL) { 115 - records_since_persist = 0; 116 - persistLocked(); 117 - persistHourlyLocked(); 118 - } 110 + // persist immediately 111 + persistLocked(); 112 + persistHourlyLocked(); 119 113 } 120 114 121 115 fn loadLocked() void {