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");