From e1c4dc7ee49f79270859e4d40e29a94402674d5c Mon Sep 17 00:00:00 2001 From: Gregor Maier <gregor.maier@bigswitch.com> Date: Fri, 6 Apr 2012 15:53:32 -0700 Subject: [PATCH] Add try-catch clauses around all update queues. Now we will at least get an error message when an Exception occurs instead of silently killing the thread. [Forgot to add all files to commit] --- .../core/internal/Controller.java | 7 ++++--- .../internal/LinkDiscoveryManager.java | 10 ++++++++-- .../topology/TopologyManager.java | 15 +++++++++++---- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java index 6852adfbc..77674efe0 100644 --- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java +++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java @@ -67,6 +67,7 @@ import net.floodlightcontroller.storage.IStorageSourceService; import net.floodlightcontroller.storage.OperatorPredicate; import net.floodlightcontroller.storage.StorageException; import net.floodlightcontroller.threadpool.IThreadPoolService; +import net.floodlightcontroller.util.StackTraceUtil; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.buffer.ChannelBuffer; @@ -1597,11 +1598,11 @@ public class Controller return; } catch (StorageException e) { log.error("Storage exception in controller " + - "updates loop; terminating process", - e); + "updates loop; terminating process: {} {}", + e, StackTraceUtil.stackTraceToString(e)); return; } catch (Exception e) { - log.error("Exception in controller updates loop", e); + log.error("Exception in controller updates loop {} {}", e, StackTraceUtil.stackTraceToString(e)); } } } diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java index 87bf66c33..b3fb351df 100644 --- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java +++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java @@ -76,6 +76,7 @@ import net.floodlightcontroller.threadpool.IThreadPoolService; import net.floodlightcontroller.topology.web.TopologyWebRoutable; import net.floodlightcontroller.util.EventHistory; import net.floodlightcontroller.util.EventHistory.EvAction; +import net.floodlightcontroller.util.StackTraceUtil; import org.openflow.protocol.OFMessage; import org.openflow.protocol.OFPacketIn; @@ -216,8 +217,13 @@ public class LinkDiscoveryManager linkDiscoveryAware}); } if (linkDiscoveryAware != null) { - for (ILinkDiscoveryListener lda : linkDiscoveryAware) { // order maintained - lda.linkDiscoveryUpdate(update); + try { + for (ILinkDiscoveryListener lda : linkDiscoveryAware) { // order maintained + lda.linkDiscoveryUpdate(update); + } + } + catch (Exception e) { + log.error("Error in link discovery updates loop: {} {}", e, StackTraceUtil.stackTraceToString(e)); } } } while (updates.peek() != null); diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java index 4cd19effd..f01ab44a7 100644 --- a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java +++ b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java @@ -23,6 +23,7 @@ import net.floodlightcontroller.routing.IRoutingService; import net.floodlightcontroller.routing.Link; import net.floodlightcontroller.routing.Route; import net.floodlightcontroller.threadpool.IThreadPoolService; +import net.floodlightcontroller.util.StackTraceUtil; import org.openflow.protocol.OFPhysicalPort.OFPortState; @@ -59,9 +60,15 @@ IRoutingService, ILinkDiscoveryListener { protected class NewInstanceWorker implements Runnable { @Override public void run() { - applyUpdates(); - createNewInstance(); - informListeners(); + try { + applyUpdates(); + createNewInstance(); + informListeners(); + } + catch (Exception e) { + log.error("Error in topology instance task thread: {} {}", + e, StackTraceUtil.stackTraceToString(e)); + } } } @@ -71,7 +78,7 @@ IRoutingService, ILinkDiscoveryListener { try { update = ldUpdates.take(); } catch (Exception e) { - log.error("Error reading link discovery update. {}", e); + log.error("Error reading link discovery update. {} {}", e, StackTraceUtil.stackTraceToString(e)); } if (log.isTraceEnabled()) { log.info("Applying update: {}", update); -- GitLab