2014-04-25 12 views
5

nostra configurazione connessione corrente si presenta così:MongoDB Java: autoConnectRetry

MongoClientOptions.builder() 
    .autoConnectRetry(true).maxAutoConnectRetryTime(1200000) 
    .socketTimeout(30000).connectTimeout(15000).build(); 
    // SocketTimeout: 30s, ConnectionTimeout 15s, ReconnectRetry: 20min 

autoConnectRetry e maxAutoConnectRetryTime sono deprecati nella versione attuale (source code) e saranno rimossi:. "Non v'è alcun sostituto per questo metodo Usa la proprietà connectTimeout per controllare il timeout della connessione. "

Ho pensato che i tentativi e i timeout delle connessioni erano due cose diverse. Qualcuno sa perché questo è stato cambiato e quali sono le implicazioni (interne) di questo?

+0

Presumibilmente, hanno deciso che c'era un valore limitato nel riprovare una connessione fallita. – jgitter

+0

Abbiamo avuto piccoli problemi di rete in cui le connessioni si sono interrotte senza di esso e sono state rilevate se configurate come nell'esempio – xeraa

+0

Hmmm .. che è interessante. Sfortunatamente, sembrerebbe che dovrai configurare i tentativi di connessione nel tuo progetto ora. In bocca al lupo! – jgitter

risposta

16

C'è stata molta confusione sul significato di autoConnectRetry. La maggior parte delle persone pensa che significhi che, se un'operazione è fallita a causa di una IOException, il driver riproverà l'operazione fino a quando non sarà trascorso maxAutoConnectRetryTime. Ma non è questo il caso.

Tutto ciò significa che, durante le chiamate a Socket.connect(), il driver riprova un tentativo fallito di connessione fino a quando è scaduto il tempo di MaxAutoConnectRetryTime. Ma questo è esattamente ciò che è per connectTimeout. L'unica funzionalità aggiuntiva di autoConnectRetry è che è possibile specificare un timeout di connessione più lungo rispetto a quello consentito dal sistema operativo sottostante (che in genere applica un timeout massimo di connessione che limita il valore specificato dall'utente).

A causa di questa confusione, della mancanza di valore della funzione e del fatto che nessuno degli altri driver MongoDB supporta questa funzione, abbiamo deciso di deprecarlo (e rimuoverlo nella prossima versione principale).