nmyphp/tbschedule

调度启动时,清理过期任务信息报异常

Opened this issue · 3 comments

调度启动时,会试图清理之前已经过期的任务信息:

// 清除已经过期1天的TASK,OWN_SIGN的组合。超过一天没有活动server的视为过期
this.scheduleCenter.clearExpireTaskTypeRunningInfo(baseTaskType, ScheduleUtil.getLocalIP() + "清除过期OWN_SIGN信息",this.taskTypeInfo.getExpireOwnSignInterval());

如果该目录不为空,就会报异常:

2019-06-20 14:43:55 ERROR c.t.p.s.s.TBScheduleManagerFactory - strategy 获取对应的java or bean 出错,schedule并没有加载该任务,请确认DemoTask-strategy
org.apache.zookeeper.KeeperException$NotEmptyException: KeeperErrorCode = Directory not empty for /schedule/demo/baseTaskType/demoTask1/demoTask1
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:125)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.delete(ZooKeeper.java:873)
	at com.taobao.pamirs.schedule.zk.ZKTools.deleteTree(ZKTools.java:43)
	at com.taobao.pamirs.schedule.zk.ScheduleDataManager4ZK.clearExpireTaskTypeRunningInfo(ScheduleDataManager4ZK.java:526)
	at com.taobao.pamirs.schedule.taskmanager.TBScheduleManager.<init>(TBScheduleManager.java:103)
	at com.taobao.pamirs.schedule.taskmanager.TBScheduleManagerStatic.<init>(TBScheduleManagerStatic.java:25)
	at com.taobao.pamirs.schedule.strategy.TBScheduleManagerFactory.createStrategyTask(TBScheduleManagerFactory.java:142)
	at com.taobao.pamirs.schedule.strategy.TBScheduleManagerFactory.reRunScheduleServer(TBScheduleManagerFactory.java:256)
	at com.taobao.pamirs.schedule.strategy.TBScheduleManagerFactory.reRegisterManagerFactory(TBScheduleManagerFactory.java:195)
	at com.taobao.pamirs.schedule.strategy.TBScheduleManagerFactory.refresh(TBScheduleManagerFactory.java:181)
	at com.taobao.pamirs.schedule.strategy.ManagerFactoryTimerTask.run(TBScheduleManagerFactory.java:454)
	at java.util.TimerThread.mainLoop(Timer.java:555)
	at java.util.TimerThread.run(Timer.java:505)

不影响调度

不影响调度

但是,报这个异常,就说明清理不掉过期信息,对吧?这样是不是不符合作者的设计目的和思路?

不影响调度

但是,报这个异常,就说明清理不掉过期信息,对吧?这样是不是不符合作者的设计目的和思路?

对的,提issue的目的也是想看哪位愿意pr