[bug-fix] Avoid throwing in catch block for failed commits #15903
+11
−3
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.
I was performing some storage fault injection tests - where storage IO for one database repeatedly error.
I was running into a case - where I was injecting a failure on optimistic write fsync at https://github.com/motherduckdb/duckdb/blob/dad112b203212a590cb764695abf911e93d6ceee/src/transaction/duck_transaction.cpp#L207
The problem is if we see a storage error on WAL truncate at the following - the program will terminate due to throwing an exception in a try/catch.
https://github.com/motherduckdb/duckdb/blob/dad112b203212a590cb764695abf911e93d6ceee/src/transaction/duck_transaction.cpp#L211
I was curious on your thoughts on if the logic was refactored a bit to perform the rollback outside of the original try/catch.
Some questions: