Fixing various issues and re-tuning.

Change-Id: I8822fcf77cfa507788241c5bda98ef4741b284b4
diff --git a/core/api/src/main/java/org/onlab/onos/event/AbstractEventAccumulator.java b/core/api/src/main/java/org/onlab/onos/event/AbstractEventAccumulator.java
index f866633..39c1103 100644
--- a/core/api/src/main/java/org/onlab/onos/event/AbstractEventAccumulator.java
+++ b/core/api/src/main/java/org/onlab/onos/event/AbstractEventAccumulator.java
@@ -16,6 +16,8 @@
 package org.onlab.onos.event;
 
 import com.google.common.collect.Lists;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
 import java.util.Timer;
@@ -31,6 +33,8 @@
  */
 public abstract class AbstractEventAccumulator implements EventAccumulator {
 
+    private Logger log = LoggerFactory.getLogger(AbstractEventAccumulator.class);
+
     private final Timer timer;
     private final int maxEvents;
     private final int maxBatchMillis;
@@ -104,9 +108,13 @@
     private class ProcessorTask extends TimerTask {
         @Override
         public void run() {
-            idleTask = cancelIfActive(idleTask);
-            maxTask = cancelIfActive(maxTask);
-            processEvents(finalizeCurrentBatch());
+            try {
+                idleTask = cancelIfActive(idleTask);
+                maxTask = cancelIfActive(maxTask);
+                processEvents(finalizeCurrentBatch());
+            } catch (Exception e) {
+                log.warn("Unable to process batch due to {}", e.getMessage());
+            }
         }
     }
 
diff --git a/core/net/src/main/java/org/onlab/onos/net/topology/impl/DefaultTopologyProvider.java b/core/net/src/main/java/org/onlab/onos/net/topology/impl/DefaultTopologyProvider.java
index ac9fd00..3f6e285 100644
--- a/core/net/src/main/java/org/onlab/onos/net/topology/impl/DefaultTopologyProvider.java
+++ b/core/net/src/main/java/org/onlab/onos/net/topology/impl/DefaultTopologyProvider.java
@@ -66,13 +66,13 @@
         implements TopologyProvider {
 
     private static final int MAX_THREADS = 8;
-    private static final int DEFAULT_MAX_EVENTS = 100;
-    private static final int DEFAULT_MAX_BATCH_MS = 50;
-    private static final int DEFAULT_MAX_IDLE_MS = 5;
+    private static final int DEFAULT_MAX_EVENTS = 200;
+    private static final int DEFAULT_MAX_BATCH_MS = 60;
+    private static final int DEFAULT_MAX_IDLE_MS = 30;
 
     // FIXME: Replace with a system-wide timer instance;
     // TODO: Convert to use HashedWheelTimer or produce a variant of that; then decide which we want to adopt
-    private static final Timer TIMER = new Timer();
+    private static final Timer TIMER = new Timer("topo-event-batching");
 
     @Property(name = "maxEvents", intValue = DEFAULT_MAX_EVENTS,
             label = "Maximum number of events to accumulate")
@@ -122,6 +122,9 @@
         deviceService.addListener(deviceListener);
         linkService.addListener(linkListener);
 
+        log.info("Configured with maxEvents = {}; maxBatchMs = {}; maxIdleMs = {}",
+                 maxEvents, maxBatchMs, maxIdleMs);
+
         isStarted = true;
         triggerRecompute();
         log.info("Started");