Я также столкнулся с этой ошибкой, когда использовал mongodb-2.0.2 и java-driver2.7.3.Это единственный сервер mongodb для разработки с открытой опцией --auth
.
Я понимаю, что это вызвано аутентификацией в многопоточности:
DB db = m.getDB(dbName);
if(!db.isAuthenticated())
{
boolean pass = db.authenticate(name, pwd.toCharArray());
if(!pass)
throw new Exception("User " + name + " authentication failed for db " + dbName + "!");
}
Со стороны сервера, перед тем как один запрос на аутентификациювыполнено, другой поток отправил новый запрос, который приводит к переопределению первого запроса.
После добавления synchronized
к этому методу он больше не появлялся.