fix(rescan): stop the per-second getmininginfo error flood during rescan

While the daemon processes -rescan it sits in RPC warmup and rejects every call
with -28 ("Rescanning..."). The balance/tx/address refreshes already skip warmup
(state_.warming_up), but the 1-second mining poll didn't — so getmininginfo fired
the whole rescan and flooded the log with "getMiningInfo error: Rescanning..."
(~680 entries in one capture).

Gate refreshMiningInfo() on !state_.warming_up like the other refreshes. The
getrescaninfo progress poll still runs (it's how the warmup/rescan is tracked).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-12 18:47:01 -05:00
parent 25fef8ff4d
commit b9b2d469d4

View File

@@ -586,7 +586,12 @@ void App::update()
// would delay the PIN unlock worker task. // would delay the PIN unlock worker task.
if (network_refresh_.consumeDue(RefreshTimer::Fast)) { if (network_refresh_.consumeDue(RefreshTimer::Fast)) {
if (rpcConnected && !state_.isLocked()) { if (rpcConnected && !state_.isLocked()) {
refreshMiningInfo(); // Skip the mining poll while the daemon is in warmup (e.g. during -rescan). Otherwise
// getmininginfo is rejected with -28 ("Rescanning...") every second and floods the log.
// The rescan progress poll below still runs — that's how we track the warmup/rescan.
if (!state_.warming_up) {
refreshMiningInfo();
}
// Poll getrescaninfo for rescan progress (if rescan flag is set) // Poll getrescaninfo for rescan progress (if rescan flag is set)
// Use fast_rpc_ when available to avoid blocking on rpc_'s // Use fast_rpc_ when available to avoid blocking on rpc_'s