Clean up and remove recursive transaction usage #4559
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.
Recursive transactions are generally unnecessary and will deadlock when mutually exclusive memory protection is needed/added to ledger transactions.
Use enclosing transaction within scheduler::optimistic::run_one rather than opening a new one. This seems like a typo since the existing transaction is readily available.
In the epoch upgrade algorithm, the receivable_iterator was not incremented so the transaction stored in the iterator was not used. The outer loop already re-opens the transaction to get an up-to-date view of the ledger so I didn't identify any necessity for the algorithm to have a consistent ledger view as it's running.