Pregunta

Estoy trabajando en aplicaciones donde estoy usando Mongodb con réplico.

En mi réplico, tengo 2 servidores DB y 1 árbitro. Estoy creando mi objeto Mongo de la siguiente manera

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();

Cuando todos los servidores están arriba, no hay problemas, pero cuando cualquiera de los servidores desciende, el sistema se inicia a través de mensajes de error interminables, como se muestra a continuación

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)

¿Puedes ayudarme a resolver esto?

¿Desde que estoy usando un conjunto de réplicas, si un servidor está inactivo no se supone que debe usar el nuevo primario e ignorar la primaria anterior?

Encuentre las imágenes a continuación para verificar el estado del conjunto de réplicas

Todos los servidores UP y 192.168.1.42 es el servidor principal ingrese la descripción de la imagen aquí

192.168.1.42 está abajo (temporalmente temporal) y 192.168.1.187 es el nuevo primario (los errores ocurren ahora) ingrese la descripción de la imagen aquí

192.168.1.42 está arriba y las actuaciones como un servidor secundario (error se apaga) ingrese la descripción de la imagen aquí

Actualizado: La base de datos funciona incluso si los mensajes de error se registran. ¿Hay un mecanismo para reducir / suprimir los mensajes de error?

¿Fue útil?

Solución

This is a logging issue. It is now a warning, instead of an error.

The 2.6 driver (due out later this week) will be less verbose with logging for this. This is not an error but just a warning that that node is down when the background thread checks on the status of the replicaset members. You can use the current version in master if you want to test now: http://github.com/mongodb/mongo-java-driver

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top