У меня есть вариант использования, в котором я хочу обновить данные из Couchbase, поэтому, когда я запрашиваю Couchbase для данных, просто введите:
bucket.get.query(Query.simple(query))
Он дает мне обновленные данные до некоторого времени, но по мере увеличения размера базы данных он не предоставляет мне обновленные и непротиворечивые данные. Здесь запрос сканирует индекс и предоставляет необходимые данные соответственно. Поэтому для получения согласованных данных я использовал ScanConsistency.REQUESTPLUS, как было предложено документация по диванной базе. Но как только я изменю код и сделаю что-то вроде этого:
bucket.get.query(Query.simple(query, QueryParams.build().consistency(ScanConsistency.REQUEST_PLUS)
.serverSideTimeout(10000, TimeUnit.SECONDS)))
Это дает мне исключение тайм-аута каждый раз и никогда не возвращает мне результат. Не могли бы вы объяснить, как я могу добиться согласованности данных здесь и почему это всегда дает мне исключение тайм-аута.
Трассировки стека:
java.lang.RuntimeException: java.util.concurrent.TimeoutException
[error] at com.couchbase.client.java.util.Blocking.blockForSingle(Blocking.java:93)
[error] at com.couchbase.client.java.CouchbaseBucket.query(CouchbaseBucket.java:548)
[error] at com.couchbase.client.java.CouchbaseBucket.query(CouchbaseBucket.java:491)
Любая помощь приветствуется.!
QueryParams
я вижу, что вы используете устаревшую версию SDK. Пожалуйста, используйте поколение 2.2 и Couchbase Server 4.0 или выше для официальной стабильной поддержки N1QL. - person Simon Baslé   schedule 23.02.2016