Skip to content

Instantly share code, notes, and snippets.

@kenjiskywalker
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenjiskywalker/cd199af82a7badbf2eac to your computer and use it in GitHub Desktop.
Save kenjiskywalker/cd199af82a7badbf2eac to your computer and use it in GitHub Desktop.
arbiterをrs.removeで外すと例外が出る

レプリカセットつくるコマンド

mkdir -p /tmp/mongo
chmod 777 /tmp/mongo
mkdir -p /tmp/mongo/node[0-2]
mkdir -p /tmp/mongo/log/

mongod --replSet foo --smallfiles --port 27017 --dbpath /tmp/mongo/node0 
mongod --replSet foo --smallfiles --port 27018 --dbpath /tmp/mongo/node1
mongod --replSet foo --smallfiles --port 27019 --dbpath /tmp/mongo/node2

mongo
config = { _id: 'foo', members: [ 
{ _id: 0, host: '127.0.0.1:27017' },
{ _id: 1, host: '127.0.0.1:27018' },
{ _id: 2, host: '127.0.0.1:27019', arbiterOnly: true } ] }
rs.initiate( config );

テスト内容

foo:PRIMARY> rs.status()
{
        "set" : "foo",
        "date" : ISODate("2014-06-11T14:13:33Z"),
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "127.0.0.1:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 56,
                        "optime" : Timestamp(1402495975, 1),
                        "optimeDate" : ISODate("2014-06-11T14:12:55Z"),
                        "electionTime" : Timestamp(1402495973, 1),
                        "electionDate" : ISODate("2014-06-11T14:12:53Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "127.0.0.1:27018",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 46,
                        "optime" : Timestamp(1402495975, 1),
                        "optimeDate" : ISODate("2014-06-11T14:12:55Z"),
                        "lastHeartbeat" : ISODate("2014-06-11T14:13:33Z"),
                        "lastHeartbeatRecv" : ISODate("2014-06-11T14:13:32Z"),
                        "pingMs" : 0,
                        "lastHeartbeatMessage" : "syncing to: 127.0.0.1:27017",
                        "syncingTo" : "127.0.0.1:27017"
                },
                {
                        "_id" : 2,
                        "name" : "127.0.0.1:27019",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 38,
                        "lastHeartbeat" : ISODate("2014-06-11T14:13:31Z"),
                        "lastHeartbeatRecv" : ISODate("2014-06-11T14:13:32Z"),
                        "pingMs" : 0
                }
        ],
        "ok" : 1
}
foo:PRIMARY>

rs.remove したら例外発生した(PRIMARY)

2014-06-11T23:14:11.364+0900 [SyncSourceFeedbackThread] Socket recv() errno:54 Connection reset by peer 127.0.0.1:27017
2014-06-11T23:14:11.364+0900 [SyncSourceFeedbackThread] SocketException: remote: 127.0.0.1:27017 error: 9001 socket exception [RECV_ERROR] server [127.0.0.1:27017]
2014-06-11T23:14:11.364+0900 [conn9] end connection 127.0.0.1:51453 (2 connections now open)
2014-06-11T23:14:11.365+0900 [SyncSourceFeedbackThread] DBClientCursor::init call() failed
2014-06-11T23:14:11.365+0900 [initandlisten] connection accepted from 127.0.0.1:51456 #10 (3 connections now open)
2014-06-11T23:14:11.365+0900 [SyncSourceFeedbackThread] SyncSourceFeedback error sending update: DBClientBase::findN: transport error: 127.0.0.1:27017 ns: admin.$cmd query: { replSetUpdatePosition: 1, optimes: [ { _id: ObjectId('5398616230258f1af75e520d'), optime: Timestamp 1402496051000|1, config: { _id: 1, host: "127.0.0.1:27018" } } ] }
2014-06-11T23:14:11.365+0900 [SyncSourceFeedbackThread] replset setting syncSourceFeedback to 127.0.0.1:27017
2014-06-11T23:14:11.366+0900 [rsBackgroundSync] Socket flush send() errno:32 Broken pipe 127.0.0.1:27017
2014-06-11T23:14:11.366+0900 [rsBackgroundSync] caught exception (socket exception [SEND_ERROR] for 127.0.0.1:27017) in destructor (~PiggyBackData)
2014-06-11T23:14:11.366+0900 [rsBackgroundSync] replSet sync source problem: 10278 dbclient error communicating with server: 127.0.0.1:27017
2014-06-11T23:14:11.366+0900 [rsBackgroundSync] replSet syncing to: 127.0.0.1:27017
2014-06-11T23:14:11.366+0900 [rsBackgroundSync] replset setting syncSourceFeedback to 127.0.0.1:27017
2014-06-11T23:14:12.899+0900 [rsMgr] replset msgReceivedNewConfig version: version: 10
2014-06-11T23:14:12.899+0900 [rsMgr] replSet info saving a newer config version to local.system.replset: { _id: "foo", version: 10, members: [ { _id: 0, host: "127.0.0.1:27017" }, { _id: 1, host: "127.0.0.1:27018" } ] }
2014-06-11T23:14:12.899+0900 [rsMgr] replSet saveConfigLocally done
2014-06-11T23:14:12.899+0900 [rsMgr] replSet replSetReconfig new config saved locally
2014-06-11T23:14:12.900+0900 [rsHealthPoll] replSet member 127.0.0.1:27017 is up
2014-06-11T23:14:12.900+0900 [rsHealthPoll] replSet member 127.0.0.1:27017 is now in state PRIMARY
2014-06-11T23:14:12.906+0900 [conn8] end connection 127.0.0.1:51446 (2 connections now open)
2014-06-11T23:14:16.387+0900 [rsBackgroundSync] replset setting syncSourceFeedback to 127.0.0.1:27017
2014-06-11T23:14:32.911+0900 [initandlisten] connection accepted from 127.0.0.1:51468 #11 (3 connections now open)
2014-06-11T23:14:41.380+0900 [conn10] end connection 127.0.0.1:51456 (2 connections now open)

