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)
public static final String ADDRESS = "quarantined-monitor";
private final Effect callback;
public static final String ADDRESS = "quarantined-monitor";
private final Effect callback;
+ private boolean quarantined;
protected QuarantinedMonitorActor(Effect callback) {
this.callback = callback;
protected QuarantinedMonitorActor(Effect callback) {
this.callback = callback;
// check to see if we got quarantined by another node
// 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) {
// TODO: follow https://github.com/akka/akka/issues/18758 to see if Akka adds a named
// exception for quarantine detection
if (message instanceof AssociationErrorEvent) {
if (cause instanceof InvalidAssociation) {
Throwable cause2 = ((InvalidAssociation) cause).getCause();
if (cause2.getMessage().contains("quarantined this system")) {
if (cause instanceof InvalidAssociation) {
Throwable cause2 = ((InvalidAssociation) cause).getCause();
if (cause2.getMessage().contains("quarantined this system")) {
LOG.warn("Got quarantined by {}", event.getRemoteAddress());
// execute the callback
LOG.warn("Got quarantined by {}", event.getRemoteAddress());
// execute the callback