Hi,
I am running out of memory in an application, Exception getting logged is :
java.lang.RuntimeException:
java.util.concurrent.TimeoutException
at com.couchbase.client.java.util.Blocking.blockForSingle(Blocking.java:93)
at com.couchbase.client.java.CouchbaseBucket.upsert(CouchbaseBucket.java:267)
at com.couchbase.client.java.CouchbaseBucket.upsert(CouchbaseBucket.java:262)
at
com.mmt.cache.dao.impl.UserQueryCouchbaseDaoImpl.storeToCouchbase(UserQueryCouchbaseDaoImpl.java:51)
at com.mmt.cache.dao.impl.AbstractCouchBaseDaoImpl.singlePutToCouchbase(AbstractCouchBaseDaoImpl.java:59)
at
com.mmt.cache.transformation.delegator.impl.CouchBaseServiceDelegatorImpl.putUntransformedPacket(CouchBaseServiceDelegatorImpl.java:381)
at com.mmt.cache.transformation.delegator.impl.CouchBaseServiceDelegatorImpl.put(CouchBaseServiceDelegatorImpl.java:155)
at
com.mmt.cache.core.AbstractCacheService.putUsingCouchBaseDelegator(AbstractCacheService.java:123)
at com.mmt.cache.core.impl.SimpleCacheService.put(SimpleCacheService.java:55)
at
com.mmt.cache.batching.service.impl.MultiPutBatchServiceImpl$1.run(MultiPutBatchServiceImpl.java:95)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
I am using operations as below :
Single get operation :
LegacyDocument document = bucket.get(key, LegacyDocument.class,1000,TimeUnit.MILLISECONDS);
if(document != null){
value = (String)document .content();
}
Single Put Operation:
protected void storeToCouchbase(String key, int ttl,String value){
LegacyDocument document = LegacyDocument.create(key, ttl, value);
client.upsert(document);
}
Multi Get Operation :
protected Map asyncBulkGet(final Collection ids, final Bucket bucket) {
Map responseMap = null;
try{
responseMap = Observable
.from(ids)
.flatMap(new Func1>() {
@Override
public Observable call(String id) {
return bucket.async().get(id, LegacyDocument.class);
}
})
.toMap(new Func1() {
@Override
public String call(LegacyDocument jsonDoc) {
if(jsonDoc != null){
return jsonDoc.id();
}
return null;
}
},new Func1() {
@Override
public Object call(LegacyDocument jsonDoc) {
if(jsonDoc != null){
return jsonDoc.content();
}
return null;
}
})
.toBlocking()
.single();
}catch(Exception e){
}
return responseMap;
}
I am using java-client 2.1.0 and couchbase server is 3.0.2
Need help here to understand what exactly I am doing wrong.
Thanks,
Bharat