0

I am implementing Cosmos DB in my Spring Boot project, and am getting error while connecting to Azure Cosmos DB.

POM.xml

<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-cosmosdb-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>spring-data-cosmosdb</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-documentdb</artifactId>
<version>2.4.6</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>

Repository

package com.staples.ctg.repository.cosmos;

import org.springframework.stereotype.Repository;

import com.microsoft.azure.spring.data.cosmosdb.repository.ReactiveCosmosRepository;
import com.staples.ctg.service.dto.cache.GenericCacheDTO;


@Repository
public interface SpotCacheRepository extends  ReactiveCosmosRepository <GenericCacheDTO, String> {

}

applicationProperties.yml

azure:        

cosmosdb:

    uri: Cosmos URI

    key: Key

    database: DB Name that I created

DTO

package com.staples.ctg.service.dto.cache;

@Document(collection="cosmos")
public class GenericCacheDTO {
    @Id
    private String id;
    @PartitionKey
    private String accountId;

}

When I spin up locally, I am getting below error

2020-02-14 12:20:32.922  INFO 22777 --- [  restartedMain] c.a.d.c.internal.RxDocumentClientImpl    : Initializing DocumentClient with serviceEndpoint [<Azure Cosmos URI>], connectionPolicy [ConnectionPolicy{requestTimeoutInMillis=60000, mediaRequestTimeoutInMillis=300000, connectionMode=DIRECT, maxPoolSize=1000, idleConnectionTimeoutInMillis=60000, userAgentSuffix=';spring-data/2.2.0;8d0607104487ba8c93ae7a32c5e20645d1bb21edf269625ead71da72d4877d65;', retryOptions=RetryOptions{maxRetryAttemptsOnThrottledRequests=9, maxRetryWaitTimeInSeconds=30}, enableEndpointDiscovery=true, preferredLocations=null, usingMultipleWriteLocations=false, inetSocketProxyAddress=null}], consistencyLevel [null], directModeProtocol [Tcp]
2020-02-14 12:20:32.922 DEBUG 22777 --- [  restartedMain] reactor.util.Loggers$LoggerFactory       : Using Slf4j logging framework
2020-02-14 12:20:32.979 DEBUG 22777 --- [  restartedMain] c.a.d.c.internal.GlobalEndpointManager   : registering a refresh in [300000] ms
2020-02-14 12:20:33.034 DEBUG 22777 --- [     parallel-1] c.a.d.c.internal.GlobalEndpointManager   : startRefreshLocationTimerAsync() - Invoking refresh, I was registered on [2020-02-14T12:20:32.985]
2020-02-14 12:20:33.035  INFO 22777 --- [     parallel-1] c.a.d.c.internal.RxDocumentClientImpl    : Getting database account endpoint from https:<Azure Cosmos URI>
2020-02-14 12:20:33.123 DEBUG 22777 --- [     parallel-1] reactor.netty.tcp.TcpResources           : [http] resources will use the default LoopResources: DefaultLoopResources {prefix=reactor-http, daemon=true, selectCount=8, workerCount=8}
2020-02-14 12:20:33.123 DEBUG 22777 --- [     parallel-1] reactor.netty.tcp.TcpResources           : [http] resources will use the default ConnectionProvider: PooledConnectionProvider {name=http, poolFactory=reactor.netty.resources.ConnectionProvider$$Lambda$2068/965477132@65222f44}
2020-02-14 12:20:33.130 DEBUG 22777 --- [     parallel-1] r.netty.resources.DefaultLoopEpoll       : Default Epoll support : false
2020-02-14 12:20:33.132 DEBUG 22777 --- [     parallel-1] r.netty.resources.DefaultLoopKQueue      : Default KQueue support : false
2020-02-14 12:20:33.162 DEBUG 22777 --- [     parallel-1] r.n.resources.PooledConnectionProvider   : Creating new client pool [reactor-netty-connection-pool] for <Azure Cosmos URI>
2020-02-14 12:20:33.183 ERROR 22777 --- [     parallel-1] reactor.core.scheduler.Schedulers        : Scheduler worker in group main failed with an uncaught exception

