Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MongoDB driver failing DNS Lookup #27627

Closed
mazenkhalil opened this issue Aug 31, 2022 · 33 comments · Fixed by #27896
Closed

MongoDB driver failing DNS Lookup #27627

mazenkhalil opened this issue Aug 31, 2022 · 33 comments · Fixed by #27896
Assignees
Labels
area/mongodb kind/bug Something isn't working
Milestone

Comments

@mazenkhalil
Copy link
Contributor

mazenkhalil commented Aug 31, 2022

Describe the bug

Upon upgrading to 2.12.0.Final, Quarkus application fails to establish mongodb+srv connection due to DNS lookup issue.

Apart from the stacktrace below, the below WARN message get logged as well.

2022-08-31 15:12:46,849 WARN  [io.net.res.dns.DnsServerAddressStreamProviders] (build-52) Can not find {} in the classpath, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS.
2022-08-31 15:13:06,273 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (vert.x-eventloop-thread-1) HTTP Request to / failed, error id: 23287a91-dbad-4d42-85db-5f074c41ec6e-1: io.quarkus.cache.CacheException: com.mongodb.MongoConfigurationException: Failed looking up TXT record for host cluster0.3olzb.mongodb.net
	at io.quarkus.cache.runtime.CacheResultInterceptor$1.apply(CacheResultInterceptor.java:78)
	at io.quarkus.cache.runtime.CacheResultInterceptor$1.apply(CacheResultInterceptor.java:63)
	at io.smallrye.context.impl.wrappers.SlowContextualFunction.apply(SlowContextualFunction.java:21)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:68)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage$CompletionStageUniSubscription.forwardResult(UniCreateFromCompletionStage.java:63)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2325)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:144)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage$CompletionStageUniSubscription.forward(UniCreateFromCompletionStage.java:51)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage.subscribe(UniCreateFromCompletionStage.java:35)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:81)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem$KnownItemSubscription.forward(UniCreateFromKnownItem.java:38)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem$KnownItemSubscription.access$100(UniCreateFromKnownItem.java:26)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem.subscribe(UniCreateFromKnownItem.java:23)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransform.subscribe(UniOnItemTransform.java:22)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:81)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage$CompletionStageUniSubscription.forwardResult(UniCreateFromCompletionStage.java:63)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2325)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:144)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage$CompletionStageUniSubscription.forward(UniCreateFromCompletionStage.java:51)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage.subscribe(UniCreateFromCompletionStage.java:35)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransform.subscribe(UniOnItemTransform.java:22)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniMemoizeOp.subscribe(UniMemoizeOp.java:84)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransform.subscribe(UniOnItemTransform.java:22)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransform.subscribe(UniOnItemTransform.java:22)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransform.subscribe(UniOnItemTransform.java:22)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniMemoizeOp.subscribe(UniMemoizeOp.java:84)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.groups.UniSubscribe.withSubscriber(UniSubscribe.java:52)
	at io.quarkus.vertx.http.runtime.security.HttpSecurityRecorder$2.handle(HttpSecurityRecorder.java:113)
	at io.quarkus.vertx.http.runtime.security.HttpSecurityRecorder$2.handle(HttpSecurityRecorder.java:60)
	at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:173)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:140)
	at io.quarkus.vertx.http.runtime.filters.accesslog.AccessLogHandler.handle(AccessLogHandler.java:151)
	at io.quarkus.vertx.http.runtime.filters.accesslog.AccessLogHandler.handle(AccessLogHandler.java:93)
	at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:173)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:140)
	at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$5.handle(VertxHttpHotReplacementSetup.java:196)
	at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$5.handle(VertxHttpHotReplacementSetup.java:185)
	at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141)
	at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.mongodb.MongoConfigurationException: Failed looking up TXT record for host cluster0.3olzb.mongodb.net
	at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:133)
	at com.mongodb.ConnectionString.<init>(ConnectionString.java:397)
	at io.quarkus.mongodb.runtime.MongoClients.createMongoConfiguration(MongoClients.java:262)
	at io.quarkus.mongodb.runtime.MongoClients.createReactiveMongoClient(MongoClients.java:126)
	at io.quarkus.mongodb.runtime.MongoClients_Subclass.createReactiveMongoClient$$superforward1(Unknown Source)
	at io.quarkus.mongodb.runtime.MongoClients_Subclass$$function$$5.apply(Unknown Source)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:53)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:51)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(Unknown Source)
	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:40)
	at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
	at io.quarkus.mongodb.runtime.MongoClients_Subclass.createReactiveMongoClient(Unknown Source)
	at io.quarkus.mongodb.runtime.MongoClientRecorder.lambda$reactiveMongoClientSupplier$1(MongoClientRecorder.java:68)
	at io.quarkus.mongodb.runtime.MongoClientRecorder$MongoClientSupplier.get(MongoClientRecorder.java:57)
	at io.quarkus.mongodb.reactive.ReactiveMongoClient_afcbcf6dad636d255df730977b21f823ec3c9f2e_Synthetic_Bean.create(Unknown Source)
	at io.quarkus.mongodb.reactive.ReactiveMongoClient_afcbcf6dad636d255df730977b21f823ec3c9f2e_Synthetic_Bean.create(Unknown Source)
	at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:111)
	at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
	at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:32)
	at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
	at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
	at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:32)
	at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:19)
	at io.quarkus.mongodb.reactive.ReactiveMongoClient_afcbcf6dad636d255df730977b21f823ec3c9f2e_Synthetic_ClientProxy.arc$delegate(Unknown Source)
	at io.quarkus.mongodb.reactive.ReactiveMongoClient_afcbcf6dad636d255df730977b21f823ec3c9f2e_Synthetic_ClientProxy.getDatabase(Unknown Source)
	at com.elastico.platform.dao.nosql.mongodb.MongoDao.getDatabase(MongoDao.java:229)
	at com.elastico.platform.dao.nosql.mongodb.MongoDao.getCollection(MongoDao.java:225)
	at com.elastico.platform.dao.nosql.mongodb.MongoDao.selectWhere(MongoDao.java:66)
	at com.elastico.platform.metadata.definition.MetadataDefinitionManager.createMetadataDefinition(MetadataDefinitionManager.java:44)
	at com.elastico.platform.metadata.definition.MetadataDefinitionManager.getMetadataDefinitionByDesignName(MetadataDefinitionManager.java:32)
	at com.elastico.platform.metadata.definition.MetadataDefinitionManager_Subclass.getMetadataDefinitionByDesignName$$superforward1(Unknown Source)
	at com.elastico.platform.metadata.definition.MetadataDefinitionManager_Subclass$$function$$4.apply(Unknown Source)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:53)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:51)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(Unknown Source)
	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:49)
	at io.quarkus.cache.runtime.CacheResultInterceptor$1.apply(CacheResultInterceptor.java:68)
	... 77 more
