Бесконечная ошибка подключения к репликасу с поддержкой данных Spring и mongodb - PullRequest
0 голосов
/ 17 мая 2011

Я работаю в приложениях, где я использую mongodb с replicaset.

В моем репликасе у меня 2 дБ сервера и 1 арбитр. Я создаю свой объект монго следующим образом

List<ServerAddress> servers = new ArrayList<ServerAddress>();
servers.add( new ServerAddress( "192.168.1.42", 27017 ) );
servers.add( new ServerAddress( "192.168.1.187", 27017 ) );
servers.add( new ServerAddress( "192.168.1.189", 27017 ) ); //Arbiter

MongoOptions mongoOptions = new MongoOptions();
mongoOptions.autoConnectRetry = true;
mongo = new Mongo(servers, mongoOptions);
mongo.slaveOk();

Когда все серверы работают, проблем не возникает, но когда один из серверов выходит из строя, система начинает выдавать бесконечные сообщения об ошибках, как показано ниже

May 17, 2011 11:24:19 AM com.mongodb.ReplicaSetStatus$Node update
SEVERE: can't update node: 192.168.1.42:27017
java.io.IOException: couldn't connect to [/192.168.1.42:27017] bc:java.net.ConnectException: Connection refused: connect
    at com.mongodb.DBPort._open(DBPort.java:206)
    at com.mongodb.DBPort.go(DBPort.java:94)
    at com.mongodb.DBPort.go(DBPort.java:75)
    at com.mongodb.DBPort.findOne(DBPort.java:129)
    at com.mongodb.DBPort.runCommand(DBPort.java:138)
    at com.mongodb.ReplicaSetStatus$Node.update(ReplicaSetStatus.java:149)
    at com.mongodb.ReplicaSetStatus.updateAll(ReplicaSetStatus.java:314)
    at com.mongodb.ReplicaSetStatus$Updater.run(ReplicaSetStatus.java:263)

Можете ли вы помочь мне решить эту проблему?

Поскольку я использую набор реплик, если один сервер не работает, не предполагается ли использовать новый первичный и игнорировать старый первичный?

Пожалуйста, найдите изображения ниже, чтобы проверить состояние набора реплик

Все серверы работают и 192.168.1.42 является основным сервером enter image description here

192.168.1.42 недоступен (вручную), а 192.168.1.187 - новый первичный (ошибки происходят сейчас) enter image description here

192.168.1.42 снова работает и действует как вторичный сервер (ошибка исчезает) enter image description here

ОБНОВЛЕНИЕ: База данных работает, даже если сообщения об ошибках регистрируются. Есть ли механизм уменьшения / подавления сообщений об ошибках?

1 Ответ

1 голос
/ 17 мая 2011

Это проблема регистрации. Теперь это предупреждение, а не ошибка.

Драйвер 2.6 (выйдет позднее на этой неделе) будет менее подробным с логированием для этого. Это не ошибка, а просто предупреждение о том, что этот узел не работает, когда фоновый поток проверяет состояние членов репликационного набора. Вы можете использовать текущую версию в мастер, если вы хотите проверить сейчас: http://github.com/mongodb/mongo-java-driver

http://github.com/mongodb/mongo-java-driver/commit/ee7543a4f7cc26618cf78eab2a18bd33b3e101cc

...