line / armeria

Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
https://armeria.dev
Apache License 2.0
4.75k stars 899 forks source link

maybe less volumnous warning on dns resolve fail #1944

Open codefromthecrypt opened 4 years ago

codefromthecrypt commented 4 years ago

This WARN will repeat in logs, and since there's no user code involved, and the code that is involved is closely maintained (netty), I'm wondering if it is necessary to get a long stack trace to say unreachable.

2019-07-31 09:38:24.592  WARN 28226 --- [-worker-nio-2-3] c.l.a.c.e.d.DnsAddressEndpointGroup      : [search-zipkin-2rlyh66ibw43ftlk4342ceeewu.ap-southeast-1.es.amazonaws.com] DNS query failed; retrying in 2251 ms (attempts so far: 2):

com.linecorp.armeria.client.endpoint.EndpointGroupException: failed to receive DNS records
    at com.linecorp.armeria.client.endpoint.dns.DnsEndpointGroup$1.operationComplete(DnsEndpointGroup.java:165) ~[armeria-0.89.0.jar!/:?]
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:500) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:474) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:413) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:149) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:32) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at com.linecorp.armeria.client.endpoint.dns.DnsEndpointGroup.lambda$sendQueries$0(DnsEndpointGroup.java:176) ~[armeria-0.89.0.jar!/:?]
    at com.linecorp.armeria.internal.shaded.guava.collect.ImmutableList.forEach(ImmutableList.java:405) ~[armeria-0.89.0.jar!/:?]
    at com.linecorp.armeria.client.endpoint.dns.DnsEndpointGroup.sendQueries(DnsEndpointGroup.java:176) ~[armeria-0.89.0.jar!/:?]
    at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:127) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:416) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:515) [netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
    at java.lang.Thread.run(Thread.java:834) [?:?]
    Suppressed: java.net.UnknownHostException: failed to resolve 'search-zipkin-2rlyh66ibw43ftlk4342ceeewu.ap-southeast-1.es.amazonaws.com' after 3 queries 
        at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:925) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:884) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:356) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:64) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:405) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:500) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:493) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:472) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:413) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:538) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:531) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:111) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext.setFailure(DnsQueryContext.java:228) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext.onQueryWriteCompletion(DnsQueryContext.java:162) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext.access$200(DnsQueryContext.java:42) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext$3.operationComplete(DnsQueryContext.java:154) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext$3.operationComplete(DnsQueryContext.java:151) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:500) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:474) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:413) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:538) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:531) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:111) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.internal.PromiseNotificationUtil.tryFailure(PromiseNotificationUtil.java:64) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.ChannelOutboundBuffer.safeFail(ChannelOutboundBuffer.java:721) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.ChannelOutboundBuffer.remove0(ChannelOutboundBuffer.java:306) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:286) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:159) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:928) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:356) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1383) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:749) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:741) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:727) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:978) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:241) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsNameResolver.flushQueries(DnsNameResolver.java:1137) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.internalResolve(DnsResolveContext.java:299) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.resolve(DnsResolveContext.java:205) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsNameResolver.resolveAll(DnsNameResolver.java:796) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsNameResolver.resolveAll(DnsNameResolver.java:722) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at com.linecorp.armeria.client.endpoint.dns.DnsEndpointGroup.lambda$sendQueries$0(DnsEndpointGroup.java:176) ~[armeria-0.89.0.jar!/:?]
        at com.linecorp.armeria.internal.shaded.guava.collect.ImmutableList.forEach(ImmutableList.java:405) ~[armeria-0.89.0.jar!/:?]
        at com.linecorp.armeria.client.endpoint.dns.DnsEndpointGroup.sendQueries(DnsEndpointGroup.java:176) ~[armeria-0.89.0.jar!/:?]
        at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:127) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:416) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:515) [netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at java.lang.Thread.run(Thread.java:834) [?:?]
    Caused by: io.netty.resolver.dns.DnsNameResolverException: [/192.168.0.1:53] failed to send a query via UDP (no stack trace available)
    Caused by: java.net.SocketException: Network is unreachable
        at sun.nio.ch.DatagramChannelImpl.send0(Native Method) ~[?:?]
        at sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:584) ~[?:?]
        at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:546) ~[?:?]
        at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:529) ~[?:?]
        at io.netty.channel.socket.nio.NioDatagramChannel.doWriteMessage(NioDatagramChannel.java:292) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:142) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        ... 26 more
    Suppressed: java.net.UnknownHostException: failed to resolve 'search-zipkin-2rlyh66ibw43ftlk4342ceeewu.ap-southeast-1.es.amazonaws.com' after 3 queries 
        at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:925) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:884) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:356) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:64) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:405) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:500) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:493) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:472) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:413) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:538) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:531) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:111) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext.setFailure(DnsQueryContext.java:228) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext.onQueryWriteCompletion(DnsQueryContext.java:162) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext.access$200(DnsQueryContext.java:42) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext$3.operationComplete(DnsQueryContext.java:154) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsQueryContext$3.operationComplete(DnsQueryContext.java:151) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:500) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:474) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:413) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:538) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:531) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:111) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.internal.PromiseNotificationUtil.tryFailure(PromiseNotificationUtil.java:64) ~[netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.ChannelOutboundBuffer.safeFail(ChannelOutboundBuffer.java:721) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.ChannelOutboundBuffer.remove0(ChannelOutboundBuffer.java:306) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:286) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:159) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:928) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:356) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1383) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:749) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:741) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:727) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:978) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:241) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsNameResolver.flushQueries(DnsNameResolver.java:1137) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.internalResolve(DnsResolveContext.java:299) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsResolveContext.resolve(DnsResolveContext.java:205) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsNameResolver.resolveAll(DnsNameResolver.java:796) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.resolver.dns.DnsNameResolver.resolveAll(DnsNameResolver.java:722) ~[netty-resolver-dns-4.1.38.Final.jar!/:4.1.38.Final]
        at com.linecorp.armeria.client.endpoint.dns.DnsEndpointGroup.lambda$sendQueries$0(DnsEndpointGroup.java:176) ~[armeria-0.89.0.jar!/:?]
        at com.linecorp.armeria.internal.shaded.guava.collect.ImmutableList.forEach(ImmutableList.java:405) ~[armeria-0.89.0.jar!/:?]
        at com.linecorp.armeria.client.endpoint.dns.DnsEndpointGroup.sendQueries(DnsEndpointGroup.java:176) ~[armeria-0.89.0.jar!/:?]
        at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:127) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:416) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:515) [netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.38.Final.jar!/:4.1.38.Final]
        at java.lang.Thread.run(Thread.java:834) [?:?]
    Caused by: io.netty.resolver.dns.DnsNameResolverException: [/192.168.0.1:53] failed to send a query via UDP (no stack trace available)
    Caused by: java.net.SocketException: Network is unreachable
        at sun.nio.ch.DatagramChannelImpl.send0(Native Method) ~[?:?]
        at sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:584) ~[?:?]
        at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:546) ~[?:?]
        at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:529) ~[?:?]
        at io.netty.channel.socket.nio.NioDatagramChannel.doWriteMessage(NioDatagramChannel.java:292) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        at io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:142) ~[netty-transport-4.1.38.Final.jar!/:4.1.38.Final]
        ... 26 more
trustin commented 4 years ago

Some users want to know how a domain name resolution failed - how many queries were sent and why each of them has failed. The given stack trace shows 3 DNS queries were failed with Network is unreachable error. Without them, some users would be curious about what the exact cause was.

I agree that the stack trace is too long, though. How could we simplify it without losing much detail?

codefromthecrypt commented 4 years ago

since you know netty is used. one way is to look for a cause of DnsNameResolverException. then in the WARN level message just add that cause message. In DEBUG one dump everything

codefromthecrypt commented 4 years ago

because as far as I can tell, there is really no information here needed except the cause which is duplicated multiple times. unless trying to fix the code of the resolver itself, I don't need that stack trace

codefromthecrypt commented 4 years ago

to put short.. where we own the whole stack, we can maybe be more concise than where 3rd party code is involved. ex stack trace when unknown scenario or where unknown code involved. concise for handled scenario and only known code involved.

warn is fair enough, tells a problem, though ideally doens't affect the already existing resolved ips

anyway that's thoughts so you can decide what is appropriate even if nothing. tx for listening!

anuraaga commented 4 years ago

One extra context - more volume when responding to a user request is probably not as big of a deal, but I realized this actually continues in the logs a lot (with backoff though) when it's from a DnsAddressEndpointGroup

trustin commented 4 years ago

I see. How about simplifying/omitting the trace when verboseExceptions is disabled?

codefromthecrypt commented 4 years ago

is verboseException a thing ?

I think more to point is the message. do you have a reasonable chance to know the problem even if you disable stack traces in log format

On Fri, Aug 2, 2019, 1:48 PM Trustin Lee notifications@github.com wrote:

I see. How about simplifying/omitting the trace when verboseExceptions is disabled?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/line/armeria/issues/1944?email_source=notifications&email_token=AAAPVVY4IQW2CRL3ODVSECLQCPDBBA5CNFSM4IIBXVQ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3MVPGA#issuecomment-517560216, or mute the thread https://github.com/notifications/unsubscribe-auth/AAAPVVZZU4FHBGM4AOOGQQLQCPDBBANCNFSM4IIBXVQQ .