Caused by: com.mongodb.MongoConfigurationException: Unable to look up TXT record for host cluster0.3olzb.mongodb.net
	at io.quarkus.mongodb.runtime.dns.MongoDnsClient.resolveTxtRequest(MongoDnsClient.java:152)
	at io.quarkus.mongodb.runtime.dns.MongoDnsClient.getResourceRecordData(MongoDnsClient.java:98)
	at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:114)
	... 117 more
Caused by: java.lang.IllegalStateException: The current thread cannot be blocked: vert.x-eventloop-thread-1
	at io.smallrye.mutiny.operators.uni.UniBlockingAwait.await(UniBlockingAwait.java:30)
	at io.smallrye.mutiny.groups.UniAwait.atMost(UniAwait.java:65)
	at io.quarkus.mongodb.runtime.dns.MongoDnsClient.resolveTxtRequest(MongoDnsClient.java:150)
	... 119 more

Expected behavior

TXT DNS lookup should be done successfully

Actual behavior

No response

How to Reproduce?

No response

Output of uname -a or ver

Darwin Mazens-MacBook-Pro.local 21.6.0 Darwin Kernel Version 21.6.0: Wed Aug 10 14:28:23 PDT 2022; root:xnu-8020.141.5~2/RELEASE_ARM64_T6000 arm64

Output of java -version

openjdk version "17.0.4.1" 2022-08-12 OpenJDK Runtime Environment Temurin-17.0.4.1+1 (build 17.0.4.1+1) OpenJDK 64-Bit Server VM Temurin-17.0.4.1+1 (build 17.0.4.1+1, mixed mode)

GraalVM version (if different from Java)

No response

Quarkus version or git rev

2.12.0.Final

Build tool (ie. output of mvnw --version or gradlew --version)

quarkus CLI

Additional information

No response

@mazenkhalil mazenkhalil added the kind/bug Something isn't working label Aug 31, 2022
@quarkus-bot
Copy link

quarkus-bot bot commented Aug 31, 2022

/cc @evanchooly, @loicmathieu

@mazenkhalil
Copy link
Contributor Author

This issue might be related #27605

@mazenkhalil
Copy link
Contributor Author

Using 2.11.3.Final, the WARN message below get logged, but MongoDB DNS lookup work as expected with no issues.

2022-08-31 15:12:46,849 WARN  [io.net.res.dns.DnsServerAddressStreamProviders] (build-52) Can not find {} in the classpath, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS.

@geoand
Copy link
Contributor

geoand commented Sep 1, 2022

@cescoffier IIRC, you had at some point looked at Mongo DNS issues, right? Does this ring any bells?

@cescoffier
Copy link
Member

It's not an issue with the netty log.
@evanchooly recently changed the DNS resolution in Mongo to use the Vert.x DNS client. I was thinking it was an opt-in, but maybe it got enabled by default.

@geoand
Copy link
Contributor

geoand commented Sep 1, 2022

@evanchooly recently changed the DNS resolution in Mongo to use the Vert.x DNS client

For future reference, the change was done in #26388

@evanchooly
Copy link
Member

It uses vert.x DNS by default everywhere to make the behavior consistent whether in native or not. It should be falling back, though, so I'll double check what's happening there.

@mazenkhalil
Copy link
Contributor Author

After some debugging, I found out the issue is originated from the OIDC tenant resolver. Adding .runSubscriptionOn(Arc.container().getExecutorService()) or .runSubscriptionOn(Infrastructure.getDefaultWorkerPool()) overcomes the issue.

@cescoffier I recall we discussed similar issue earlier (#24156 (comment)) if that would help.

@cescoffier
Copy link
Member

Is your tenant resolver using Mongo? (Trying to join the dots)

@mazenkhalil
Copy link
Contributor Author

mazenkhalil commented Sep 2, 2022

Yes, resolving the tenant involves accessing the DB for the first time (ReactiveMongoClient being used). Then the result get cached with Caffeine.

@geoand
Copy link
Contributor

geoand commented Sep 12, 2022

@evanchooly have you been able to figure this one out?

@evanchooly
Copy link
Member

I haven't had a chance yet, no. There was a potential OIDC wrinkle that I was hoping more info would come out about but maybe it's not an issue here.

@geoand
Copy link
Contributor

geoand commented Sep 12, 2022

Hm... I don't see any OIDC complication with this one

@evanchooly
Copy link
Member

clement had linked to a possibly related issue but it looks like nothing came of it. it was mostly me being hopeful :)

@cescoffier
Copy link
Member

To make progress, I would need a reproducer.
To be honest, I can't see why changing the worker thread pool would "make it work". There is something else...

