Azure / azure-cosmosdb-java

Java Async SDK for SQL API of Azure Cosmos DB
MIT License
54 stars 61 forks source link

An exception 'java.lang.NoClassDefFoundError: Could not initialize class com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdClientChannelHandler' #292

Closed thanhngo219 closed 4 years ago

thanhngo219 commented 4 years ago

Describe the bug

2019/11/19 14:17:34.136 [rxnetty-nio-eventloop-5-1] WARN  i.n.c.AbstractChannelHandlerContext -
                An exception 'java.lang.NoClassDefFoundError: Could not initialize class com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdClientChannelHandler' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
java.lang.NoClassDefFoundError: Could not initialize class com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdClientChannelHandler
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdClientChannelPool.<init>(RntbdClientChannelPool.java:122)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdClientChannelPool.<init>(RntbdClientChannelPool.java:114)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdServiceEndpoint.<init>(RntbdServiceEndpoint.java:108)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdServiceEndpoint.<init>(RntbdServiceEndpoint.java:67)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdServiceEndpoint$Provider.lambda$get$1(RntbdServiceEndpoint.java:404)
    at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdServiceEndpoint$Provider.get(RntbdServiceEndpoint.java:403)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.RntbdTransportClient.invokeStoreAsync(RntbdTransportClient.java:147)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.TransportClient.invokeResourceOperationAsync(TransportClient.java:35)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.StoreReader.readFromStoreAsync(StoreReader.java:644)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.StoreReader.readFromReplicas(StoreReader.java:233)
    at com.microsoft.azure.cosmosdb.internal.directconnectivity.StoreReader.lambda$null$10(StoreReader.java:412)
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
    at rx.Observable.unsafeSubscribe(Observable.java:10327)
    at rx.internal.operators.OnSubscribeRedo$2.call(OnSubscribeRedo.java:273)
    at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73)
    at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52)
    at rx.internal.operators.OnSubscribeRedo$5.request(OnSubscribeRedo.java:361)
    at rx.Subscriber.setProducer(Subscriber.java:211)
    at rx.internal.operators.OnSubscribeRedo.call(OnSubscribeRedo.java:353)
    at rx.internal.operators.OnSubscribeRedo.call(OnSubscribeRedo.java:47)
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
    at rx.Observable.unsafeSubscribe(Observable.java:10327)
    at rx.Completable$10.call(Completable.java:588)
    at rx.Completable$10.call(Completable.java:567)
    at rx.Completable.unsafeSubscribe(Completable.java:2035)
    at rx.Completable.unsafeSubscribe(Completable.java:2083)
    at rx.Completable.unsafeSubscribe(Completable.java:2067)
    at rx.Completable$32.call(Completable.java:2253)
    at rx.Completable$32.call(Completable.java:2250)
    at rx.Observable.unsafeSubscribe(Observable.java:10327)
    at rx.internal.operators.OnSubscribeDelaySubscriptionOther.call(OnSubscribeDelaySubscriptionOther.java:80)
    at rx.internal.operators.OnSubscribeDelaySubscriptionOther.call(OnSubscribeDelaySubscriptionOther.java:31)
    at rx.Observable.unsafeSubscribe(Observable.java:10327)
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
    at rx.Observable.unsafeSubscribe(Observable.java:10327)
    at rx.internal.operators.OnSubscribeSwitchIfEmpty$ParentSubscriber.subscribe(OnSubscribeSwitchIfEmpty.java:101)
    at rx.internal.operators.OnSubscribeSwitchIfEmpty.call(OnSubscribeSwitchIfEmpty.java:52)
    at rx.internal.operators.OnSubscribeSwitchIfEmpty.call(OnSubscribeSwitchIfEmpty.java:31)
    at rx.Observable.unsafeSubscribe(Observable.java:10327)
    at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:248)
    at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:148)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
    at rx.internal.producers.SingleProducer.request(SingleProducer.java:65)
    at rx.Subscriber.setProducer(Subscriber.java:211)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
    at rx.internal.operators.SingleLiftObservableOperator$WrapSubscriberIntoSingle.onSuccess(SingleLiftObservableOperator.java:76)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.util.ScalarSynchronousSingle$1.call(ScalarSynchronousSingle.java:36)
    at rx.internal.util.ScalarSynchronousSingle$1.call(ScalarSynchronousSingle.java:32)
    at rx.Single.subscribe(Single.java:1979)
    at rx.Single$2$1.onSuccess(Single.java:687)
    at rx.Single$2$1.onSuccess(Single.java:683)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.util.ScalarSynchronousSingle$1.call(ScalarSynchronousSingle.java:36)
    at rx.internal.util.ScalarSynchronousSingle$1.call(ScalarSynchronousSingle.java:32)
    at rx.Single.subscribe(Single.java:1979)
    at rx.Single$2$1.onSuccess(Single.java:687)
    at rx.Single$2$1.onSuccess(Single.java:683)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.util.ScalarSynchronousSingle$1.call(ScalarSynchronousSingle.java:36)
    at rx.internal.util.ScalarSynchronousSingle$1.call(ScalarSynchronousSingle.java:32)
    at rx.Single.subscribe(Single.java:1979)
    at rx.Single$2$1.onSuccess(Single.java:687)
    at rx.Single$2$1.onSuccess(Single.java:683)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.SingleOperatorOnErrorResumeNext$2.onSuccess(SingleOperatorOnErrorResumeNext.java:63)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.OnSubscribeSingle$1.onCompleted(OnSubscribeSingle.java:55)
    at rx.internal.operators.NotificationLite.accept(NotificationLite.java:125)
    at rx.internal.operators.CachedObservable$ReplayProducer.replay(CachedObservable.java:403)
    at rx.internal.operators.CachedObservable$CacheState.dispatch(CachedObservable.java:220)
    at rx.internal.operators.CachedObservable$CacheState.onCompleted(CachedObservable.java:211)
    at rx.internal.operators.CachedObservable$CacheState$1.onCompleted(CachedObservable.java:179)
    at rx.internal.producers.SingleProducer.request(SingleProducer.java:75)
    at rx.Subscriber.setProducer(Subscriber.java:209)
    at rx.internal.operators.SingleLiftObservableOperator$WrapSubscriberIntoSingle.onSuccess(SingleLiftObservableOperator.java:76)
    at rx.internal.operators.SingleDoOnEvent$SingleDoOnEventSubscriber.onSuccess(SingleDoOnEvent.java:63)
    at rx.internal.operators.SingleDoOnEvent$SingleDoOnEventSubscriber.onSuccess(SingleDoOnEvent.java:63)
    at rx.internal.operators.SingleDoOnEvent$SingleDoOnEventSubscriber.onSuccess(SingleDoOnEvent.java:63)
    at rx.internal.util.ScalarSynchronousSingle$1.call(ScalarSynchronousSingle.java:36)
    at rx.internal.util.ScalarSynchronousSingle$1.call(ScalarSynchronousSingle.java:32)
    at rx.Single.subscribe(Single.java:1979)
    at rx.Single$2$1.onSuccess(Single.java:687)
    at rx.Single$2$1.onSuccess(Single.java:683)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.SingleOnSubscribeMap$MapSubscriber.onSuccess(SingleOnSubscribeMap.java:74)
    at rx.internal.operators.OnSubscribeSingle$1.onCompleted(OnSubscribeSingle.java:55)
    at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:656)
    at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568)
    at rx.internal.operators.OperatorMerge$MergeSubscriber.onCompleted(OperatorMerge.java:281)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onCompleted(OnSubscribeMap.java:97)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onCompleted(OnSubscribeMap.java:97)
    at rx.internal.operators.DeferredScalarSubscriber.complete(DeferredScalarSubscriber.java:102)
    at rx.internal.operators.DeferredScalarSubscriber.onCompleted(DeferredScalarSubscriber.java:73)
    at io.reactivex.netty.protocol.http.UnicastContentSubject$AutoReleaseByteBufOperator$1.onCompleted(UnicastContentSubject.java:260)
    at rx.internal.operators.BufferUntilSubscriber.onCompleted(BufferUntilSubscriber.java:156)
    at io.reactivex.netty.protocol.http.UnicastContentSubject.onCompleted(UnicastContentSubject.java:282)
    at io.reactivex.netty.protocol.http.client.ClientRequestResponseConverter$ResponseState.sendOnComplete(ClientRequestResponseConverter.java:413)
    at io.reactivex.netty.protocol.http.client.ClientRequestResponseConverter$ResponseState.access$500(ClientRequestResponseConverter.java:350)
    at io.reactivex.netty.protocol.http.client.ClientRequestResponseConverter.channelRead(ClientRequestResponseConverter.java:168)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:326)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:300)
    at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1478)
    at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1227)
    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1274)
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:503)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:442)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:281)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
    at io.reactivex.netty.metrics.BytesInspector.channelRead(BytesInspector.java:59)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at io.reactivex.netty.pipeline.InternalReadTimeoutHandler.channelRead(InternalReadTimeoutHandler.java:108)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514)
    at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:748)

To Reproduce I use

If I use DIRECT in DAO and GATEWAY in Change Feed Processor. Everything is fine. However, when I switch Change Feed Processor to DIRECT. It starts throwing the waring exception.

Expected behavior No warning exception when using DIRECT for both.

Actual behavior Throw An exception 'java.lang.NoClassDefFoundError: Could not initialize class com.microsoft.azure.cosmosdb.internal.directconnectivity.rntbd.RntbdClientChannelHandler'

Environment summary SDK Version: 2.6.3 Java JDK version: 1.8.0_211 OS Version: Linux, MacOSX

thanhngo219 commented 4 years ago

Reported in https://github.com/Azure/azure-sdk-for-java/issues/6992