What is the best way to manage the connection with bucket?

Hi all,i have a question about the bucket’connection.recently our application always crash by ‘Out of memory’,before the OOM exception cames out there has another exception about rx.sheduale.worker…I checked the code and fixed the points where maybe make memory leak.But the problem is still occured.
In my application a business process is divided into several tasks to deal with,every task process keeps a jdbc connection and a bucket connection,the process will get and write many data with bulk options,when it is done,i close the jdbc connection,but the bucket connection is still opening,the bucket opening at the beginning of the appliction starting up,and never close.Does bucket’s connections should be treaded as the jdbc connection that need close after finishing using?

You should be able to use a single shared bucket among each of these workers. As far as your correlation to OOM, it’s hard to correlate from an exception that occurred earlier. The JVM has a -XX flag that will do a heap dump at OOM. It’s highly recommended in all production cases, since getting info after an OOM isn’t always useful. You should look up -XX:+HeapDumpOnOutOfMemoryError.

Do you have any idea with this ?

this content is analyzed from the dump file, the thread which leads the OOM was “cb-computations-1”:
“cb-computations-1” daemon prio=5 tid=51 RUNNABLE
at java.lang.OutOfMemoryError.(OutOfMemoryError.java:25)
at java.util.AbstractList.iterator(AbstractList.java:273)
Local Variable: java.util.ArrayList#14400
at com.couchbase.client.core.config.CouchbasePartitionInfo.fromPartitionList(CouchbasePartitionInfo.java:98)
Local Variable: short[]#223
Local Variable: java.util.AbstractList$Itr#2
Local Variable: java.util.ArrayList#15203
at com.couchbase.client.core.config.CouchbasePartitionInfo.(CouchbasePartitionInfo.java:47)
Local Variable: java.util.ArrayList#14176
Local Variable: java.util.ArrayList#14177
Local Variable: com.couchbase.client.core.config.CouchbasePartitionInfo#1
at sun.reflect.GeneratedConstructorAccessor52.newInstance()
Local Variable: java.lang.Integer#351640
Local Variable: sun.reflect.GeneratedConstructorAccessor52#1
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
Local Variable: java.lang.reflect.Constructor#686
at com.couchbase.client.deps.com.fasterxml.jackson.databind.introspect.AnnotatedConstructor.call(AnnotatedConstructor.java:125)
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.introspect.AnnotatedConstructor#8
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:227)
Local Variable: java.lang.Object[]#14187
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.std.StdValueInstantiator#2
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:135)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:442)
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.util.TokenBuffer#3
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.impl.PropertyValueBuffer#2
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.core.JsonToken#11
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator#1
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1099)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:296)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:133)
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer#1
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:463)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:378)
Local Variable: java.lang.String#3997288
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.util.TokenBuffer#2
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.CreatorProperty#12
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.impl.PropertyValueBuffer#1
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator#4
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1099)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:296)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:166)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:136)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:122)
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.BeanDeserializer#4
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.core.util.JsonParserSequence#1
Local Variable: java.lang.String#1613347
at com.couchbase.client.deps.com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:93)
Local Variable: java.lang.String#3997260
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.util.TokenBuffer#1
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.core.JsonToken#8
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:131)
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.AbstractDeserializer#1
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer#1
at com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:42)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736)
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.core.json.ReaderBasedJsonParser#1
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer#1
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.DeserializationConfig#2
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.deser.DefaultDeserializationContext$Impl#1
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.core.JsonToken#12
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.type.SimpleType#8
at com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2726)
Local Variable: class com.couchbase.client.core.config.BucketConfig
Local Variable: com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper#2
at com.couchbase.client.core.config.parser.BucketConfigParser.parse(BucketConfigParser.java:43)
at com.couchbase.client.core.config.DefaultConfigurationProvider.proposeBucketConfig(DefaultConfigurationProvider.java:336)
Local Variable: com.couchbase.client.core.config.DefaultConfigurationProvider#1
Local Variable: java.lang.String#1899799
at com.couchbase.client.core.config.refresher.CarrierRefresher$5$1.onNext(CarrierRefresher.java:213)
at com.couchbase.client.core.config.refresher.CarrierRefresher$5$1.onNext(CarrierRefresher.java:199)
Local Variable: com.couchbase.client.core.config.refresher.CarrierRefresher$5$1#1
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:139)
Local Variable: rx.observers.SafeSubscriber#1
at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onNext(OperatorOnErrorResumeNextViaFunction.java:153)
Local Variable: rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4#1
at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onNext(OperatorOnErrorResumeNextViaFunction.java:153)
Local Variable: rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4#2
at rx.internal.operators.OperatorDoOnEach$1.onNext(OperatorDoOnEach.java:85)
Local Variable: java.lang.String#1613098
Local Variable: rx.internal.operators.OperatorDoOnEach$1#1
at rx.internal.operators.OperatorMap$MapSubscriber.onNext(OperatorMap.java:74)
at rx.internal.operators.OperatorDoOnEach$1.onNext(OperatorDoOnEach.java:85)
Local Variable: rx.internal.operators.OperatorDoOnEach$1#2
at com.couchbase.client.core.utils.Buffers$2$1.onNext(Buffers.java:84)
Local Variable: com.couchbase.client.core.utils.Buffers$2$1#1
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:139)
Local Variable: rx.observers.SafeSubscriber#2
at rx.observers.Subscribers$5.onNext(Subscribers.java:229)
at rx.internal.producers.SingleProducer.request(SingleProducer.java:65)
Local Variable: rx.observers.Subscribers$5#1
at rx.Subscriber.setProducer(Subscriber.java:209)
at rx.Subscriber.setProducer(Subscriber.java:205)
at rx.Subscriber.setProducer(Subscriber.java:205)
at rx.subjects.AsyncSubject.onCompleted(AsyncSubject.java:105)
Local Variable: com.couchbase.client.core.message.kv.GetBucketConfigResponse#1
Local Variable: rx.subjects.SubjectSubscriptionManager$SubjectObserver[]#1
at com.couchbase.client.core.endpoint.AbstractGenericHandler.completeResponse(AbstractGenericHandler.java:348)
Local Variable: rx.subjects.AsyncSubject#1
at com.couchbase.client.core.endpoint.AbstractGenericHandler.access$000(AbstractGenericHandler.java:66)
at com.couchbase.client.core.endpoint.AbstractGenericHandler$1.call(AbstractGenericHandler.java:366)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
Local Variable: rx.internal.schedulers.ScheduledAction#2
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
Local Variable: java.util.concurrent.Executors$RunnableAdapter#2
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
Local Variable: java.util.concurrent.FutureTask$Sync#2
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
Local Variable: java.util.concurrent.locks.ReentrantLock#87
Local Variable: java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask#2
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
Local Variable: java.util.concurrent.ThreadPoolExecutor$Worker#6
at java.lang.Thread.run(Thread.java:662)