@cescoffier cescoffier added the triage/needs-reproducer We are waiting for a reproducer. label Sep 12, 2022
@mazenkhalil
Copy link
Contributor Author

I will provide a reproducer shortly.

@mazenkhalil
Copy link
Contributor Author

To make progress, I would need a reproducer.
To be honest, I can't see why changing the worker thread pool would "make it work". There is something else...

Below the reproducer and the (workaround).
https://github.com/mazenkhalil/quarkus-mongodb-dns-issue-reproducer-27627.git

Please note that changing the worker thread pool would make it work only when @CacheResult is present.

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

Thanks a lot for the reproducer - I can indeed see the same error

@geoand geoand removed the triage/needs-reproducer We are waiting for a reproducer. label Sep 13, 2022
@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

The problem is here - we can't block on the event loop

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

A slightly cleaner stacktrace can be obtained if we use quarkus.arc.dev-mode.monitoring-enabled=false.

java.lang.IllegalStateException: The current thread cannot be blocked: vert.x-eventloop-thread-3
	at io.smallrye.mutiny.operators.uni.UniBlockingAwait.await(UniBlockingAwait.java:30)
	at io.smallrye.mutiny.groups.UniAwait.atMost(UniAwait.java:65)
	at io.quarkus.mongodb.runtime.dns.MongoDnsClient.resolveTxtRequest(MongoDnsClient.java:150)
	at io.quarkus.mongodb.runtime.dns.MongoDnsClient.getResourceRecordData(MongoDnsClient.java:98)
	at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:114)
	at com.mongodb.ConnectionString.<init>(ConnectionString.java:397)
	at io.quarkus.mongodb.runtime.MongoClients.createMongoConfiguration(MongoClients.java:262)
	at io.quarkus.mongodb.runtime.MongoClients.createReactiveMongoClient(MongoClients.java:126)
	at io.quarkus.mongodb.runtime.MongoClientRecorder.lambda$reactiveMongoClientSupplier$1(MongoClientRecorder.java:68)
	at io.quarkus.mongodb.runtime.MongoClientRecorder$MongoClientSupplier.get(MongoClientRecorder.java:57)
	at io.quarkus.mongodb.reactive.ReactiveMongoClient_afcbcf6dad636d255df730977b21f823ec3c9f2e_Synthetic_Bean.create(Unknown Source)
	at io.quarkus.mongodb.reactive.ReactiveMongoClient_afcbcf6dad636d255df730977b21f823ec3c9f2e_Synthetic_Bean.create(Unknown Source)
	at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:111)
	at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
	at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:32)
	at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
	at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
	at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:32)
	at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:19)
	at io.quarkus.mongodb.reactive.ReactiveMongoClient_afcbcf6dad636d255df730977b21f823ec3c9f2e_Synthetic_ClientProxy.arc$delegate(Unknown Source)
	at io.quarkus.mongodb.reactive.ReactiveMongoClient_afcbcf6dad636d255df730977b21f823ec3c9f2e_Synthetic_ClientProxy.getDatabase(Unknown Source)
	at org.acme.TenantConfigResolver.getTenantConfig(TenantConfigResolver.java:32)
	at org.acme.TenantConfigResolver_Subclass.getTenantConfig$$superforward1(Unknown Source)
	at org.acme.TenantConfigResolver_Subclass$$function$$1.apply(Unknown Source)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:53)
	at io.quarkus.cache.runtime.CacheResultInterceptor$1.apply(CacheResultInterceptor.java:68)
	at io.quarkus.cache.runtime.CacheResultInterceptor$1.apply(CacheResultInterceptor.java:63)
	at io.smallrye.context.impl.wrappers.SlowContextualFunction.apply(SlowContextualFunction.java:21)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:68)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage$CompletionStageUniSubscription.forwardResult(UniCreateFromCompletionStage.java:63)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2325)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:144)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage$CompletionStageUniSubscription.forward(UniCreateFromCompletionStage.java:51)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromCompletionStage.subscribe(UniCreateFromCompletionStage.java:35)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniMemoizeOp.subscribe(UniMemoizeOp.java:84)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransform.subscribe(UniOnItemTransform.java:22)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransform.subscribe(UniOnItemTransform.java:22)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransform.subscribe(UniOnItemTransform.java:22)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.operators.uni.UniMemoizeOp.subscribe(UniMemoizeOp.java:84)
	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
	at io.smallrye.mutiny.groups.UniSubscribe.withSubscriber(UniSubscribe.java:52)
	at io.quarkus.vertx.http.runtime.security.HttpSecurityRecorder$2.handle(HttpSecurityRecorder.java:113)
	at io.quarkus.vertx.http.runtime.security.HttpSecurityRecorder$2.handle(HttpSecurityRecorder.java:60)
	at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:173)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:140)
	at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$5.handle(VertxHttpHotReplacementSetup.java:196)
	at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$5.handle(VertxHttpHotReplacementSetup.java:185)
	at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141)
	at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:833)
Resulted in: com.mongodb.MongoConfigurationException: Unable to look up TXT record for host <URL>
	at io.quarkus.mongodb.runtime.dns.MongoDnsClient.resolveTxtRequest(MongoDnsClient.java:152)
	... 67 more
Resulted in: com.mongodb.MongoConfigurationException: Failed looking up TXT record for host <URL>
	at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:133)
	... 65 more
Resulted in: io.quarkus.cache.CacheException: com.mongodb.MongoConfigurationException: Failed looking up TXT record for host <URL>
	at io.quarkus.cache.runtime.CacheResultInterceptor$1.apply(CacheResultInterceptor.java:78)
	... 44 more

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

