fix(icp-rosetta): [FI-1694] add watchdog thread to oversee the sync thread #4317
+427
−53
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.
This PR introduces an implementation of a watchdog thread that monitors heartbeats from a monitored thread and restarts it when there's no heartbeat during a specified timeout interval.
The watchdog class is used to monitor the background synchronization thread in ICP Rosetta, so any potential deadlock is eventually mitigated within 10 seconds.
The watchdog implementation will later be used for ICRC1 Rosetta as well.
Tests:
Besides unit tests for the watchdog thread itself, I've manually tested this by introducing random delays in the sync thread (not being committed here) and observed the successful restarts.