2016-05-03 4 views
3

Я пытаюсь получить документ из Couchbase используя следующий код:Couchbase java.util.concurrent.TimeoutException при получении нескольких документов

public synchronized void initialize() { 
    CouchbaseEnvironment env = 
    DefaultCouchbaseEnvironment 
    .builder() 
    .connectTimeout(10000) 
    .build(); 
    setBucket(proper 
    .getCluster() 
    .openBucket(proper.getBucket(),proper.getBucketPassword()) 
} 
public JsonDocument findByDocumentId(String id) { 
    try { 
     return getBucket.get(id); 
    } catch (Exception e) { 
     e.printStackTrace(System.out); 
    } 
} 

Я могу получить 3 или 4 документа успешно, но потом я получить тайм-аут Исключение:

java.lang.RuntimeException: java.util.concurrent.TimeoutException 
at com.couchbase.client.java.util.Blocking.blockForSingle(Blocking.java:93) 
at com.couchbase.client.java.CouchbaseBucket.get(CouchbaseBucket.java:100) 
at com.couchbase.client.java.CouchbaseBucket.get(CouchbaseBucket.java:95) 

Почему я получаю таймаут и как его избежать?

ответ

1

При настройке среды вы можете увеличить таймаут операции Key/Value с помощью параметра kvTimeout(long).

EG

CouchbaseEnvironment env = 
    DefaultCouchbaseEnvironment 
    .builder() 
    .kvTimeout(5000) //in ms 
    .build(); 

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

Список настраиваемых параметров см http://developer.couchbase.com/documentation/server/4.0/sdks/java-2.2/env-config.html

-1

Thread.sleep поможет избежать этой проблемы. Мы должны реализовать время ожидания для следующего чтения документа. Это не решение, а работа.

+0

Я не могу понять, как это может помочь любому реально решить эту проблему. – Will

Смежные вопросы