input-output-hk / input-output-hk/dbsync
Restarts causes `FollowingVolatileTail` to sync a ~1blk/s
- Dominant language
- Haskell
- Stars
- 5
- Forks
- 0
- Avg merge
- 26m
- Merged PRs (30d)
- 1
Description
Investigate why after restarting dbsync `FollowingVolatileTail` inserts speeds are very slow.
This is not the case when syncing from genesis where it will sync 2100 (rollback boundary) blocks in a mater of seconds.
```
[2026-08-13 13:15:40.291 UTC] [Info] ChainSync: Intersected at Point (At (Block {blockPointSlot = SlotNo 195004781, blockPointHash = 786868fc343bc5d196e8cb03ead374365e368ce90d536d015772eb1d6788a7cb})) (server tip Tip (SlotNo 195060606) 50560c140505d3770d8a6dc96b1c57d1aa62065e17a3831a52fb8fbc6653f4d4 (BlockNo 13803600))
[2026-08-13 13:15:40.294 UTC] [Info] ChainSync: First post-intersect block at slot SlotNo 195004880, block BlockNo 13800908
[2026-08-13 13:15:40.294 UTC] [Info] ChainSync: First post-intersect block at slot SlotNo 195004904, block BlockNo 13800909
[2026-08-13 13:15:40.294 UTC] [Info] ChainSync: First post-intersect block at slot SlotNo 195004963, block BlockNo 13800910
[2026-08-13 13:15:45.250 UTC] [Info] LedgerReplay: replay complete; applied 2,267 blocks in 0.97s, resuming Follow PG writes at slot 195051800
[2026-08-13 13:17:06.065 UTC] [Info] FollowingVolatileTail: slot 195054235, epoch 649 | 100 blk in 1m 25s (1.18 blk/s) | queue=300
[2026-08-13 13:18:28.027 UTC] [Info] FollowingVolatileTail: slot 195056380, epoch 649 | 100 blk in 1m 22s (1.22 blk/s) | queue=231
[2026-08-13 13:19:53.084 UTC] [Info] FollowingVolatileTail: slot 195058322, epoch 649 | 100 blk in 1m 25s (1.18 blk/s) | queue=138
[2026-08-13 13:20:40.370 UTC] [Info] OffChainPoolWorker: processing 7 ref(s)
[2026-08-13 13:20:40.384 UTC] [Info] OffChainVoteWorker: processing 100 ref(s)
[2026-08-13 13:21:15.869 UTC] [Info] FollowingVolatileTail: slot 195060131, epoch 649 | 100 blk in 1m 23s (1.21 blk/s) | queue=40
[2026-08-13 13:21:47.721 UTC] [Info] Phase: FollowingVolatileTail -> FollowingChainTip
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing the restart path through FollowingVolatileTail and the LedgerReplay transition, using the supplied logs to compare it with syncing from genesis. Check where Follow PG writes and the queue are handled, then reproduce the restart case and verify that FollowingVolatileTail no longer processes only about 1 block per second before reaching FollowingChainTip.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell, postgresql
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 45/100