I think we have to revert the use of the reactive DNS client as it can cause these sorts of issues all too easily.
Either that, or we manually perform the DNS lookups at application start-up so they are available for our reactive DNS client and therefore avoid blocking.

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

I should clarify that what I propose above can work because we do know the value of the connection string at startup. The downside is that we would need to copy a lot of mongo code that parses it

@cescoffier
Copy link
Member

cescoffier commented Sep 13, 2022

Hum, in this case, like in Vault, we need an extra Vert.x instance. It's ugly, but it's the only way to avoid that kind of issue.

@cescoffier
Copy link
Member

Hum, won't be enough. As the proposed Mongo SPI is blocking, we cannot use it from an I/O thread.
However, switching to the regular blocking DNS client (JNDI) won't work either, as you will be blocking the I/O thread.

I believe the Mongo Client initial connection must be off-loaded to a worker thread because this is blocking the DNS query. However, Mongo is lazy, so we do not know when that initial request will happen.

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

I don't think we'll need a new Vert.x instance, because we can do the parsing after Vert.x is ready - but before any of the Mongo CDI beans are created (which is when the parsing is first done).

But like I said, this will require us to copy some of the code the Mongo driver uses (in ConnectionString)... Are we okay with that?

@cescoffier
Copy link
Member

We could imagine doing a "ping" just after the initialization of the client (in the recorder) to force the initialization (and DNS lookup) to happen.

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

Hum, won't be enough. As the proposed Mongo SPI is blocking, we cannot use it from an I/O thread. However, switching to the regular blocking DNS client (JNDI) won't work either, as you will be blocking the I/O thread.

I believe the Mongo Client initial connection must be off-loaded to a worker thread because this is blocking the DNS query. However, Mongo is lazy, so we do not know when that initial request will happen.

My idea is that we do the lookup at startup so our MongoDNSClient will then just get the already resolved data

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

We could imagine doing a "ping" just after the initialization of the client (in the recorder) to force the initialization (and DNS lookup) to happen.

Yeah, that's also worth looking into.

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

@evanchooly do you want to take a look or should I?

@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

I actually have another idea which I'll try out soon and report back

geoand added a commit to geoand/quarkus that referenced this issue Sep 13, 2022
This is done by performing the DNS lookup at application startup
and caching the results

Fixes: quarkusio#27627
geoand added a commit to geoand/quarkus that referenced this issue Sep 13, 2022
This is done by performing the DNS lookup at application startup
and caching the results

Fixes: quarkusio#27627
@geoand
Copy link
Contributor

geoand commented Sep 13, 2022

#27896 is what I have in mind

geoand added a commit that referenced this issue Sep 13, 2022
Ensure that Mongo DNS lookup does not happen on the event loop
@quarkus-bot quarkus-bot bot added this to the 2.13 - main milestone Sep 13, 2022
Dairdevil pushed a commit to Dairdevil/quarkus that referenced this issue Sep 14, 2022
This is done by performing the DNS lookup at application startup
and caching the results

Fixes: quarkusio#27627
Dairdevil pushed a commit to Dairdevil/quarkus that referenced this issue Sep 14, 2022
commit 62657c0
Merge: f7b6773 2928919
Author: Alasdair Preston <apreston@redhat.com>
Date:   Wed Sep 14 11:08:51 2022 +0100

    Merge branch 'bugfix/26587-openshift-route-named-port' of github.com:Dairdevil/quarkus into bugfix/26587-openshift-route-named-port

commit f7b6773
Author: Michal Vavřík <mvavrik@redhat.com>
Date:   Tue Sep 13 21:10:54 2022 +0200

    Generate Quarkus Maven Plugin Config Docs

    resolves: quarkusio#1204

commit 9bfd447
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Sep 9 21:09:37 2022 +0000

    Bump kafka3.version from 3.2.1 to 3.2.2

    Bumps `kafka3.version` from 3.2.1 to 3.2.2.

    Updates `kafka-clients` from 3.2.1 to 3.2.2

    Updates `kafka-streams` from 3.2.1 to 3.2.2

    Updates `kafka-streams-test-utils` from 3.2.1 to 3.2.2

    Updates `kafka_2.13` from 3.2.1 to 3.2.2

    ---
    updated-dependencies:
    - dependency-name: org.apache.kafka:kafka-clients
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: org.apache.kafka:kafka-streams
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: org.apache.kafka:kafka-streams-test-utils
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: org.apache.kafka:kafka_2.13
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit ebc0112
Author: Sanne Grinovero <sanne@hibernate.org>
Date:   Tue Sep 13 17:28:18 2022 +0100

    Transform DB2 driver to Jakarta APIs

commit 3bc918c
Author: Réda Housni Alaoui <reda-alaoui@hey.com>
Date:   Fri Jul 22 22:15:40 2022 +0200

    Quarkus NativeImageBuildStep fails with perm denied with docker rootless

commit 604bab7
Author: Auri Munoz <amunozhe@redhat.com>
Date:   Fri Sep 9 16:02:49 2022 +0200

    update Stork version to align with k8s client 6.x

    Related to quarkusio#6588

commit 59c4822
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Sep 13 23:01:39 2022 +0000

    Bump actions/download-artifact from 1 to 3

    Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 1 to 3.
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](actions/download-artifact@v1...v3)

    ---
    updated-dependencies:
    - dependency-name: actions/download-artifact
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit d1c8566
Author: Zheng Feng <zh.feng@gmail.com>
Date:   Wed Jun 15 08:58:13 2022 +0800

    Improve Narayana recovery manager service and integrate it with agroal

commit beab85f
Author: Holly Cummins <hcummins@redhat.com>
Date:   Fri Sep 9 20:26:25 2022 +0100

    Cross-link to quarkiverse wiki

