0xMiden / 0xMiden/note-transport-service

Legacy-cursor reset never converges (rcursor computed from original cursor)

Ouverte
#130 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
bug production-readiness
Langage dominant
Rust
Étoiles
3
Forks
10
Merge moyen
2 h 23 min
PR mergées (30 j)
4

Description

Severity: high (correctness bug).

### Summary

The DB layer treats a cursor > 10^12 (pre-`seq` microsecond timestamps) as 0 (`crates/node/src/database/sqlite/mod.rs:160-166`), but the gRPC handler computes the response cursor from the **original** request cursor: `let mut rcursor = cursor;` then `max` with the returned seqs (`crates/node/src/node/grpc/mod.rs:261`).

### Impact

A client sending a legacy cursor (~1.7e15) gets the oldest 500 notes plus `rcursor ≈ 1.7e15`; its next fetch sends the same cursor, gets the same 500 notes again — forever. It never advances past the first batch and permanently re-downloads duplicates.

### Recommendation

Perform the legacy reset in the handler (or return the effective cursor from the DB layer) so `rcursor = max(effective_cursor, max_seq)`.

Related: #101.

---
Part of #114.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Le bogue se trouve dans crates/node/src/database/sqlite/mod.rs lignes 160-166 où les curseurs hérités sont réinitialisés, et dans crates/node/src/node/grpc/mod.rs ligne 261 où le curseur de réponse est calculé. Commencez par lire la gestion des curseurs de la couche base de données et la logique du gestionnaire gRPC. Vérifiez la correction en vous assurant que le curseur effectif (après toute réinitialisation) est utilisé pour la réponse. Exécutez tous les tests existants liés à la pagination par curseur pour confirmer que la correction fonctionne.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Domaine
backend, databases
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Clairement spécifiée
Accessibilité débutants
65/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.