@SuppressWarnings("deprecation") protected void beforeStart(Map flags, Task<?> task) { activeTaskCount.incrementAndGet(); //set thread _before_ start time, so we won't get a null thread when there is a start-time if (log.isTraceEnabled()) log.trace(""+this+" beforeStart, task: "+task); if (!task.isCancelled()) { ((TaskInternal<?>)task).setThread(Thread.currentThread()); if (RENAME_THREADS) { String newThreadName = "brooklyn-" + CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, task.getDisplayName().replace(" ", "")) + "-" + task.getId().substring(0, 8); task.getThread().setName(newThreadName); } PerThreadCurrentTaskHolder.perThreadCurrentTask.set(task); ((TaskInternal<?>)task).setStartTimeUtc(System.currentTimeMillis()); } for (Object to : (Collection)flags.get("tagLinkedPreprocessors")) { TaskPreprocessor t = (TaskPreprocessor)to; t.onStart(flags, task); } ExecutionUtils.invoke(flags.get("newTaskStartCallback"), task); }
@SuppressWarnings("deprecation") protected void afterEnd(Map flags, Task<?> task) { activeTaskCount.decrementAndGet(); incompleteTaskCount.decrementAndGet(); if (log.isTraceEnabled()) log.trace(this+" afterEnd, task: "+task); ExecutionUtils.invoke(flags.get("newTaskEndCallback"), task); List l = (List)flags.get("tagLinkedPreprocessors"); Collections.reverse(l); for (Object li: l) { TaskPreprocessor t = (TaskPreprocessor)li; t.onEnd(flags, task); } PerThreadCurrentTaskHolder.perThreadCurrentTask.remove(); ((TaskInternal)task).setEndTimeUtc(System.currentTimeMillis()); //clear thread _after_ endTime set, so we won't get a null thread when there is no end-time if (RENAME_THREADS) { String newThreadName = "brooklyn-"+Identifiers.makeRandomId(8); task.getThread().setName(newThreadName); } ((TaskInternal)task).setThread(null); synchronized (task) { task.notifyAll(); } for (ExecutionListener listener : listeners) { try { listener.onTaskDone(task); } catch (Exception e) { log.warn("Error notifying listener "+listener+" of task "+task+" done", e); } } }