[SERVER-44748] Do not suppress WriteConflictExceptions in debug builds when checking IndexCatalog::numIndexesTotal Created: 20/Nov/19 Updated: 29/Oct/23 Resolved: 07/Jan/20 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 4.3.3 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Louis Williams | Assignee: | Eric Milkie |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | groomed | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||
| Backwards Compatibility: | Fully Compatible | ||||
| Operating System: | ALL | ||||
| Sprint: | Execution Team 2020-01-13, Execution Team 2019-12-30 | ||||
| Participants: | |||||
| Linked BF Score: | 17 | ||||
| Description |
|
In Unfortunately it is not correct to ignore WriteConflicts. The storage engine may choose to abort a transaction at any time, often due to cache pressure. When the storage engine does abort an operation, it throws a WriteConflictException. If an operation ignores this error, it will continue to commit the operation instead. This will lead to the following error from WiredTiger:
We should solve the original problem described in |
| Comments |
| Comment by Githook User [ 07/Jan/20 ] |
|
Author: {'name': 'Eric Milkie', 'email': 'milkie@mongodb.com', 'username': 'milkie'}Message: In debug mode, we check that the catalog is consistent when fetching the total number of indexes. This check might encounter a WT_ROLLBACK, so suppress such WCE's. We can only safely do this for read transactions, since such transactions cannot be subsequently committed, due to the rollback error. |
| Comment by Githook User [ 27/Dec/19 ] |
|
Author: {'name': 'Eric Milkie', 'email': 'milkie@mongodb.com', 'username': 'milkie'}Message: This reverts commit 458defe182cdd3fc6abedc53c6109b54d9192539. |
| Comment by Eric Milkie [ 27/Dec/19 ] |
|
I am considering two options: |