Couchbase получить из реплики

Я использую кушетку 4.0.1 с Java SDK.

Это мой код:

bucket.async()
            .get(key)
            .onErrorResumeNext(throwable -> {
                if (throwable instanceof TimeoutException) {
                    return getBucket().async().getFromReplica(key, ReplicaMode.ALL);
                }
                return Observable.error(throwable);
            })
            .map(doc -> doc.content())
            .toBlocking()
            .singleOrDefault(null);

Если я получаю TimeoutException - я перехожу к реплике, но на прошлой неделе из-за серьезной проблемы мы получили исключение OutOfMemory с одного из наших серверов. Конечно, мы не получили документ из реплики, и у нас были некоторые исключения.

Я хотел бы знать, следует ли мне переходить к реплике в любом исключении или нет?

Спасибо,

Я делаю


person Ido Barash    schedule 01.08.2016    source источник


Ответы (1)


Всегда переход к реплике не поможет для некоторых классов ошибок, таких как DocumentDoesNotExistException, конечно.

Для других, которые могут указывать на проблему в масштабе кластера, например CouchbaseOutOfMemoryException, переход к реплике является вариантом, НО это может оказать большее давление на кластер и усугубить проблему.

Может быть, лучше отступить, немного подождать и повторить попытку.

person Simon Baslé    schedule 02.08.2016