diff --git src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java index 53a40c0..fc9c830 100644 --- src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java +++ src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java @@ -72,7 +72,9 @@ public class TaskMonitor { new Class[] { MonitoredTask.class }, new PassthroughInvocationHandler(stat)); TaskAndWeakRefPair pair = new TaskAndWeakRefPair(stat, proxy); - tasks.add(pair); + synchronized (this) { + tasks.add(pair); + } return proxy; } @@ -84,7 +86,9 @@ public class TaskMonitor { new Class[] { MonitoredRPCHandler.class }, new PassthroughInvocationHandler(stat)); TaskAndWeakRefPair pair = new TaskAndWeakRefPair(stat, proxy); - tasks.add(pair); + synchronized (this) { + tasks.add(pair); + } return proxy; } @@ -142,7 +146,7 @@ public class TaskMonitor { public void dumpAsText(PrintWriter out) { long now = System.currentTimeMillis(); - List tasks = TaskMonitor.get().getTasks(); + List tasks = getTasks(); for (MonitoredTask task : tasks) { out.println("Task: " + task.getDescription()); out.println("Status: " + task.getState() + ":" + task.getStatus());