java.lang.NoSuchMethodError: reactor.util.concurrent.Queues.empty()Ljava/util/function/Supplier;
    at reactor.netty.internal.shaded.reactor.pool.SimpleFifoPool.<clinit>(SimpleFifoPool.java:35)
    at reactor.netty.internal.shaded.reactor.pool.PoolBuilder.build(PoolBuilder.java:333)
    at reactor.netty.internal.shaded.reactor.pool.PoolBuilder.fifo(PoolBuilder.java:321)
    at reactor.netty.resources.ConnectionProvider.lambda$fixed$3(ConnectionProvider.java:197)
    at reactor.netty.resources.PooledConnectionProvider$PooledConnectionAllocator.<init>(PooledConnectionProvider.java:237)
    at reactor.netty.resources.PooledConnectionProvider.lambda$acquire$2(PooledConnectionProvider.java:154)
    at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
    at reactor.netty.resources.PooledConnectionProvider.lambda$acquire$3(PooledConnectionProvider.java:148)
    at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:54)
    at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.lambda$subscribe$0(HttpClientConnect.java:319)
    at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:54)
    at reactor.core.publisher.Mono.subscribe(Mono.java:3088)
    at reactor.core.publisher.FluxRetryPredicate$RetryPredicateSubscriber.resubscribe(FluxRetryPredicate.java:123)
    at reactor.core.publisher.MonoRetryPredicate.subscribe(MonoRetryPredicate.java:51)
    at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.subscribe(HttpClientConnect.java:322)
    at reactor.core.publisher.MonoFlatMapMany.subscribe(MonoFlatMapMany.java:49)
    at reactor.core.publisher.MonoSingle.subscribe(MonoSingle.java:58)
    at reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)
    at reactor.core.publisher.MonoMapFuseable.subscribe(MonoMapFuseable.java:59)
    at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)
    at reactor.core.publisher.FluxSourceMono.subscribe(FluxSourceMono.java:46)
    at reactor.core.publisher.MonoSingle.subscribe(MonoSingle.java:58)
    at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53)
    at reactor.core.publisher.Mono.subscribe(Mono.java:3088)
    at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:82)
    at reactor.core.publisher.MonoRetryWhen.subscribe(MonoRetryWhen.java:50)
    at reactor.core.publisher.FluxSourceMono.subscribe(FluxSourceMono.java:46)
    at reactor.core.publisher.FluxOnErrorResume.subscribe(FluxOnErrorResume.java:47)
    at reactor.core.publisher.FluxMap.subscribe(FluxMap.java:62)
    at reactor.core.publisher.FluxPeek.subscribe(FluxPeek.java:83)
    at reactor.core.publisher.FluxMap.subscribe(FluxMap.java:62)
    at reactor.core.publisher.FluxPeek.subscribe(FluxPeek.java:83)
    at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:55)
    at reactor.core.publisher.FluxPeek.subscribe(FluxPeek.java:83)
    at reactor.core.publisher.MonoSingle.subscribe(MonoSingle.java:58)
    at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)
    at reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)
    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:50)
    at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:27)
    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)

2020-02-14 12:20:46.801  WARN 22777 --- [scoveryClient-1] c.netflix.discovery.TimedSupervisorTask  : task supervisor timed out

java.util.concurrent.TimeoutException: null
3
  • Are you able to build mvn install Commented Feb 16, 2020 at 8:42
  • I generally run in debug mode from STS. The error I pasted is from STS IDE Console. I just tried 'mvn install' from Terminal, and I got different error and that sounds very strange as I do have those in application-local.yml file .*************************** APPLICATION FAILED TO START ***************************Description: Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'azure.cosmosdb' to com.microsoft.azure.spring.autoconfigure.cosmosdb.CosmosDBProperties failed: Commented Feb 17, 2020 at 4:44
  • Property: azure.cosmosdb.key Value: null Reason: must not be empty Property: azure.cosmosdb.database Value: null Reason: must not be empty Property: azure.cosmosdb.uri Value: null Reason: must not be empty Action: Update your application's configuration Commented Feb 17, 2020 at 4:49

1 Answer 1

3

This looks like a reactor-core incorrect version issue.

This dependency might be bringing an older version of reactor-core.

<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-cosmosdb-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>

Two ways to solve this issue:

  1. Try excluding reactor-core from this dependency.

  2. Try adding reactor-core dependency - 3.3.0 or higher.

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you Kushagra for your response. With updated version, the error that I was getting was gone, but getting a different error while generating classes in target folder. My application was generated with jHipster, so am not sure if Jhipster is compatible with Cosmos DB SQL API. Jhipster website (jhipster.tech/azure/#nosql-databases) doesn't talk anything about Cosmos DB SQL API, so unsure if it is compatible. Appreciate if any thoughts on this .

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.