[SERVER-4731] Removed replica set nodes should not appear as members of the replica set. Created: 20/Jan/12 Updated: 09/Nov/12 Resolved: 16/Feb/12 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Replication |
| Affects Version/s: | 2.0.2 |
| Fix Version/s: | 2.1.1 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Kyle Banker | Assignee: | Eric Milkie |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||
| Operating System: | ALL | ||||||||||||
| Participants: | |||||||||||||
| Description |
|
When you call rs.remove(), the removed node still looks a lot like a replica set.
To avoid confusion on the client side, removed nodes should immediately terminate. |
| Comments |
| Comment by Eric Milkie [ 16/Feb/12 ] |
|
need to add new state to the state table in "Replica Set Commands" |
| Comment by auto [ 14/Feb/12 ] |
|
Author: {u'login': u'milkie', u'name': u'Eric Milkie', u'email': u'milkie@10gen.com'}Message: |
| Comment by auto [ 14/Feb/12 ] |
|
Author: {u'login': u'milkie', u'name': u'Eric Milkie', u'email': u'milkie@10gen.com'}Message: New behavior: when you remove a replica set node, its state changes |
| Comment by Eric Milkie [ 07/Feb/12 ] |
|
Replica set nodes used to terminate when they were removed. This feature was added with 8a0def48 and removed with 759e1e646 . |
| Comment by Gustavo Niemeyer [ 30/Jan/12 ] |
|
I spent some time on this scenario over the weekend. Some related comments: 1. After the master connection drops, there's a window of time when 2. As expected the list of replica set members returned by the master 3. It's curious that the primary drops all connections on the removal, I'm hoping to release an updated version of the Go driver with that |
| Comment by Gustavo Niemeyer [ 22/Jan/12 ] |
|
For the record, as Kyle commented elsewhere the following scheme is also a workaround to detect when a host should be ignored for the moment:
|
| Comment by Kyle Banker [ 20/Jan/12 ] |
|
If the node is not allowed to terminate, it should at the very least revert to a state when the replica set has not been initiated yet. That is, the rs.status() and db.isMaster() commands should never indicate that the node is part of a replica set. |