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
重启tomcat的时候DubboShutdownHook会报一个非常讨厌的WARN #333
Comments
主动自行调用
|
按照上面的方法修改后,报了下面的WARN。
#95
|
这个是因为ProtocolConfig.destroyAll()的时候,资源已经释放,zkclient连接已经关闭,你使用的应该是0.1版本的zkclient,close的时候_connection会置为null, 接着spring容器close的时候,dubbo服务会再次执行释放操作,最终会再次调用到zkclient的 delete方法,报NPE异常。 可以升级zkclient版本到0.5以上,最新版本是0.9,我们目前是0.6. zkclient 修复记录 sgroschupf/zkclient@0630c9c 注:是group为com.101tec |
更新了zkclient的version, null pointer变成了更清晰的解释ZkClient already closed,针对这个warning我是可以接受的,但是下面报了zk的error看起来像没有优雅的结束zk,这个怎么搞定?
|
ZooTrace 视乎仅仅只是个打日志的,不影响。 这个异常可以尝试 规避下。
另外 你再检查下是否有zookeeper包版本冲突. |
现象和猜测报了两个新的异常,猜测是关闭dubbo的时候他想把现有的任务执行完毕,但是依赖的资源已经销毁了。 我目前是通过这种方法调用destoryAll()的。
|
在你的graceShutdown方法中做下连接检测,保障所有已经进来的请求全部吐出去了。 例如 step 1. step 2. step 3. |
It works! |
|
最好不要在webapp中使用hook,webapp反部署时无法触发是一方面,更重要是的影响元空间回收 |
@AnyinSong 可以展开在说一下嘛。 |
如果要在webapp中提供dubbo服务的话那在这个webapp的反部署逻辑中就要销毁所有dubbo资源,不能等到tomcat进程停止时做,比如在你的webapp里面添加一个contextloadlistener,在里面销毁所有dubbo资源。dubbo服务放到webapp里最好把那些使用jvm hook的地方改掉,因为如果webapp跑在tomcat这类容器中的话webapp的生命周期和容器生命周期不一致,webapp反部署时hook无法被触发就会造成资源泄漏。 |
怎么用? @jiakai0419 跑junit经常有Worker has already been shutdown |
现象
每当我重启tomcat的时候,就会报下面的warning。
猜测和目标
看起来像dubbo执行shutdown hook的时候,web application已经停掉了。
我这个强迫症看这个warning特别难受,在tomcat重启的时候我怎样才能优雅的关闭dubbo,消除掉这个warning。
环境
编译方式
JRE
Tomcat
Apache Tomcat Version 8.0.33
The text was updated successfully, but these errors were encountered: