简体   繁体   English

无法使用 ScalarDB 连接到我自己的 azure cosmos db 实例

[英]Failed to connect to my own azure cosmos db instance using ScalarDB

While i was testing the functionality of cosmosdb of the scalardb (2.2.0), i couldn't connect to the azure cosmos db instance via scalardb, when i try to initialize the DistributedTransaction or the Cosmos object with the following code当我测试 scalardb (2.2.0) 的 cosmosdb 功能时,当我尝试使用以下代码初始化 DistributedTransaction 或 Cosmos 对象时,我无法通过 scalardb 连接到 azure cosmos db 实例

DatabaseConfig cosmosDBConfig = new DatabaseConfig(f);
            Cosmos cosmos = new Cosmos(cosmosDBConfig);
DistributedTransactionManager db = Guice.createInjector(new TransactionModule(cosmosDBConfig))
        .getInstance(TransactionService.class); // failed here
// also tried with this
// Cosmos cosmos = new Cosmos(cosmosDBConfig); // fail here

and I got the following errors我收到以下错误

Network failure
java.lang.IllegalArgumentException: port out of range:-1
        at java.net.InetSocketAddress.checkPort(InetSocketAddress.java:143)
        at java.net.InetSocketAddress.<init>(InetSocketAddress.java:188)
        at reactor.netty.tcp.InetSocketAddressUtil.createForIpString(InetSocketAddressUtil.java:88)
        at reactor.netty.tcp.InetSocketAddressUtil.createInetSocketAddress(InetSocketAddressUtil.java:74)
        at reactor.netty.tcp.InetSocketAddressUtil.createUnresolved(InetSocketAddressUtil.java:48)
        at reactor.netty.tcp.TcpUtils._updatePort(TcpUtils.java:91)
        at reactor.netty.tcp.TcpUtils.updatePort(TcpUtils.java:73)
        at reactor.netty.tcp.TcpClient.lambda$port$5(TcpClient.java:411)
        at reactor.netty.tcp.TcpClientBootstrap.configure(TcpClientBootstrap.java:39)
        at reactor.netty.tcp.TcpClientBootstrap.configure(TcpClientBootstrap.java:39)
        at reactor.netty.tcp.TcpClientBootstrap.configure(TcpClientBootstrap.java:39)
        at reactor.netty.tcp.TcpClientBootstrap.configure(TcpClientBootstrap.java:39)
        at reactor.netty.tcp.TcpClient.connect(TcpClient.java:196)
        at reactor.netty.http.client.HttpClientFinalizer.connect(HttpClientFinalizer.java:68)
        at reactor.netty.http.client.HttpClientFinalizer.responseConnection(HttpClientFinalizer.java:85)
        at com.azure.cosmos.implementation.http.ReactorNettyClient.send(ReactorNettyClient.java:123)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.performRequest(RxGatewayStoreModel.java:159)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.read(RxGatewayStoreModel.java:91)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.invokeAsyncInternal(RxGatewayStoreModel.java:351)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.lambda$invokeAsync$3(RxGatewayStoreModel.java:366)
        at com.azure.cosmos.implementation.BackoffRetryUtility.lambda$executeRetry$0(BackoffRetryUtility.java:34)
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44)
        at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:79)
        at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46)
        at reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:76)
        at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:54)
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150)
        at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:117)
        at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
        at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Failed to retrieve database account information. java.lang.IllegalArgumentException: port out of range:-1
