aw-sync: rowid cursor misses heartbeat extensions to trailing open event
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 65/100
Direzione di ricerca
Start by reading the rowid fast-path around get_events_since_rowid and how reconcile_updated_events uses resume_sync_at. Then trace where the highest-rowid trailing event can be re-synced; done means heartbeat extensions to that event are included in the destination without losing the rowid cursor's handling of late-arriving events.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The rowid-cursor sync introduced in #789 doesn't re-fetch events whose endtime was extended by a heartbeat after the event's rowid was synced.
Scenario:
- Event A (rowid 100, T1–T2) is synced → cursor saved at 100
- A heartbeat extends event A's
endtimeto T2+30 (rowid still 100) - Next sync:
get_events_since_rowid(100)returns only rowid > 100 → misses the T2→T2+30 extension reconcile_updated_eventshandles the lookback window up toresume_sync_atbut not extensions beyond that boundary
Impact
Bounded: only the trailing open event at sync time loses the heartbeat extension in the destination. The impact resolves on the next natural event transition (when a new event starts and the old one closes).
Tradeoff
This is a known tradeoff vs. the old timestamp-scan path:
- Rowid cursor: correct for late-arriving events (the core #696 fix), but misses
endtime-only updates - Timestamp scan: re-fetches events in the time window, catching heartbeat extensions, but permanently loses late-arriving events (#696)
Proposed fix
After the rowid fast-path, re-sync the highest-rowid event from source (the "trailing event") to capture any heartbeat extension since the previous cursor save. This is a small fixed-cost read per bucket per sync pass.
Related
- Fixes #696 (rowid cursor) — #789
- Greptile P1 finding "Continued activity stops growing" on #789
- Lingua principale
- Rust
- Stelle
- 317
- Fork
- 100
- Merge medio
- 3g 6h
- PR unite (30g)
- 77
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ActivityWatch/aw-server-rust
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
ActivityWatch/aw-server-rust#798 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
aw-sync: rowid upgrade bootstrap does not recover backfills lost under the old timestamp cursorAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
ActivityWatch/aw-server-rust#793 ·
I maintainer di solito rispondono entro 3 giorni
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
ActivityWatch/aw-server-rust#717 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
aw-sync: no stored cursor — resume-from-destination silently never syncs late-arriving eventsForse già presa @TimeToBuildBob l’ha presa 13 giorni fa. Apertabug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
ActivityWatch/aw-server-rust#696 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
Imported (-synced-from-) buckets are writable and unmarked; local writes to them are silently lostApertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
ActivityWatch/aw-server-rust#694 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di ActivityWatch/aw-server-rust
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
swc-project/swc#12576 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue gpu serve
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
biomejs/biome#12475 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
I maintainer di solito rispondono entro 1 giorno