Escribo código Java usando MongoDB con Java API y no estoy seguro de alguna parte del Javadoc.Mongodb java api: WriteResult # getN()
En un contexto multi-thread utilizo DBCollection.html#update(com.mongodb.DBObject, com.mongodb.DBObject) para actualizar un documento único, pero vi que dos hilos podrían intentar escribir al mismo tiempo. En este contexto, observé que solo se realizó una escritura, ya que Mongodb parece usar el bloqueo de escritura optimista, pero quería averiguar programáticamente en qué hilo la escritura era la que escribía, y cuál no. Como un comportamiento "no hay ninguna actualización" se quedó en silencio (me refiero no es una excepción o algo así), me buscaron en la API de alguna manera de responder a mi problema y después de algunas pruebas se enteraron de este método: WriteResult#getN()
public int getN()
Gets the "n" field
Returns:
La descripción es, hum ... no realmente exhaustivo. Mis pruebas mostraron que el hilo que gana la escritura tiene un getN() que devuelve 1, y el otro 0.
Así que mi pregunta es: ¿alguien podría confirmar esto?
¿por qué dice que hubo un "error"? si no se encontró el objeto especificado, no hubo nada que actualizar. No habría ninguna actualización, no una falla de escritura. –
Lo siento, como un hablante de inglés no nativo, alguna vez no puedo decir lo que pienso de la manera correcta. ;) Quise decir que no se actualizó en silencio, que era mi problema en realidad. Corregiré mi redacción. – Nicocube