Fail to reach global gateway [scalardb-test-cosmos.cassandra.cosmos.azure.com], [null]
startRefreshLocationTimerAsync() - Unable to refresh database account from any location. Exception: CosmosException{userAgent=Linux/4.18.0-147.8.1.el8_1.x86_64 JRE/1.8.0_252 cosmosdb-java-sdk/4.1.0, error=null, resourceAddress='null', requestUri='null', statusCode=0, message=null, causeInfo=[class: class java.lang.IllegalArgumentException, message: port out of range:-1], responseHeaders={}, requestHeaders=[Accept=application/json, x-ms-date=Thu, 01 Oct 2020 09:28:49 GMT]}
CosmosException{userAgent=Linux/4.18.0-147.8.1.el8_1.x86_64 JRE/1.8.0_252 cosmosdb-java-sdk/4.1.0, error=null, resourceAddress='null', requestUri='null', statusCode=0, message=null, causeInfo=[class: class java.lang.IllegalArgumentException, message: port out of range:-1], responseHeaders={}, requestHeaders=[Accept=application/json, x-ms-date=Thu, 01 Oct 2020 09:28:49 GMT]}
        at com.azure.cosmos.BridgeInternal.createCosmosException(BridgeInternal.java:281)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.lambda$toDocumentServiceResponse$2(RxGatewayStoreModel.java:301)
        at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:88)
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onError(FluxMapFuseable.java:134)
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:165)
        at reactor.core.publisher.MonoSingle$SingleSubscriber.onError(MonoSingle.java:141)
        at reactor.core.publisher.Operators.error(Operators.java:196)
        at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:134)
        at reactor.core.publisher.MonoFlatMapMany.subscribeOrReturn(MonoFlatMapMany.java:49)
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57)
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
        at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:79)
        at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46)
        at reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:76)
        at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:54)
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150)
        at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:117)
        at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
        at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: port out of range:-1
        at java.net.InetSocketAddress.checkPort(InetSocketAddress.java:143)
        at java.net.InetSocketAddress.<init>(InetSocketAddress.java:188)
        at reactor.netty.tcp.InetSocketAddressUtil.createForIpString(InetSocketAddressUtil.java:88)
        at reactor.netty.tcp.InetSocketAddressUtil.createInetSocketAddress(InetSocketAddressUtil.java:74)
        at reactor.netty.tcp.InetSocketAddressUtil.createUnresolved(InetSocketAddressUtil.java:48)
        at reactor.netty.tcp.TcpUtils._updatePort(TcpUtils.java:91)
        at reactor.netty.tcp.TcpUtils.updatePort(TcpUtils.java:73)
        at reactor.netty.tcp.TcpClient.lambda$port$5(TcpClient.java:411)
        at reactor.netty.tcp.TcpClientBootstrap.configure(TcpClientBootstrap.java:39)
        at reactor.netty.tcp.TcpClientBootstrap.configure(TcpClientBootstrap.java:39)
        at reactor.netty.tcp.TcpClientBootstrap.configure(TcpClientBootstrap.java:39)
        at reactor.netty.tcp.TcpClientBootstrap.configure(TcpClientBootstrap.java:39)
        at reactor.netty.tcp.TcpClient.connect(TcpClient.java:196)
        at reactor.netty.http.client.HttpClientFinalizer.connect(HttpClientFinalizer.java:68)
        at reactor.netty.http.client.HttpClientFinalizer.responseConnection(HttpClientFinalizer.java:85)
        at com.azure.cosmos.implementation.http.ReactorNettyClient.send(ReactorNettyClient.java:123)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.performRequest(RxGatewayStoreModel.java:159)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.read(RxGatewayStoreModel.java:91)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.invokeAsyncInternal(RxGatewayStoreModel.java:351)
        at com.azure.cosmos.implementation.RxGatewayStoreModel.lambda$invokeAsync$3(RxGatewayStoreModel.java:366)
        at com.azure.cosmos.implementation.BackoffRetryUtility.lambda$executeRetry$0(BackoffRetryUtility.java:34)
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44)
        ... 15 more
Exception in thread "main" java.lang.NullPointerException
        at com.azure.cosmos.BridgeInternal.isEnableMultipleWriteLocations(BridgeInternal.java:163)
        at com.azure.cosmos.implementation.RxDocumentClientImpl.initializeGatewayConfigurationReader(RxDocumentClientImpl.java:264)
        at com.azure.cosmos.implementation.RxDocumentClientImpl.init(RxDocumentClientImpl.java:281)
        at com.azure.cosmos.implementation.AsyncDocumentClient$Builder.build(AsyncDocumentClient.java:203)
        at com.azure.cosmos.CosmosAsyncClient.<init>(CosmosAsyncClient.java:79)
        at com.azure.cosmos.CosmosClientBuilder.buildAsyncClient(CosmosClientBuilder.java:649)
        at com.azure.cosmos.CosmosClient.<init>(CosmosClient.java:30)
        at com.azure.cosmos.CosmosClientBuilder.buildClient(CosmosClientBuilder.java:661)
        at com.scalar.db.storage.cosmos.Cosmos.<init>(Cosmos.java:58)

However, I was able to insert data into the instance using the cosmosdb sdk (without scalardb) on both nodejs and java client.但是,我能够在 nodejs 和 java 客户端上使用 cosmosdb sdk(没有 scalardb)将数据插入到实例中。 Below is my scalardb configuration.下面是我的 scalardb 配置。 I even tried to run the scalardb initialization code on one of my azure vm but didn't work as well with the same error.我什至尝试在我的一个 azure vm 上运行 scalardb 初始化代码,但由于相同的错误而无法正常工作。 Below is my scalardb configuration下面是我的 scalardb 配置

scalar.db.contact_points=<InstanceContactPoints>
scalar.db.contact_port=<DefaultPort>
scalar.db.username=<InstanceUsername>
scalar.db.password=<InstancePassword>
scalar.db.storage=cosmos

I wonder if my configuration is wrong?不知道是不是我的配置有问题? How do I set it up?我该如何设置? Thanks in advance.提前致谢。

Your code looks good.你的代码看起来不错。 I'm wondering whether the scalar.db.contact_points has the port like ...:443 in your Scalar DB configuration.我想知道scalar.db.contact_points在您的 Scalar DB 配置中是否有类似...:443的端口。 The scalar.db.contract_port isn't required for Cosmos DB because the contact_point has the port. Cosmos DB 不需要scalar.db.contract_port ,因为 contact_point 具有端口。 You can remove the scalar.db.contact_port line.您可以删除scalar.db.contact_port行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM