fix(reliability): 投递语义是"取走即确认"——崩溃/队列溢出/重试耗尽都静默丢用户消息,且无去重
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 18/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- rust
- Ambito
- backend, distributed-systems
Direzione di ricerca
Start at src/bridge/mod.rs:96-129 to see the fetch-then-dispatch path that has no persistence or ack, then read src/bridge/dispatcher/session.rs:217-220 and send.rs:225-238 for the silent drop and the abandoned final reply. The Hub side at ilink-hub/src/server/routes/bot.rs:330-340 shows why drain is destructive, and telegram.rs:421-444 shows the in-memory offset. Done means an outbound WAL with dedup plus a persisted Telegram offset, covered by tests that kill the process mid-flight.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
场景 gap 单(okguitar 提报)· 优先级 P1 · 依赖:无
基线 HEAD = 53bc5cd。
Summary
- Hub 侧
ilink-hub/src/server/routes/bot.rs:330-340queue.drain(&vtoken)是破坏性读取(游标get_updates_buf恒空串);取走后响应丢失=消息永久消失。 - 本仓
src/bridge/mod.rs:96-129:取回后直接 dispatch,无持久化/无 ack;src/bridge/dispatcher/session.rs:217-220:队列满try_send失败只 warn 丢弃;src/bridge/dispatcher/send.rs:225-238:重试预算耗尽"final reply abandoned"后return Ok(())(正文已丢但流程当成功)。 - 无去重:全仓无 message id/指纹;Telegram offset 只存内存(telegram.rs:421-444),重启回 0 会重放未确认批次 → 重复回答。
影响
C 端语义"每条用户消息必有且仅有一次应答"不成立:iLink 最坏 at-most-once(丢消息,用户永远等不到回复);Telegram 最坏 at-least-once(重复跑昂贵 CLI)。中间崩溃点全部无补偿。
建议
本仓落轻量 WAL/出站队列(收到即写、回复成功才删、启动补投对账),或推动 Hub 改"回复成功再 ack"的显式确认协议;Telegram offset 持久化 + 去重。
- Lingua principale
- Rust
- Stelle
- 0
- Fork
- 0
- Merge medio
- 11m
- PR unite (30g)
- 7
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 jeffkit/im-agentproc
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 64/100
jeffkit/im-agentproc#18 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 40/100
jeffkit/im-agentproc#7 · 8 commenti ·
Tutte le issue di jeffkit/im-agentproc
Issue simili
-
Expose the dot grid colourAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
nannou-org/egui_graph#92 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
sujithputta02/Esapay#13 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
tursodatabase/turso#10002 ·
I maintainer di solito rispondono entro 1 giorno
-
needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
topgrade-rs/topgrade#2419 ·
I maintainer di solito rispondono entro 1 giorno
-
review-bot
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
midagedev/bloomery#318 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno