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

开启QOS后,访问/ready、/startup出现异常 #9634

Closed
yuchang01 opened this issue Jan 27, 2022 · 5 comments
Closed

开启QOS后,访问/ready、/startup出现异常 #9634

yuchang01 opened this issue Jan 27, 2022 · 5 comments
Labels
type/bug Bugs to being fixed
Milestone

Comments

@yuchang01
Copy link
Contributor

  • [ x ] I have searched the issues of this repository and believe that this is not a duplicate.

Environment

  • Dubbo version: 3.0.5
  • Operating System version: k8s/spring boot
  • Java version: jdk11

Steps to reproduce this issue

  1. 在配置文件application.yml中开启探针
  dubbo:
    application:
      name: demo-provider
      qos-enable: true
      qos-accept-foreign-ip: true
  1. 启动应用,此时consumer可以正常调用provider,可以正常返回结果。
  2. 但是,访问以下三个地址
    curl -v http://localhost:22222/live      # 返回true
    curl -v http://localhost:22222/ready  # 报错
    curl -v http://localhost:22222/startup #报错

访问http://localhost:22222/ready 异常信息如下:

2022-01-27 12:20:58.515 ERROR 28796 --- [ qos-worker-3-4] o.a.d.q.s.handler.HttpProcessHandler     :  [DUBBO] execute commandContext: org.apache.dubbo.qos.command.CommandContext@1dcc6545 got exception, dubbo version: 3.0.5, current host: 10.33.0.2

java.lang.NullPointerException: null
  at org.apache.dubbo.qos.probe.impl.DeployerReadinessProbe.check(DeployerReadinessProbe.java:36) ~[dubbo-3.0.5.jar:3.0.5]
  at org.apache.dubbo.qos.command.impl.Ready.execute(Ready.java:57) ~[dubbo-3.0.5.jar:3.0.5]
  at org.apache.dubbo.qos.command.DefaultCommandExecutor.execute(DefaultCommandExecutor.java:39) ~[dubbo-3.0.5.jar:3.0.5]
  at org.apache.dubbo.qos.server.handler.HttpProcessHandler.channelRead0(HttpProcessHandler.java:87) ~[dubbo-3.0.5.jar:3.0.5]
  at org.apache.dubbo.qos.server.handler.HttpProcessHandler.channelRead0(HttpProcessHandler.java:50) ~[dubbo-3.0.5.jar:3.0.5]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved(ByteToMessageDecoder.java:253) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:515) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:447) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

访问http://localhost:22222/startup 异常信息如下:

2022-01-27 12:47:24.864 ERROR 28796 --- [qos-worker-3-10] o.a.d.q.s.handler.HttpProcessHandler     :  [DUBBO] execute commandContext: org.apache.dubbo.qos.command.CommandContext@40f5738f got exception, dubbo version: 3.0.5, current host: 10.33.0.2

java.lang.NullPointerException: null
  at org.apache.dubbo.qos.probe.impl.DeployerStartupProbe.check(DeployerStartupProbe.java:35) ~[dubbo-3.0.5.jar:3.0.5]
  at org.apache.dubbo.qos.command.impl.Startup.execute(Startup.java:58) ~[dubbo-3.0.5.jar:3.0.5]
  at org.apache.dubbo.qos.command.DefaultCommandExecutor.execute(DefaultCommandExecutor.java:39) ~[dubbo-3.0.5.jar:3.0.5]
  at org.apache.dubbo.qos.server.handler.HttpProcessHandler.channelRead0(HttpProcessHandler.java:87) ~[dubbo-3.0.5.jar:3.0.5]
  at org.apache.dubbo.qos.server.handler.HttpProcessHandler.channelRead0(HttpProcessHandler.java:50) ~[dubbo-3.0.5.jar:3.0.5]
  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved(ByteToMessageDecoder.java:253) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:515) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:447) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-all-4.1.56.Final.jar:4.1.56.Final]
  at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
@yuchang01 yuchang01 added the type/bug Bugs to being fixed label Jan 27, 2022
@yuchang01
Copy link
Contributor Author

dubbo3 啥时候生产可用,新项目已经用了dubbo 3, 老担心了~

@chickenlj
Copy link
Contributor

#9436
@rainwolf01 请在此登记使用信息,以方便交流

@chickenlj
Copy link
Contributor

此问题我们会继续跟进

@chickenlj chickenlj mentioned this issue Jan 27, 2022
@chickenlj chickenlj added this to the 3.0.6 milestone Jan 27, 2022
@chickenlj
Copy link
Contributor

这里影响的是运维功能,因为 Probe spi 的 scope 调整造成的

@chickenlj
Copy link
Contributor

fixed by #9638

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/bug Bugs to being fixed
Projects
None yet
Development

No branches or pull requests

2 participants