If the database rejects the login after the shard mapping has started, the schemarouter would not process the error that was sent for it. This causes the shard mapping to hang if the failing server was the last one to return a response.
A related problem to this is the way error responses to the shard mapping are handled. Currently all errors trigger a session shutdown which prevents a subset of the available server from being used. This limits the utility of the schemarouter in scenarios where the errors are transient or expected (e.g. the server is shutting down and sends the ER_SERVER_SHUTDOWN error. The right thing to do would be to ignore any servers that respond with an error to the mapping query.