Bug 6106: Prevent flood of quarantine messages 42/40842/3
authorTom Pantelis <tpanteli@brocade.com>
Sat, 25 Jun 2016 02:04:02 +0000 (22:04 -0400)
committerTom Pantelis <tpanteli@brocade.com>
Wed, 29 Jun 2016 08:11:16 +0000 (04:11 -0400)
Added a "quarantined" flag to the QuarantinedMonitorActor so it only
prints the warning and attempts to restart the karaf container once
(which is invoked indirectly via the caller's Effect callback).

Change-Id: I0a57af729280abded93d1b1a575df1672e52032e
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/QuarantinedMonitorActor.java

index 8e2693e900dea8f2d0fa7bc1750eef126667d213..a9f58898d412a94aba0bc42ea4bc5a36c159a62a 100644 (file)
@@ -33,6 +33,7 @@ public class QuarantinedMonitorActor extends UntypedActor {
     public static final String ADDRESS = "quarantined-monitor";
 
     private final Effect callback;
+    private boolean quarantined;
 
     protected QuarantinedMonitorActor(Effect callback) {
         this.callback = callback;
@@ -54,6 +55,10 @@ public class QuarantinedMonitorActor extends UntypedActor {
 
         // check to see if we got quarantined by another node
 
+        if(quarantined) {
+            return;
+        }
+
         // TODO: follow https://github.com/akka/akka/issues/18758 to see if Akka adds a named
         // exception for quarantine detection
         if (message instanceof AssociationErrorEvent) {
@@ -62,6 +67,8 @@ public class QuarantinedMonitorActor extends UntypedActor {
             if (cause instanceof InvalidAssociation) {
                 Throwable cause2 = ((InvalidAssociation) cause).getCause();
                 if (cause2.getMessage().contains("quarantined this system")) {
+                    quarantined = true;
+
                     LOG.warn("Got quarantined by {}", event.getRemoteAddress());
 
                     // execute the callback