PLATFORM-9121 | Do not swallow DB errors in Cargo query #21
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.
Cargo currently swallows all exceptions thrown while it is running queries, mainly because it may throw MWExceptions as validation errors which should be formatted nicely without breaking the rest of the page. However, the queries themselves may fail due to transient database issues, and Cargo wraps the resulting DBError exceptions as well without much ado. The effect is that these errors never get logged (so we don't even know how often this happens), and the error gets cached in parser cache and on the CDN, forcing people to check for and periodically purge pages with such errors.
Instead, detect and rethrow errors coming from MediaWiki's DBAL so that we can track them in our logs, and so that they do not get cached.