[SERVER-36531] Lock acquisition may throw despite presence of UninterruptibleLockGuard when WT tickets are exhausted Created: 08/Aug/18 Updated: 29/Oct/23 Resolved: 29/Aug/18 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Concurrency, Storage |
| Affects Version/s: | None |
| Fix Version/s: | 4.0.3, 4.1.3 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Ian Boros | Assignee: | Louis Williams |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | nyc | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||
| Operating System: | ALL | ||||||||||||
| Backport Requested: |
v4.0
|
||||||||||||
| Sprint: | Storage NYC 2018-09-10 | ||||||||||||
| Participants: | |||||||||||||
| Linked BF Score: | 58 | ||||||||||||
| Description |
|
When we create a DBLock, a global lock is created with "throw" interrupt behavior. The result is that we may propagate an exception from here when this call to checkForInterrupt throws. Since there are some places where we acquire locks in dispose() methods (which we don't allow to throw), such as here, this is a problem. Here's a full stack trace (I was able to produce this by creating a "NoInterruptsAllowedGuard", which disallows calls to checkForInterrupt() when active.
|
| Comments |
| Comment by Githook User [ 14/Sep/18 ] |
|
Author: {'name': 'Louis Williams', 'email': 'louis.williams@mongodb.com', 'username': 'louiswilliams'}Message: (cherry picked from commit 57b4b2216ffc7986440b87f9659e970e061b9f33) |
| Comment by Githook User [ 29/Aug/18 ] |
|
Author: {'name': 'Louis Williams', 'email': 'louis.williams@mongodb.com', 'username': 'louiswilliams'}Message: |