question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Cosmos DB failed to initialize RntbdChannel when using both SDK 2.6.3 and 3.5.0

See original GitHub issue

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

  • azure-cosmosdb:2.6.3 to create a DAO
  • azure-cosmos:3.4.0 to use ChangeFeedProcessor

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

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:5 (3 by maintainers)

github_iconTop GitHub Comments

2reactions
avpinescommented, Mar 27, 2020

Any update regarding this? I’m getting the same error with com.microsoft.azure:azure-cosmosdb-spring-boot-starter:jar:2.2.3

0reactions
kushagraThaparcommented, Apr 29, 2021

Closing because of in-activity. Please re-open the issue if the bug still exists.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Diagnose and troubleshoot Azure Cosmos DB Java v4 SDK ...
Client initialization failure. The following exception is hit if the SDK isn't able to talk to the Azure Cosmos DB instance.
Read more >
Azure Cosmos DB SQL API client library for Python - NET
Use the Azure Cosmos DB SQL API SDK for Python to manage databases and the JSON documents they contain in this NoSQL database...
Read more >
Azure Cosmos DB SQL API client library for Python - PyPI
For example, if you try to create a container using an ID (name) that's already in use in your Cosmos DB database, a...
Read more >
Connection issues with Cosmos DB SDK - java - Stack Overflow
I have no access to the Azure control plane. Im getting RuntimeExceptions that says "Client initialization failed. Check if the endpoint is ...
Read more >
com.microsoft.azure : azure-cosmos-parent : 3.5.0
Microsoft Azure Cosmos DB SQL API - This package contains Microsoft Azure SDK for Azure Cosmos DB SQL API (with Reactive Extension RX...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found