Restart/Resume Testing
Summary
There is an edge case when Indexer gets shutdown where it's possible for blocks/transactions committed to the database but the accounts not updated. We should write some tests to make sure this resume scenario is properly tested.
Scope/Requirements
For an integration test we could setup indexer and algod with algod receiving a steady stream of transactions, then restart Indexer repeatedly. After some amount of time to be determined, such as 2 minutes or 5 restarts, check that the balances in algod and Indexer still agree.
We could also do some refactoring in daemon.go and the UpdateAccounting function and make it possible to write a unit test.
In addition to all of this, we could also take the "chaos monkey" approach, and make sure our production Indexers are killed off periodically. One of the account validation tools could then be used to detect any problems.
Urgency/Relative Priority
This is a pretty important part of the Indexer lifecycle, we should make sure it is properly tested.
Restart/Resume is much more deterministic today than it was when this issue was created. The unit tests also cover many of the edge cases which still exist.
While this might still be nice to have, it isn't as important as it used to be.