-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: 3.4.9, 3.5.13
-
Component/s: Sharding
-
Fully Compatible
-
ALL
-
v4.4, v4.2, v4.0
-
Sharding 2019-10-21, Sharding 2019-11-04, Sharding 2019-11-18
-
8
The mongos used to send moveChunk directly against the shard, so the shardVersion protocol was in affect and stale mongos nodes would refresh their routing tables and retry.
However, mongos nodes no longer send moveChunk against a shard node, but rather against the config server. This means that a stale mongos can receive a command like this
{
moveChunk: nss,
find: {_id: 1},
to: 'shard1'
}
and forward it to the config server with the chunk bounds (MinKey, MaxKey). The config server then forwards it to the shard, which fails it with IncompatibleShardingMetadata, chunk does not exist — another mongos previously split the chunk. This error passes back through the config server to the mongos, which just fails.
This is a regression from 3.2: moving the balancer to the config server in v3.4 changed the moveChunk behavior.