Using a mixed version cluster (2.6 mongos and config, 2.6 shard, 2.4 shard), a write operation that affects both shards causes mongos to crash if the write concern is invalid for one of the shards.
Commands in python:
>>> c.test.command('update', 'test', updates=[SON([('q', {'_id': {'$in': [2, 99997]}}), ('u', {'$set': {'foo': 'bar'}}), ('upsert', False), ('multi', True)])]) {u'nModified': 1, u'ok': 1, u'n': 2} >>> >>> c.test.command('update', 'test', updates=[SON([('q', {'_id': {'$in': [3, 99996]}}), ('u', {'$set': {'foo': 'bar'}}), ('upsert', False), ('multi', True)])], writeConcern={'w': 2, 'wtimeout': 100}) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "pymongo/database.py", line 435, in command uuid_subtype, compile_re, **kwargs)[0] File "pymongo/database.py", line 335, in _command for doc in cursor: File "pymongo/cursor.py", line 1017, in next if len(self.__data) or self._refresh(): File "pymongo/cursor.py", line 961, in _refresh self.__uuid_subtype)) File "pymongo/cursor.py", line 885, in __send_message res = client._send_message_with_response(message, **kwargs) File "pymongo/mongo_client.py", line 1201, in _send_message_with_response raise AutoReconnect(str(e)) pymongo.errors.AutoReconnect: connection closed
mongos log:
2014-03-12T13:54:56.212-0700 [mongosMain] MongoS version 2.6.0-rc2-pre- starting: pid=92669 port=27017 64-bit host=devtop.local (--help for usage) 2014-03-12T13:54:56.212-0700 [mongosMain] db version v2.6.0-rc2-pre- 2014-03-12T13:54:56.213-0700 [mongosMain] git version: 27afe048247d1ca3d32858bd9047fc92e97efea8 ... 2014-03-12T13:55:50.499-0700 [Balancer] distributed lock 'balancer/devtop.local:27017:1394657696:16807' unlocked. 2014-03-12T13:55:52.067-0700 [conn1] ERROR: Uncaught std::exception: vector::_M_range_check, terminating 2014-03-12T13:55:52.067-0700 [conn1] dbexit: rc:100
sh.status:
mongos> sh.status() --- Sharding Status --- sharding version: { "_id" : 1, "version" : 4, "minCompatibleVersion" : 4, "currentVersion" : 5, "clusterId" : ObjectId("531fe9146e3028d5a974d0b6") } shards: { "_id" : "shard0000", "host" : "localhost:37017" } { "_id" : "shard0001", "host" : "localhost:37018" } databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "test", "partitioned" : true, "primary" : "shard0000" } test.test shard key: { "_id" : 1 } chunks: shard0001 3 shard0000 4 { "_id" : { "$minKey" : 1 } } -->> { "_id" : 0 } on : shard0001 Timestamp(2, 0) { "_id" : 0 } -->> { "_id" : 15093 } on : shard0001 Timestamp(3, 0) { "_id" : 15093 } -->> { "_id" : 31137 } on : shard0001 Timestamp(4, 0) { "_id" : 31137 } -->> { "_id" : 47181 } on : shard0000 Timestamp(4, 1) { "_id" : 47181 } -->> { "_id" : 69233 } on : shard0000 Timestamp(3, 2) { "_id" : 69233 } -->> { "_id" : 95999 } on : shard0000 Timestamp(3, 4) { "_id" : 95999 } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(3, 5)
- duplicates
-
SERVER-13032 break early when resolving a replica set host fails in mongos batch_write_executor.cpp
- Closed