AbstractAccumulator: synchronized add and null check

Change-Id: I2999311d19ab36c17413ebc93398483a7d012714
diff --git a/utils/misc/src/main/java/org/onlab/util/AbstractAccumulator.java b/utils/misc/src/main/java/org/onlab/util/AbstractAccumulator.java
index 8c8d0d4..f417562 100644
--- a/utils/misc/src/main/java/org/onlab/util/AbstractAccumulator.java
+++ b/utils/misc/src/main/java/org/onlab/util/AbstractAccumulator.java
@@ -72,9 +72,9 @@
     }
 
     @Override
-    public void add(T event) {
+    public synchronized void add(T event) {
         idleTask = cancelIfActive(idleTask);
-        events.add(event);
+        events.add(checkNotNull(event, "Event cannot be null"));
 
         // Did we hit the max event threshold?
         if (events.size() == maxEvents) {
@@ -114,7 +114,7 @@
                 maxTask = cancelIfActive(maxTask);
                 processEvents(finalizeCurrentBatch());
             } catch (Exception e) {
-                log.warn("Unable to process batch due to {}", e.getMessage());
+                log.warn("Unable to process batch due to {}", e);
             }
         }
     }