[SERVER-21537] chainingAllowed = false not being enforced after rs.stepDown() Created: 18/Nov/15 Updated: 06/Dec/22 Resolved: 14/May/20 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Replication |
| Affects Version/s: | 3.0.6, 3.0.7 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Ruben Terceno | Assignee: | Backlog - Replication Team |
| Resolution: | Duplicate | Votes: | 4 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||||||||||||||||||
| Issue Links: |
|
||||||||||||||||||||||||
| Assigned Teams: |
Replication
|
||||||||||||||||||||||||
| Operating System: | ALL | ||||||||||||||||||||||||
| Backport Requested: |
v3.4, v3.2
|
||||||||||||||||||||||||
| Steps To Reproduce: | Setup a RS
Step down the primary. The issue can be reproduce also if the RS is started having the chainingAllowed parameter = false. The initial configuration is ok, after the StepDown the cluster is chained. |
||||||||||||||||||||||||
| Sprint: | Repl E (01/08/16), Repl F (01/29/16), Repl 10 (02/19/16), Repl 11 (03/11/16), Repl 12 (04/01/16), Repl 18 (08/05/16), Repl 2016-08-29 | ||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||
| Description |
|
The parameter chainingAllowed = false is not enforced after a rs.stepDown() command. The secondaries are chained with the old primary connecting to the new primary directly but the other secondary syncing from the old primary. Before stepDown()
After stepDown()
This issue can't be reproduced on 3.2.0-rc2 |
| Comments |
| Comment by Siyuan Zhou [ 07/May/20 ] |
|
Closing this as a dup of |
| Comment by Siyuan Zhou [ 02/Mar/16 ] |
|
ramon.fernandez, Thomas mentioned that he had reproduce this issue on 3.0.7 and this issue is found on 3.0 by users. Do you mean the fix only applies to 3.0 so we don't "backport" it? |
| Comment by Ramon Fernandez Marina [ 24/Feb/16 ] |
|
Removing the v3.0 backport for this ticket, I think it stayed there after some earlier confusion with fixversions. |
| Comment by Eric Milkie [ 01/Feb/16 ] |
|
Since the primary disconnects all connections when stepping down, I don't see how any node can keep syncing from it. Perhaps the connection is flagged not to be disconnected? |
| Comment by Siyuan Zhou [ 01/Feb/16 ] |
|
_rsConfig.isChainingAllowed() is only checked in TopologyCoordinatorImpl::chooseNewSyncSource(), so if the secondaries don't have to choose a new sync source, they will keep syncing from the old upstream. We can choose a new sync source when we see a new primary. Alternatively, we can do that whenever we get a new term and make sure the upstream is also in the latest term. |
| Comment by Kelsey Schubert [ 18/Nov/15 ] |
|
I have reproduced on 3.0.7 - sending to triage. |