[SERVER-33081] Reset `KeysCollectionManager` during rollback properly Created: 02/Feb/18 Updated: 29/Oct/23 Resolved: 20/Feb/18 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Sharding |
| Affects Version/s: | 3.6.2 |
| Fix Version/s: | 3.6.6, 3.7.3 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Daniel Gottlieb (Inactive) | Assignee: | Randolph Tan |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | rollback-functional | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||
| Operating System: | ALL | ||||||||||||
| Backport Requested: |
v3.6
|
||||||||||||
| Sprint: | Sharding 2018-02-26 | ||||||||||||
| Participants: | |||||||||||||
| Linked BF Score: | 0 | ||||||||||||
| Description |
|
Resetting the `LogicalTimeValidator` calls stopMonitoring/startMonitoring on the underlying KeyManager. These translate to calls to `PeriodicRunner::stop` and `PeriodicRunner::start`. However, the `_inShutdown` flag gets set which causes the restart to invariant. |
| Comments |
| Comment by Githook User [ 22/May/18 ] |
|
Author: {'username': 'renctan', 'name': 'Randolph Tan', 'email': 'randolph@10gen.com'}Message: (cherry picked from commit 9d1a7c5be9edbfdd039723ee91455f35b5ecc948) |
| Comment by Githook User [ 20/Feb/18 ] |
|
Author: {'email': 'randolph@10gen.com', 'name': 'Randolph Tan', 'username': 'renctan'}Message: |
| Comment by Githook User [ 14/Feb/18 ] |
|
Author: {'email': 'randolph@10gen.com', 'name': 'Randolph Tan', 'username': 'renctan'}Message: Revert " This reverts commit 14f46a166dc729b5c46a081f39511017d4aca828. |
| Comment by Githook User [ 14/Feb/18 ] |
|
Author: {'email': 'randolph@10gen.com', 'name': 'Randolph Tan', 'username': 'renctan'}Message: |
| Comment by Randolph Tan [ 06/Feb/18 ] |
|
Since the in memory cached keys does not support rollback, it should be cleared during replication rollback. To fix the current code, I propose to change resetKeyManagerCache such that it destroys the old KeysCollectionManager after it stops the current one, create a fresh KeysCollectionManager, and start it. In addition, it also needs to do the same thing in rollback_internal::syncFixUp. |