staticaddr/deposit: separate generic OnError from caller-held rollback events
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Empieza rastreando updateDeposit, lockedEvents y TransitionDeposits, y después inspecciona las acciones de la FSM de depósitos PublishDepositExpirySweepAction y WaitForExpirySweepAction. Separa el evento de rollback retenido por el llamador de fsm.OnError genérico, para que los errores generados internamente adquieran el bloqueo del depósito, mientras que el rollback impulsado por el manager evite un doble bloqueo. La tarea estará terminada cuando ambas rutas conserven el estado previsto y las actualizaciones del store sin depender de una suposición incorrecta sobre el bloqueo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
The static-address deposit FSM currently treats fsm.OnError as if it always arrives while the caller already holds the deposit lock.
That assumption is not reliable. Some fsm.OnError transitions do come from TransitionDeposits, where the manager locks deposits before sending the event. But deposit FSM actions can also emit fsm.OnError internally. Examples include:
PublishDepositExpirySweepActionreturningfsm.OnErrorafter expiry sweep publish failures;WaitForExpirySweepActionreturningfsm.OnErrorafter notifier or context errors.
Those internal paths originate from the deposit FSM's own block handling, so no external deposit lock is held.
Because fsm.OnError is in lockedEvents, updateDeposit can skip acquiring the deposit lock, call no-lock state mutation helpers, and update the store under an assumption that is false for internally generated errors.
This was discussed during PR #1161: https://github.com/lightninglabs/loop/pull/1161#discussion_r3539803146
The issue appears to predate PR #1161, but that PR touched the surrounding deposit locking/lifecycle code and made the invariant visible.
Potential fix
Do not use the generic fsm.OnError event to also mean "caller-held rollback/unlock to Deposited".
One possible shape:
- introduce a deposit-specific rollback event, for example
OnReleaseDepositorOnDepositRollback; - use that event from manager-driven
TransitionDepositscallers that already hold deposit locks and need to move selected deposits back toDeposited; - include that specific rollback event in
lockedEvents; - remove generic
fsm.OnErrorfromlockedEvents, so internally generated errors acquire the deposit lock insideupdateDeposit; - keep
fsm.OnErroras the generic action-error transition in the deposit FSM, not as an implicit lock-state signal.
That separates event meaning from caller locking context: events sent by TransitionDeposits can still avoid double-locking, while internally generated fsm.OnError paths no longer run no-lock state/store updates without a held deposit lock.
- Lenguaje dominante
- Go
- Estrellas
- 593
- Forks
- 137
- Merge medio
- 4 d 18 h
- PR fusionados (30 d)
- 20
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de lightninglabs/loop
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
lightninglabs/loop#1246 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 50/100
lightninglabs/loop#1208 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
lightninglabs/loop#1196 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 42/100
lightninglabs/loop#1172 ·
Los mantenedores suelen responder en 2 días
-
Track armed static address HTLCs after aborted swapsQuizá libre de nuevo @hieblmi la tomó hace 113 días y no hay ningún pull request abierto. Abierto
lightninglabs/loop#1171 · 1 asignado ·
Los mantenedores suelen responder en 2 días
Todos los issues de lightninglabs/loop
Issues similares
-
ux
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
evcc-io/evcc#35605 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug report
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
type:bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
nightgauge/nightgauge#2732 ·
Los mantenedores suelen responder en 1 día
-
fix below CVEsAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 5 días
-
good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100