Closing a YieldVault can leave a stale scheduled AutoBalancer tx that later fails with Invalid transaction handler
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 55/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- blockchain
- Área
- blockchain
Línea de trabajo
Start at FlowYieldVaultsStrategiesV2.burnCallback() and FlowYieldVaultsAutoBalancers._cleanupAutoBalancer(), then trace DeFiActions.AutoBalancer.cancelScheduledTransaction and the FlowYieldVaultsSchedulerRegistry.unregister() path. Done means pending AutoBalancer schedules are canceled before the handler and capabilities are removed, so the stale transaction from the reported sequence cannot later fail in FlowTransactionScheduler.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Closing a YieldVault can leave behind an already-scheduled DeFiActions.AutoBalancer transaction. When that stale scheduled tx later executes, FlowTransactionScheduler fails with:
Invalid transaction handler: Could not borrow a reference to the transaction handler
This happened on mainnet for YieldVault 338.
On-chain sequence
-
2026-03-26 15:59:29 UTC
Txcebd06599a069af88b3ceb909b4fdadaa32d366cd4c7b72c48c9aca841ecb8b3- FYVEVM worker created YieldVault
338 - same tx emitted
DeFiActions.CreatedAutoBalancerwithuuid = 13194142095838,uniqueID = 338 - same tx emitted
FlowTransactionScheduler.Scheduledwith:id = 156720transactionHandlerTypeIdentifier = A.6d888f175c158410.DeFiActions.AutoBalancertransactionHandlerUUID = 13194142095838timestamp = 2026-03-26 16:09:29 UTC
- FYVEVM worker created YieldVault
-
2026-03-26 16:02:28 UTC
Txccd2722170525c1bd7ece82dc50b71f899ea7e85324e8d2e78c482c64ab35087- FYVEVM scheduler picked up close request
97for YieldVault338 - scheduled worker tx
156723
- FYVEVM scheduler picked up close request
-
2026-03-26 16:02:29 UTC
Tx53d2d8169a77851b1a729e19cd2e39642e1ed20519cd14c07ac4eff307f24b71- FYVEVM worker closed YieldVault
338successfully
- FYVEVM worker closed YieldVault
-
2026-03-26 16:09:29 UTC
Tx2a6a879ca2049edca43dc7392fbe5f3420550366452117a41e90686335eece3e- generic scheduler wrapper attempted to execute scheduled tx
156720 - failed with
Invalid transaction handler: Could not borrow a reference to the transaction handler
- generic scheduler wrapper attempted to execute scheduled tx
Why this looks like a FlowYieldVaults cleanup bug
The scheduled tx 156720 is clearly the AutoBalancer tx created for YieldVault 338. But vault 338 was already closed about 7 minutes earlier, so when 156720 fired, its handler no longer existed.
From the deployed mainnet contracts:
FlowYieldVaultsStrategiesV2.burnCallback()callsFlowYieldVaultsAutoBalancers._cleanupAutoBalancer(id: self.id()!)_cleanupAutoBalancer()unregisters the vault, deletes capability controllers, and burns the AutoBalancerFlowYieldVaultsSchedulerRegistry.unregister()removes registry/capability mappings but does not cancel already-scheduled transactionsDeFiActions.AutoBalancerdoes havecancelScheduledTransaction, butAutoBalancer.burnCallback()does not cancel outstanding scheduled txs
So the close path appears to remove the AutoBalancer handler without first canceling its already-scheduled rebalance txs.
Expected behavior
When a YieldVault is closed, any pending AutoBalancer scheduled transactions for that vault should be canceled before the AutoBalancer handler/capabilities are removed.
Actual behavior
The AutoBalancer handler is cleaned up, but the already-scheduled transaction remains in FlowTransactionScheduler and later fails at execution time.
Additional note
The docs currently state that closing a YieldVault cancels pending schedules, but the observed mainnet behavior above shows that at least this path still leaves a stale scheduled tx behind.
- Lenguaje dominante
- Cadence
- Estrellas
- 41
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la 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 onflow/FlowYieldVaults
-
Clarify contract version namingAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
onflow/FlowYieldVaults#274 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
onflow/FlowYieldVaults#273 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
onflow/FlowYieldVaults#272 ·
-
Remove outdated documentationAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
onflow/FlowYieldVaults#271 ·
-
Move all test files into `./cadence/tests`Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
onflow/FlowYieldVaults#270 ·
Todos los issues de onflow/FlowYieldVaults
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ChainSafe/lodestar#10322 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
approved bug core skill: beginner
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
hiero-hackers/hiero-enterprise-js#289 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Sorogate/example-consumer#17 ·