The find command implementation in 3.2 indiscriminately calls ShardingState::refreshMetadataIfNeeded even if no migrations or shard version mismatch has been found for the collection being queried.
This is bad, because the refreshMetadataIfNeeded call is internally rate limited to at most 3 concurrent callers in order to not overwhelm the config server if refresh "is needed". However the rate limiting is done at the wrong place - where the in-memory check is done instead when the refresh from the config server is actually.
This check should only be done if stale version has been hit and not on all occasions.