xuxueli / xxl-job

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
http://www.xuxueli.com/xxl-job/
GNU General Public License v3.0
27.45k stars 10.86k forks source link

在测试故障转移功能时报错 #122

Closed edgelone closed 6 years ago

edgelone commented 7 years ago

执行器组有两台服务器,新建一个测试任务,一开始用的是 最不经常使用 模式,然后改成故障转移模式,手动停掉一台服务器,开始不停报错,任务全部执行失败

2017-07-26 15:47:10.203 ERROR 86517 --- [eduler_Worker-7] c.x.job.admin.core.route.ExecutorRouter  : com.xxl.job.core.biz.impl.ExecutorBizImpl is not an interface

java.lang.IllegalArgumentException: com.xxl.job.core.biz.impl.ExecutorBizImpl is not an interface
    at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:590) ~[na:1.8.0_73]
    at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557) ~[na:1.8.0_73]
    at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:230) ~[na:1.8.0_73]
    at java.lang.reflect.WeakCache.get(WeakCache.java:127) ~[na:1.8.0_73]
    at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419) ~[na:1.8.0_73]
    at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:719) ~[na:1.8.0_73]
    at com.xxl.job.admin.jetty.NetComClientProxy.getObject(NetComClientProxy.java:33) ~[classes/:na]
    at com.xxl.job.admin.core.route.AbstractExecutorOverRouter.routeRun(AbstractExecutorOverRouter.java:28) ~[classes/:na]
    at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.doTrigger(RemoteHttpJobBean.java:147) [classes/:na]
    at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.executeInternal(RemoteHttpJobBean.java:93) [classes/:na]
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) [spring-context-support-4.3.9.RELEASE.jar:4.3.9.RELEASE]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.3.0.jar:na]
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.3.0.jar:na]
xuxueli commented 7 years ago

你好,这种情况通常是执行器无法正常响应导致的。 但是类似情况暂时无法重现,可以加入交流群在群内讨论啊。

antergone commented 7 years ago

@edgelone @xuxueli 这个问题看上去是因为动态代理了实现类导致的。但是看了下代码,好像没有地方运用到代理实现类。请问楼主是自己改过代码编译的吗?

edgelone commented 7 years ago

@Antergone 并未改过源码,除了DemoJobHandler,我会再测试下,看是不是只要切换路由策略就会发生这种情况

edgelone commented 7 years ago

@Antergone @xuxueli 刚测试发现 同一执行器组下有两台执行器,将任务从随机/第一台/最不经常使用路由策略 切换至 故障转移 那么任务就找不到执行器了

xuxueli commented 7 years ago

你好,感谢关注啊! 切换路由规则后测试我们这边还是无法重现,从Log上看是代理部分的问题。推荐重新下载一份release源码,本地mvn重新编译下。如果再有问题,可以加群讨论啊。

edgelone commented 7 years ago

@xuxueli 1.8.1 release版没有这个问题了! 谢谢开源分享!