The reading with secondaryPreferred when chunk migration occurred often fail
Nowadays, balancer doesn't honor _secondaryThrottle, nor w: when w:&lt;=1. But, this case that w:6 means that when data is removed (range deleter at end of chunk move), we are removing documents one by one AND every document delete must have 6 acknowledge. If moved chunk had 100.000 documents, then there is 100.000 individual deletes with acknowledges. (slooooow)

If your query at secondary hits documents in the range what is under range delete, there will be a collision.