SECONDARY

2014-06-11T23:14:11.365+0900 [conn3] SocketException handling request, closing client connection: 9001 socket exception [SEND_ERROR] server [127.0.0.1:51413]
2014-06-11T23:14:11.365+0900 [rsHealthPoll] replSet member 127.0.0.1:27018 is up
2014-06-11T23:14:11.365+0900 [rsHealthPoll] replSet member 127.0.0.1:27018 is now in state SECONDARY
2014-06-11T23:14:11.365+0900 [initandlisten] connection accepted from 127.0.0.1:51457 #10 (3 connections now open)
2014-06-11T23:14:11.366+0900 [initandlisten] connection accepted from 127.0.0.1:51458 #11 (4 connections now open)
2014-06-11T23:14:11.366+0900 [initandlisten] connection accepted from 127.0.0.1:51459 #12 (5 connections now open)
2014-06-11T23:14:11.366+0900 [conn10] end connection 127.0.0.1:51457 (4 connections now open)
2014-06-11T23:14:11.367+0900 [initandlisten] connection accepted from 127.0.0.1:51460 #13 (5 connections now open)
2014-06-11T23:14:12.360+0900 [initandlisten] connection accepted from 127.0.0.1:51461 #14 (6 connections now open)
2014-06-11T23:14:12.899+0900 [conn8] end connection 127.0.0.1:51436 (5 connections now open)
2014-06-11T23:14:12.900+0900 [initandlisten] connection accepted from 127.0.0.1:51462 #15 (6 connections now open)
2014-06-11T23:14:12.906+0900 [conn9] end connection 127.0.0.1:51437 (5 connections now open)
2014-06-11T23:14:16.387+0900 [conn12] end connection 127.0.0.1:51459 (4 connections now open)
2014-06-11T23:14:16.387+0900 [initandlisten] connection accepted from 127.0.0.1:51463 #16 (5 connections now open)
2014-06-11T23:14:16.387+0900 [conn13] end connection 127.0.0.1:51460 (4 connections now open)
2014-06-11T23:14:16.388+0900 [initandlisten] connection accepted from 127.0.0.1:51464 #17 (5 connections now open)

rs.removeしないでやると見つからないエラーが出るが例外は出ない

2014-06-11T23:17:32.495+0900 [rsHealthPoll] DBClientCursor::init call() failed
2014-06-11T23:17:32.496+0900 [rsHealthPoll] replset info 127.0.0.1:27019 heartbeat failed, retrying
2014-06-11T23:17:32.497+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
2014-06-11T23:17:32.497+0900 [rsHealthPoll] replset info 127.0.0.1:27019 just heartbeated us, but our heartbeat failed: , not changing state
2014-06-11T23:17:34.501+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
2014-06-11T23:17:34.501+0900 [rsHealthPoll] replset info 127.0.0.1:27019 heartbeat failed, retrying
2014-06-11T23:17:34.506+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
2014-06-11T23:17:34.506+0900 [rsHealthPoll] replSet info 127.0.0.1:27019 is down (or slow to respond):
2014-06-11T23:17:34.506+0900 [rsHealthPoll] replSet member 127.0.0.1:27019 is now in state DOWN
2014-06-11T23:17:36.516+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
2014-06-11T23:17:36.516+0900 [rsHealthPoll] replset info 127.0.0.1:27019 heartbeat failed, retrying
2014-06-11T23:17:36.533+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
2014-06-11T23:17:38.567+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
2014-06-11T23:17:38.567+0900 [rsHealthPoll] replset info 127.0.0.1:27019 heartbeat failed, retrying
2014-06-11T23:17:38.633+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
2014-06-11T23:17:40.763+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
2014-06-11T23:17:40.763+0900 [rsHealthPoll] replset info 127.0.0.1:27019 heartbeat failed, retrying
2014-06-11T23:17:41.020+0900 [rsHealthPoll] warning: Failed to connect to 127.0.0.1:27019, reason: errno:61 Connection refused
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment