Come ho letto in questo post del blog uno slave spento o che non risponde può causare errori dell'applicazione perché il comportamento predefinito di Octopus è scrivere tutti i dati sul master e leggere tutti i dati dagli slave (poiché i dati scritti sul master vengono poi replicati su tutti gli slave collegati). Come indicato nella wiki Octopus, sezione "Schiavi multipli" la lettura in un ambiente con più slave viene eseguita utilizzando il round robin, quindi recupera sempre i dati da uno slave per impostazione predefinita.
Tratto anche dal suddetto blog:come meccanismo di fallback dovresti leggere i dati direttamente dal Master (usando .using(:master)
) se nessuno dei nodi Slave è disponibile o se i dati non sono stati ancora completamente replicati sugli slave. Potrebbe anche essere un'opzione per memorizzare nella cache le modifiche/risultati a livello di applicazione per evitare letture ripetute dai nodi del database.