commit 701b930
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Sep 13 09:55:11 2022 +0000

    Bump liquibase.version from 4.15.0 to 4.16.0

    Bumps `liquibase.version` from 4.15.0 to 4.16.0.

    Updates `liquibase-core` from 4.15.0 to 4.16.0
    - [Release notes](https://github.com/liquibase/liquibase/releases)
    - [Changelog](https://github.com/liquibase/liquibase/blob/master/changelog.txt)
    - [Commits](liquibase/liquibase@v4.15.0...v4.16.0)

    Updates `liquibase-mongodb` from 4.15.0 to 4.16.0
    - [Release notes](https://github.com/liquibase/liquibase-mongodb/releases)
    - [Changelog](https://github.com/liquibase/liquibase-mongodb/blob/main/RELEASE.md)
    - [Commits](liquibase/liquibase-mongodb@liquibase-mongodb-4.15.0...liquibase-mongodb-4.16.0)

    ---
    updated-dependencies:
    - dependency-name: org.liquibase:liquibase-core
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.liquibase.ext:liquibase-mongodb
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 22c71e9
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Sep 12 21:22:57 2022 +0000

    Bump micrometer-bom from 1.9.3 to 1.9.4

    Bumps [micrometer-bom](https://github.com/micrometer-metrics/micrometer) from 1.9.3 to 1.9.4.
    - [Release notes](https://github.com/micrometer-metrics/micrometer/releases)
    - [Commits](micrometer-metrics/micrometer@v1.9.3...v1.9.4)

    ---
    updated-dependencies:
    - dependency-name: io.micrometer:micrometer-bom
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit ebf6e16
Author: Martin Kouba <mkouba@redhat.com>
Date:   Tue Sep 13 14:19:16 2022 +0200

    ArC - support non-producer methods annotated with @startup

    - resolves quarkusio#11710

commit 5b677dc
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Tue Sep 13 15:25:04 2022 +0300

    Properly support generic bounds for ParamConverterProvider classes

    Fixes: quarkusio#27892

commit f2382b1
Author: Holly Cummins <hcummins@redhat.com>
Date:   Tue Sep 13 15:22:21 2022 +0100

    Allow some PRs to run workflows, even when repo settings require approval for all non-committer PRs

commit 492b184
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 14:45:04 2022 +0200

    Add more info about releasing to CONTRIBUTING.md

commit f6053e0
Author: Réda Housni Alaoui <reda-alaoui@hey.com>
Date:   Thu Aug 4 21:36:36 2022 +0200

    Document the release process

    Fix quarkusio#26901

commit db141a2
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Tue Sep 13 14:50:18 2022 +0300

    Ensure that Mongo DNS lookup does not happen on the event loop

    This is done by performing the DNS lookup at application startup
    and caching the results

    Fixes: quarkusio#27627

commit 8baab4e
Author: Katia Aresti <karesti@redhat.com>
Date:   Fri Sep 9 12:33:14 2022 +0200

    Create Infinispan caches on first access with the minimal config if they don't exist

commit 24bcf7c
Author: Ozan Gunalp <ozangunalp@gmail.com>
Date:   Tue Aug 23 19:37:47 2022 +0300

    Kafka dev ui as a dev console route

    minor fixes for UI

commit 73d2c6f
Author: Emiliia Nesterovych <emiliia.nesterovych@gmail.com>
Date:   Wed Aug 3 13:17:41 2022 +0200

    extend kafka dev ui

commit d27a75a
Author: Oleksiy Lukin <alukin@gmail.com>
Date:   Mon Aug 1 12:45:58 2022 +0200

    implement basic kafka dev ui

commit 11e984f
Author: Roberto Cortez <radcortez@yahoo.com>
Date:   Mon Sep 5 17:43:03 2022 +0100

    Properly generate documents from config groups in ConfigMapping

commit 36f1509
Author: xstefank <xstefank122@gmail.com>
Date:   Fri Sep 9 11:07:19 2022 +0200

    Upgrade SmallRye Health to 3.3.0

commit 6fd7f1c
Author: Tomas Hofman <thofman@redhat.com>
Date:   Fri Sep 9 14:54:02 2022 +0200

    Rest client config: Remove incorrect note about the proxyAddress property being only applicable to reactive clients

commit efddfeb
Author: Tomas Hofman <thofman@redhat.com>
Date:   Fri Sep 9 14:46:49 2022 +0200

    Add RestClientBuilder factories

    These factories should make it easier for developers to obtain a
    RestClientBuilder instance preconfigured according to current
    application config. The builder can be further tweaked and then used to
    programatically build a rest client proxy.

commit 28e2306
Author: Tomas Hofman <thofman@redhat.com>
Date:   Thu Sep 8 14:47:56 2022 +0200

    Rest client classic: make configuration methods in RestClientBase protected

    This is to accommodate kogito extension that accesses these methods.

commit 8e4d836
Author: Loïc Mathieu <loikeseke@gmail.com>
Date:   Wed Aug 31 11:13:57 2022 +0200

    Improve command mode guide

commit a982c88
Author: vsevel <vincent@sevel.eu>
Date:   Tue Sep 13 09:52:25 2022 +0200

    Bump jboss-logmanager 1.1.1

commit 1bfd5e5
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Mon Sep 12 10:16:13 2022 +0300

    Return proper response code when an HTTP request contains an invalid Q value

    Closes: quarkusio#27852

commit af22e7c
Author: Clement Escoffier <clement@apache.org>
Date:   Tue Sep 13 10:27:57 2022 +0200

    Use default host and port when the service instance does not set them

commit 7cb775e
Author: Clement Escoffier <clement@apache.org>
Date:   Tue Sep 13 09:03:49 2022 +0200

    Fix request context leak in the Funqy Knative runtime.

commit a861e54
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Mon Sep 12 13:13:03 2022 +0300

    Allow setting a custom logging filter on logging handlers

    Resolves: quarkusio#25981

commit 2928919
Merge: 71ae072 9402450
Author: Alasdair Preston <apreston@redhat.com>
Date:   Wed Sep 14 11:04:37 2022 +0100

    Merge branch 'main' of github.com:Dairdevil/quarkus into bugfix/26587-openshift-route-named-port

commit 9402450
Merge: b963b7e dba1b1e
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Wed Sep 14 10:42:59 2022 +0200

    Merge pull request quarkusio#26369 from michalvavrik/feature/mvn-docs-generator

    Generate Quarkus Maven Plugin Config Docs

commit b963b7e
Merge: 3ab09ab 06caa54
Author: Clement Escoffier <clement@apache.org>
Date:   Wed Sep 14 10:32:57 2022 +0200

    Merge pull request quarkusio#27847 from quarkusio/dependabot/maven/kafka3.version-3.2.2

    Bump kafka3.version from 3.2.1 to 3.2.2

commit 3ab09ab
Merge: 37f266d ec6d2cf
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Wed Sep 14 10:29:42 2022 +0200

    Merge pull request quarkusio#27910 from Sanne/DB2JakartaNative

    Allow transforming the DB2 JDBC driver to Jakarta APIs during Augmentation

commit 37f266d
Merge: 6e10b21 565f4d4
Author: Foivos <fzakkak@redhat.com>
Date:   Wed Sep 14 11:18:52 2022 +0300

    Merge pull request quarkusio#26892 from Cosium/fix-26890

    Quarkus NativeImageBuildStep fails with perm denied with docker rootless

commit 71ae072
Author: Alasdair Preston <apreston@redhat.com>
Date:   Tue Sep 13 11:23:38 2022 +0100

        Override target port used when creating openshift route

commit ec6d2cf
Author: Sanne Grinovero <sanne@hibernate.org>
Date:   Tue Sep 13 17:28:18 2022 +0100

    Transform DB2 driver to Jakarta APIs

commit 6e10b21
Merge: 6049d8f eee3dc2
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Wed Sep 14 10:21:17 2022 +0300

    Merge pull request quarkusio#27839 from aureamunoz/upgrade-stork-version

    Update Stork version to align with k8s client 6.x

commit 6049d8f
Merge: bc5fb5a d90af0f
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Wed Sep 14 08:16:16 2022 +0200

    Merge pull request quarkusio#27909 from quarkusio/dependabot/github_actions/actions/download-artifact-3

    Bump actions/download-artifact from 1 to 3

commit bc5fb5a
Merge: 6461dd5 52c8f4d
Author: George Gastaldi <gegastaldi@gmail.com>
Date:   Wed Sep 14 01:04:18 2022 -0300

    Merge pull request quarkusio#26161 from zhfeng/narayana_recovery_service

commit d90af0f
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Sep 13 23:01:39 2022 +0000

    Bump actions/download-artifact from 1 to 3

    Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 1 to 3.
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](actions/download-artifact@v1...v3)

    ---
    updated-dependencies:
    - dependency-name: actions/download-artifact
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit dba1b1e
Author: Michal Vavřík <mvavrik@redhat.com>
Date:   Tue Sep 13 21:10:54 2022 +0200

    Generate Quarkus Maven Plugin Config Docs

    resolves: quarkusio#1204

commit 565f4d4
Author: Réda Housni Alaoui <reda-alaoui@hey.com>
Date:   Fri Jul 22 22:15:40 2022 +0200

    Quarkus NativeImageBuildStep fails with perm denied with docker rootless

commit 6461dd5
Merge: 5c5e7ce 223b6cc
Author: George Gastaldi <gegastaldi@gmail.com>
Date:   Tue Sep 13 15:14:33 2022 -0300

    Merge pull request quarkusio#27846 from holly-cummins/holly-wiki-links

commit 223b6cc
Author: Holly Cummins <hcummins@redhat.com>
Date:   Fri Sep 9 20:26:25 2022 +0100

    Cross-link to quarkiverse wiki

commit 5c5e7ce
Merge: 0ddffcf b8405f3
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 19:17:29 2022 +0200

    Merge pull request quarkusio#27863 from quarkusio/dependabot/maven/liquibase.version-4.16.0

    Bump liquibase.version from 4.15.0 to 4.16.0

commit 0ddffcf
Merge: a675c2e eaedc32
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 19:16:32 2022 +0200

    Merge pull request quarkusio#27880 from quarkusio/dependabot/maven/io.micrometer-micrometer-bom-1.9.4

    Bump micrometer-bom from 1.9.3 to 1.9.4

commit a675c2e
Merge: 329af5a 78191c0
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 19:16:15 2022 +0200

    Merge pull request quarkusio#27897 from mkouba/issue-11710

    Support non-producer methods annotated with @startup

commit 329af5a
Merge: 20cea48 67eb7b5
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Tue Sep 13 18:40:25 2022 +0300

    Merge pull request quarkusio#27898 from geoand/quarkusio#27892

    Properly support generic bounds for ParamConverterProvider classes

commit 20cea48
Merge: 602ed25 fd811f3
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 16:28:03 2022 +0200

    Merge pull request quarkusio#27899 from holly-cummins/holly-enable-workflow-bot

    Auto-approve workflow runs from established contributors or low-risk files

commit fd811f3
Author: Holly Cummins <hcummins@redhat.com>
Date:   Tue Sep 13 15:22:21 2022 +0100

    Allow some PRs to run workflows, even when repo settings require approval for all non-committer PRs

commit 602ed25
Merge: 20d9c4f e3f4dfe
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 16:19:20 2022 +0200

    Merge pull request quarkusio#27142 from reda-alaoui/patch-1

    Document the release process

commit 20d9c4f
Merge: c04644b e04b11f
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Tue Sep 13 16:10:58 2022 +0300

    Merge pull request quarkusio#27896 from geoand/quarkusio#27627

    Ensure that Mongo DNS lookup does not happen on the event loop

commit c04644b
Merge: 5e6a3c9 c18c4d0
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Tue Sep 13 16:03:31 2022 +0300

    Merge pull request quarkusio#27838 from karesti/minimal-viable-config

    Create Infinispan caches on first access with the minimal config

commit e3f4dfe
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 14:45:04 2022 +0200

    Add more info about releasing to CONTRIBUTING.md

commit a9e0f55
Author: Réda Housni Alaoui <reda-alaoui@hey.com>
Date:   Thu Aug 4 21:36:36 2022 +0200

    Document the release process

    Fix quarkusio#26901

commit 67eb7b5
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Tue Sep 13 15:25:04 2022 +0300

    Properly support generic bounds for ParamConverterProvider classes

    Fixes: quarkusio#27892

commit 78191c0
Author: Martin Kouba <mkouba@redhat.com>
Date:   Tue Sep 13 14:19:16 2022 +0200

    ArC - support non-producer methods annotated with @startup

    - resolves quarkusio#11710

commit 5e6a3c9
Merge: 7cfcecc 1750554
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 14:29:35 2022 +0200

    Merge pull request quarkusio#26998 from alukin/feature/kafka-client-dev-ui-squashed

    Introduce a Kafka Client DevUI component

commit 7cfcecc
Merge: 599d415 01499ac
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 14:22:45 2022 +0200

    Merge pull request quarkusio#27756 from radcortez/fix-27668

    Properly generate documents from config groups in ConfigMapping

commit 599d415
Merge: 45e97cc 07fee83
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 14:20:53 2022 +0200

    Merge pull request quarkusio#27829 from xstefank/health-3.3.0

    Upgrade SmallRye Health to 3.3.0

commit 45e97cc
Merge: 7e79e40 58c0966
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 14:20:11 2022 +0200

    Merge pull request quarkusio#27810 from TomasHofman/kogito-visibility-fix

    Rest client classic: revert to package private visibility for configuration methods

commit 7e79e40
Merge: 469fd21 6e121b2
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 14:18:43 2022 +0200

    Merge pull request quarkusio#27539 from loicmathieu/command-mode-guide

    Improve command mode guide

commit c18c4d0
Author: Katia Aresti <karesti@redhat.com>
Date:   Fri Sep 9 12:33:14 2022 +0200

    Create Infinispan caches on first access with the minimal config if they don't exist

commit 469fd21
Merge: 89fc74f c3250e0
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 14:14:27 2022 +0200

    Merge pull request quarkusio#27890 from vsevel/jboss-logmanager-1.1.1

    Bump jboss-logmanager 1.1.1

commit c3250e0
Author: vsevel <vincent@sevel.eu>
Date:   Tue Sep 13 09:52:25 2022 +0200

    Bump jboss-logmanager 1.1.1

commit e04b11f
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Tue Sep 13 14:50:18 2022 +0300

    Ensure that Mongo DNS lookup does not happen on the event loop

    This is done by performing the DNS lookup at application startup
    and caching the results

    Fixes: quarkusio#27627

commit 89fc74f
Merge: 136ed6f f8b761c
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 13:47:28 2022 +0200

    Merge pull request quarkusio#27859 from geoand/quarkusio#27852

    Return proper response code when an HTTP request contains an invalid Q value

commit 136ed6f
Merge: 9de09fa 66a11c4
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 13:46:40 2022 +0200

    Merge pull request quarkusio#27891 from cescoffier/stork-filter-handle-unset-host-and-port

    Use default host and port when the service instance does not set them

commit 9de09fa
Merge: 709f2b0 af89f4f
Author: Guillaume Smet <guillaume.smet@gmail.com>
Date:   Tue Sep 13 13:21:00 2022 +0200

    Merge pull request quarkusio#27885 from cescoffier/fix-knative-funqy-context-issue

    Fix request context leak in the Funqy Knative runtime

commit 709f2b0
Merge: b60ad38 3fb466f
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Tue Sep 13 13:43:16 2022 +0300

    Merge pull request quarkusio#27864 from geoand/quarkusio#25981

    Allow setting a custom logging filter on logging handlers

commit b8405f3
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Sep 13 09:55:11 2022 +0000

    Bump liquibase.version from 4.15.0 to 4.16.0

    Bumps `liquibase.version` from 4.15.0 to 4.16.0.

    Updates `liquibase-core` from 4.15.0 to 4.16.0
    - [Release notes](https://github.com/liquibase/liquibase/releases)
    - [Changelog](https://github.com/liquibase/liquibase/blob/master/changelog.txt)
    - [Commits](liquibase/liquibase@v4.15.0...v4.16.0)

    Updates `liquibase-mongodb` from 4.15.0 to 4.16.0
    - [Release notes](https://github.com/liquibase/liquibase-mongodb/releases)
    - [Changelog](https://github.com/liquibase/liquibase-mongodb/blob/main/RELEASE.md)
    - [Commits](liquibase/liquibase-mongodb@liquibase-mongodb-4.15.0...liquibase-mongodb-4.16.0)

    ---
    updated-dependencies:
    - dependency-name: org.liquibase:liquibase-core
      dependency-type: direct:production
      update-type: version-update:semver-minor
    - dependency-name: org.liquibase.ext:liquibase-mongodb
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 66a11c4
Author: Clement Escoffier <clement@apache.org>
Date:   Tue Sep 13 10:27:57 2022 +0200

    Use default host and port when the service instance does not set them

commit af89f4f
Author: Clement Escoffier <clement@apache.org>
Date:   Tue Sep 13 09:03:49 2022 +0200

    Fix request context leak in the Funqy Knative runtime.

commit 3fb466f
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Mon Sep 12 13:13:03 2022 +0300

    Allow setting a custom logging filter on logging handlers

    Resolves: quarkusio#25981

commit eaedc32
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Sep 12 21:22:57 2022 +0000

    Bump micrometer-bom from 1.9.3 to 1.9.4

    Bumps [micrometer-bom](https://github.com/micrometer-metrics/micrometer) from 1.9.3 to 1.9.4.
    - [Release notes](https://github.com/micrometer-metrics/micrometer/releases)
    - [Commits](micrometer-metrics/micrometer@v1.9.3...v1.9.4)

    ---
    updated-dependencies:
    - dependency-name: io.micrometer:micrometer-bom
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 1750554
Author: Ozan Gunalp <ozangunalp@gmail.com>
Date:   Tue Aug 23 19:37:47 2022 +0300

    Kafka dev ui as a dev console route

    minor fixes for UI

commit 119a046
Author: Emiliia Nesterovych <emiliia.nesterovych@gmail.com>
Date:   Wed Aug 3 13:17:41 2022 +0200

    extend kafka dev ui

commit 1a8b36b
Author: Oleksiy Lukin <alukin@gmail.com>
Date:   Mon Aug 1 12:45:58 2022 +0200

    implement basic kafka dev ui

commit 58c0966
Author: Tomas Hofman <thofman@redhat.com>
Date:   Fri Sep 9 14:54:02 2022 +0200

    Rest client config: Remove incorrect note about the proxyAddress property being only applicable to reactive clients

commit c0e11c6
Author: Tomas Hofman <thofman@redhat.com>
Date:   Fri Sep 9 14:46:49 2022 +0200

    Add RestClientBuilder factories

    These factories should make it easier for developers to obtain a
    RestClientBuilder instance preconfigured according to current
    application config. The builder can be further tweaked and then used to
    programatically build a rest client proxy.

commit 07fee83
Author: xstefank <xstefank122@gmail.com>
Date:   Fri Sep 9 11:07:19 2022 +0200

    Upgrade SmallRye Health to 3.3.0

commit f8b761c
Author: Georgios Andrianakis <geoand@gmail.com>
Date:   Mon Sep 12 10:16:13 2022 +0300

    Return proper response code when an HTTP request contains an invalid Q value

    Closes: quarkusio#27852

commit eee3dc2
Author: Auri Munoz <amunozhe@redhat.com>
Date:   Fri Sep 9 16:02:49 2022 +0200

    update Stork version to align with k8s client 6.x

    Related to quarkusio#6588

commit 06caa54
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Sep 9 21:09:37 2022 +0000

    Bump kafka3.version from 3.2.1 to 3.2.2

    Bumps `kafka3.version` from 3.2.1 to 3.2.2.

    Updates `kafka-clients` from 3.2.1 to 3.2.2

    Updates `kafka-streams` from 3.2.1 to 3.2.2

    Updates `kafka-streams-test-utils` from 3.2.1 to 3.2.2

    Updates `kafka_2.13` from 3.2.1 to 3.2.2

    ---
    updated-dependencies:
    - dependency-name: org.apache.kafka:kafka-clients
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: org.apache.kafka:kafka-streams
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: org.apache.kafka:kafka-streams-test-utils
      dependency-type: direct:production
      update-type: version-update:semver-patch
    - dependency-name: org.apache.kafka:kafka_2.13
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 52c8f4d
Author: Zheng Feng <zh.feng@gmail.com>
Date:   Wed Jun 15 08:58:13 2022 +0800

    Improve Narayana recovery manager service and integrate it with agroal

commit 23d2600
Author: Tomas Hofman <thofman@redhat.com>
Date:   Thu Sep 8 14:47:56 2022 +0200

    Rest client classic: make configuration methods in RestClientBase protected

    This is to accommodate kogito extension that accesses these methods.

commit 01499ac
Author: Roberto Cortez <radcortez@yahoo.com>
Date:   Mon Sep 5 17:43:03 2022 +0100

    Properly generate documents from config groups in ConfigMapping

commit 6e121b2
Author: Loïc Mathieu <loikeseke@gmail.com>
Date:   Wed Aug 31 11:13:57 2022 +0200

    Improve command mode guide
@gsmet gsmet modified the milestones: 2.13.0.CR1, 2.12.3.Final Sep 19, 2022
gsmet pushed a commit to gsmet/quarkus that referenced this issue Sep 19, 2022
This is done by performing the DNS lookup at application startup
and caching the results

Fixes: quarkusio#27627
(cherry picked from commit e04b11f)
@bslatam
Copy link

bslatam commented Jun 6, 2023

Workaround:

  1. Reference:
    https://www.appsloveworld.com/mongodb/100/53/failed-to-import-the-uri-unable-to-look-up-txt-record-for-host-cluster0-ohzuo-mo

  2. application.properties template:

spring.data.mongodb.uri=mongodb://" + USER + ":" + PASS + "@" + HOST + ":" + PORT + "/" + DB
spring.data.mongodb.database=DB

  1. application.properties example:

spring.data.mongodb.uri=mongodb://userA:PasswordA@ac-9joukbg-shard-00-00.qyrvwlj.mongodb.net:27017/db_name?ssl=true&replicaSet=atlas-rw4866-shard-0&authSource=admin&retryWrites=true&w=majority
spring.data.mongodb.database= db_name

@krisgerhard
Copy link

As I come to this (or similar) issue every 4 months, I will leave a comment for myself and maybe some others.

All of my Unable to look up TXT record for host have been because of incorrect mongo uri.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/mongodb kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants