mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
fix issue #1189, clear job reference from timer
This commit is contained in:
+24
-6
@@ -56,12 +56,7 @@ public class GlobalJobControllerImpl extends JobControllerImpl {
|
||||
/*
|
||||
* 达到超时时间将会停止job
|
||||
*/
|
||||
TimerTask jobTimeoutTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
job.terminate();
|
||||
}
|
||||
};
|
||||
TimerTask jobTimeoutTask = new JobTimeoutTask(job);
|
||||
Date timeoutDate = new Date(System.currentTimeMillis() + (getJobTimeoutInSecond() * 1000));
|
||||
ArthasBootstrap.getInstance().getTimer().schedule(jobTimeoutTask, timeoutDate);
|
||||
jobTimeoutTaskMap.put(job.id(), jobTimeoutTask);
|
||||
@@ -103,4 +98,27 @@ public class GlobalJobControllerImpl extends JobControllerImpl {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static class JobTimeoutTask extends TimerTask {
|
||||
Job job;
|
||||
|
||||
public JobTimeoutTask(Job job) {
|
||||
this.job = job;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (job != null) {
|
||||
job.terminate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cancel() {
|
||||
// clear job reference from timer
|
||||
// fix issue: https://github.com/alibaba/arthas/issues/1189
|
||||
job = null;
|
||||
return super.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user