Multiwallet gets permanently stuck in loop on bad requests #1520
Description
If the multiwallet Blockbook client attempts a call that can never succeed it get stuck in a disconnect/reconnect loop until the retry limit is exhausted. If the request is called periodically, e.g. by processBlock
, the client will always be stuck in this cycle. A restart only fixes it until the request is called again, e.g. when a block is announced.
This causes that coin to be completely unusable for that node, permanently.
Specific example from a node:
A bug caused the wallet to attempt to look for a non-existing transaction. Blockbook returns a 400 error and the client goes through the failure handling connection cycling process. As soon as a reconnect happens it retries the request, resulting a loop of disconnects/reconnects until the loop guard limit is reached. Additionally the lookup is triggered every block so it continues to be stuck in this loop forever.