22 |
} |
} |
23 |
|
|
24 |
protected volatile boolean abort = false;//mark volatile to make sure value isn't cached by threads |
protected volatile boolean abort = false;//mark volatile to make sure value isn't cached by threads |
25 |
protected TaskState state = TaskState.STATE_QUEUED; |
protected volatile TaskState state = TaskState.STATE_QUEUED; |
26 |
protected TaskManager manager; |
protected TaskManager manager; |
27 |
private String errorMsg; |
private String errorMsg; |
28 |
|
|
37 |
@Override |
@Override |
38 |
public final void run() { |
public final void run() { |
39 |
|
|
40 |
|
if (this.state == TaskState.STATE_ABORTED) {//if this task as cancelled while still in queue |
41 |
|
return; |
42 |
|
} |
43 |
|
|
44 |
|
|
45 |
|
|
46 |
TaskLogger.getInstance().reset(); |
TaskLogger.getInstance().reset(); |
47 |
|
|
48 |
TimingHelper timing = new TimingHelper(); |
TimingHelper timing = new TimingHelper(); |
55 |
|
|
56 |
try { |
try { |
57 |
taskRun(); |
taskRun(); |
58 |
this.state = TaskState.STATE_DONE; |
|
59 |
|
if (this.state != TaskState.STATE_ABORTED) { //just to make sure we wasn't aborted |
60 |
|
this.state = TaskState.STATE_DONE; |
61 |
|
} |
62 |
|
|
63 |
|
|
64 |
} catch (Exception e) { |
} catch (Exception e) { |
65 |
|
logger.warning("Error during taskrun", e); |
66 |
this.errorMsg = e.getMessage(); |
this.errorMsg = e.getMessage(); |
|
e.printStackTrace(); |
|
67 |
this.state = TaskState.STATE_ABORTED; |
this.state = TaskState.STATE_ABORTED; |
68 |
} |
} |
69 |
|
|
72 |
logger.info("Done " + this.getDescription() + " " + timing.getElapsed() + "ms"); |
logger.info("Done " + this.getDescription() + " " + timing.getElapsed() + "ms"); |
73 |
|
|
74 |
logMessages = TaskLogger.getInstance().getBuffer(); |
logMessages = TaskLogger.getInstance().getBuffer(); |
75 |
|
|
76 |
|
|
77 |
|
// Make some delay between tasks to make sure that the VM settles and other contexts can perform their tasks as well |
78 |
|
try { |
79 |
|
Thread.sleep(60*1000); |
80 |
|
} catch (InterruptedException e) { |
81 |
|
e.printStackTrace(); |
82 |
|
} |
83 |
|
|
84 |
} |
} |
85 |
|
|
86 |
public final String getLog() { |
public final String getLog() { |
111 |
this.abort = true; |
this.abort = true; |
112 |
} |
} |
113 |
|
|
114 |
|
public void doAbort(Exception e) { |
115 |
|
this.abort = true; |
116 |
|
this.errorMsg = e.getMessage(); |
117 |
|
} |
118 |
|
|
119 |
public TaskBean getTaskBean() { |
public TaskBean getTaskBean() { |
120 |
TaskBean bean = new TaskBean(); |
TaskBean bean = new TaskBean(); |
121 |
bean.id = this.getId(); |
bean.id = this.getId(); |
132 |
return this.errorMsg; |
return this.errorMsg; |
133 |
} |
} |
134 |
|
|
135 |
|
@Override |
136 |
|
public int hashCode() { |
137 |
|
return this.id; |
138 |
|
} |
139 |
|
|
140 |
|
@Override |
141 |
|
public boolean equals(Object o) { |
142 |
|
if (! (o instanceof Task)) |
143 |
|
return false; |
144 |
|
|
145 |
|
Task otherTask = (Task) o; |
146 |
|
|
147 |
|
return this.getId() == otherTask.getId(); |
148 |
|
} |
149 |
|
|
150 |
/** |
/** |
151 |
* @throws Exception |
* @throws Exception |
152 |
* |
* |