Bug 6106: Prevent flood of quarantine messages 33/41033/2
authorTom Pantelis <tpanteli@brocade.com>
Sat, 25 Jun 2016 02:04:02 +0000 (22:04 -0400)
committerTom Pantelis <tpanteli@brocade.com>
Thu, 30 Jun 2016 01:16:06 +0000 (01:16 +0000)
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>
(cherry picked from commit 3066f54d6d2c6206fa5fabc69a795993c68d2d77)

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