+ } else if (message instanceof AssociationErrorEvent event) {
+ final String errorMessage = message.toString();
+ LOG.trace("errorMessage:{}", errorMessage);
+ if (errorMessage.contains("The remote system has a UID that has been quarantined")) {
+ final Address address = event.getRemoteAddress();
+ addressSet.add(address);
+ count++;
+ LOG.trace("address:{} addressSet: {} count:{}", address, addressSet, count);
+ if (count >= MESSAGE_THRESHOLD && addressSet.size() > 1) {
+ count = 0;
+ addressSet.clear();
+ LOG.warn("Got quarantined via AssociationEvent by {}", event.remoteAddress());
+ quarantined = true;
+
+ // execute the callback
+ callback.apply();
+ }
+ } else if (errorMessage.contains("The remote system explicitly disassociated")) {
+ count = 0;
+ addressSet.clear();
+ }
+ } else if (message instanceof ClusterEvent.MemberDowned event) {
+ if (Cluster.get(getContext().system()).selfMember().equals(event.member())) {
+ LOG.warn("This member has been downed, restarting");
+
+ callback.apply();
+ }