Skip to content

Release: develop -> main#3963

Merged
TaprootFreak merged 2 commits into
mainfrom
develop
Jun 24, 2026
Merged

Release: develop -> main#3963
TaprootFreak merged 2 commits into
mainfrom
develop

Conversation

@github-actions

Copy link
Copy Markdown

Automatic Release PR

This PR was automatically created after changes were pushed to develop.

Commits: 1 new commit(s)

Checklist

  • Review all changes
  • Verify CI passes
  • Approve and merge when ready for production

* fix(payin): skip pay-in polling while the node is warming up

The Firo/Bitcoin pay-in scanners run every second (@DfxCron EVERY_SECOND). When
their node container restarts (e.g. after a deploy), it returns JSON-RPC code -28
(RPC_IN_WARMUP) for ~1 min while loading the block index / verifying blocks /
loading the wallet. PollingStrategy.checkPayInEntries had no try/catch, so every
tick during that window threw and was logged as an ERROR by the cron lock wrapper
(LockClass) — dozens of spurious "getblockcount failed: Verifying blocks..." per
restart, the single largest error bucket on dfxprd.

A node briefly warming up is a transient, expected state, not an error. The Bitcoin
RPC client now raises a typed NodeNotReadyError on code -28 (co-located with the
existing -5 handling), and PollingStrategy catches it to skip the cycle and warn
once until the node recovers. Genuine failures (other RPC codes, connection errors)
still propagate.

To avoid hiding a node that is genuinely stuck in warmup (e.g. reindex / wedged
verify), if warmup persists past 10 min — far beyond a normal restart — it escalates
to an ERROR so the stalled pay-in scanning still surfaces.

No change to pay-in processing: blockHeight only advances after a successful cycle,
so skipped ticks cannot miss or double-process pay-ins.

* fix(payin): catch node warmup around processNewPayInEntries too

Move the full check-cycle inside the try so a -28 raised by
processNewPayInEntries (node restarting mid-cycle, after getBlockHeight
already succeeded) is also treated as transient instead of logged as ERROR.
@TaprootFreak TaprootFreak merged commit e26d1a9 into main Jun 24, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants