multi: use bitcoind uptime api for healthcheck #4755
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously we were using
GetBestBlock
for all of our healthchecks. This was running into some issues withbitcoind
, because theGetBestBlock
rpc call uses the csmain lock, which is widely used, and would block for extended periods of time (5 minutes sometimes!).btcd
has more granular locking, so it does not face these issues.This PR updates our chain backend health check to use the
uptime
api because it has no locking. Another option would be to use something likeestimatesmartfee
which uses a less common lock inbitcoind
and does not need us to make an ad-hocrpcclient
. Decided against this becauseestimatesmartfee
could crunch through mempool data unnecessarily.Fixes #4669.