Prova a impostare l'opzione maxConnectionIdleTime in MongoClientOptions (soprattutto se stai utilizzando un ambiente MongoDB ospitato)
Esempio:
new MongoClientOptions.Builder()
.requiredReplicaSetName(REPLICASET_NAME)
.maxConnectionIdleTime (MAX_IDLE_TIME)
.connectionsPerHost(CONNECTION_PER_HOST)
.cursorFinalizerEnabled(false)
.build();
connectTimeout è fuorviante in quanto è l'impostazione di timeout per la connessione iniziale.
Per il problema relativo alla reinizializzazione di MongoClient, assicurarsi che il codice client rientri nell'ambito corretto per il prelievo del codice di inserimento. Inoltre, vedo solo il db e non l'oggetto a livello di raccolta (con proxy?) che viene reinizializzato.