package com.alibaba.jstorm.daemon.nimbus.metric.assignment; import java.util.HashSet; import java.util.Map; import java.util.Set; import com.alibaba.jstorm.daemon.nimbus.metric.ClusterMetricsRunnable; import com.alibaba.jstorm.daemon.nimbus.metric.MetricEvent; import com.alibaba.jstorm.schedule.default_assign.ResourceWorkerSlot; public class TaskDeadEvent extends MetricEvent { private Map<Integer, ResourceWorkerSlot> deadTasks; @Override public void run() { // TODO Auto-generated method stub context.getMetricUploader().sendEvent(context.getClusterName(), this); // unregister dead workers Set<ResourceWorkerSlot> workers = new HashSet<>(); workers.addAll(deadTasks.values()); for (ResourceWorkerSlot worker : workers) { context.getMetricCache().unregisterWorker(topologyId, worker.getHostname(), worker.getPort()); } } public Map<Integer, ResourceWorkerSlot> getDeadTasks() { return deadTasks; } public void setDeadTasks(Map<Integer, ResourceWorkerSlot> deadTasks) { this.deadTasks = deadTasks; } public static void pushEvent(String topologyId, Map<Integer, ResourceWorkerSlot> deadTasks) { TaskDeadEvent event = new TaskDeadEvent(); event.topologyId = topologyId; event.deadTasks = deadTasks; ClusterMetricsRunnable.pushEvent(event); } }