@Override protected void onEvent(Event event) { MemberTerminatedEvent memberTerminatedEvent = (MemberTerminatedEvent) event; faultHandler.getMemberTimeStampMap().remove(memberTerminatedEvent.getMemberId()); log.debug("Member was removed from the timestamp map: [member] " + memberTerminatedEvent.getMemberId()); } });
@Override protected void onEvent(Event event) { MemberActivatedEvent memberActivatedEvent = (MemberActivatedEvent) event; // do not put this member if we have already received a health event faultHandler.getMemberTimeStampMap().putIfAbsent(memberActivatedEvent.getMemberId(), System.currentTimeMillis()); log.debug("Member was added to the timestamp map: [member] " + memberActivatedEvent.getMemberId()); } });
@Override public void onMemberSuspendedEvent(MemberSuspendedEvent memberSuspendedEvent) { if (log.isInfoEnabled()) { log.info(String.format("Member suspended event received: [service] %s [cluster] %s [member] %s", memberSuspendedEvent.getServiceName(), memberSuspendedEvent.getClusterId(), memberSuspendedEvent.getMemberId())); } if (log.isDebugEnabled()) { String msg = gson.toJson(memberSuspendedEvent); log.debug("Member suspended event msg:" + msg); } boolean memberInitialized = ExtensionUtils.checkTopologyConsistency(memberSuspendedEvent.getServiceName(), memberSuspendedEvent.getClusterId(), memberSuspendedEvent.getMemberId()); if (!memberInitialized) { if (log.isErrorEnabled()) { log.error("Member has not initialized. Failed to execute member suspended event"); } return; } Map<String, String> env = new HashMap<String, String>(); ExtensionUtils.executeMemberSuspendedExtension(env); }
@Override public void onMemberTerminatedEvent(MemberTerminatedEvent memberTerminatedEvent) { if (log.isInfoEnabled()) { log.info(String.format("Member terminated event received: [service] %s [cluster] %s [member] %s", memberTerminatedEvent.getServiceName(), memberTerminatedEvent.getClusterId(), memberTerminatedEvent.getMemberId())); } if (log.isDebugEnabled()) { String msg = gson.toJson(memberTerminatedEvent); log.debug("Member terminated event msg:" + msg); } boolean memberInitialized = ExtensionUtils.checkTopologyConsistency(memberTerminatedEvent.getServiceName(), memberTerminatedEvent.getClusterId(), memberTerminatedEvent.getMemberId()); if (!memberInitialized) { if (log.isErrorEnabled()) { log.error("Member has not initialized. Failed to execute member terminated event"); } return; } Map<String, String> env = new HashMap<String, String>(); ExtensionUtils.executeMemberTerminatedExtension(env); }
@Override public void onMemberActivatedEvent(MemberActivatedEvent memberActivatedEvent) { if (log.isInfoEnabled()) { log.info(String.format("Member activated event received: [service] %s [cluster] %s [member] %s", memberActivatedEvent.getServiceName(), memberActivatedEvent.getClusterId(), memberActivatedEvent.getMemberId())); } if (log.isDebugEnabled()) { String msg = gson.toJson(memberActivatedEvent); log.debug("Member activated event msg:" + msg); } boolean memberInitialized = ExtensionUtils.checkTopologyConsistency(memberActivatedEvent.getServiceName(), memberActivatedEvent.getClusterId(), memberActivatedEvent.getMemberId()); if (!memberInitialized) { if (log.isErrorEnabled()) { log.error("Member has not initialized. Failed to execute member activated event"); } return; } Map<String, String> env = new HashMap<String, String>(); ExtensionUtils.executeMemberActivatedExtension(env); }
@Override protected void onEvent(Event event) { if (!initialized) { try { TopologyManager.acquireReadLock(); log.debug("Complete topology event received to fault handling window processor."); CompleteTopologyEvent completeTopologyEvent = (CompleteTopologyEvent) event; initialized = faultHandler.loadTimeStampMapFromTopology(completeTopologyEvent.getTopology()); } catch (Exception e) { log.error("Error loading member time stamp map from complete topology event.", e); } finally { TopologyManager.releaseReadLock(); } } } });
@Override public void onMemberStartedEvent(MemberStartedEvent memberStartedEvent) { if (log.isInfoEnabled()) { log.info(String.format("Member started event received: [service] %s [cluster] %s [member] %s", memberStartedEvent.getServiceName(), memberStartedEvent.getClusterId(), memberStartedEvent.getMemberId())); } if (log.isDebugEnabled()) { String msg = gson.toJson(memberStartedEvent); log.debug("Member started event msg:" + msg); } boolean memberInitialized = ExtensionUtils.checkTopologyConsistency(memberStartedEvent.getServiceName(), memberStartedEvent.getClusterId(), memberStartedEvent.getMemberId()); if (!memberInitialized) { if (log.isErrorEnabled()) { log.error("Member has not initialized. Failed to execute member started event"); } return; } Map<String, String> env = new HashMap<String, String>(); ExtensionUtils.executeMemberStartedExtension(env); }
@Override protected void onEvent(Event event) { if (!initialized) { try { TopologyManager.acquireReadLock(); log.debug("Complete topology event received to fault handling window processor."); CompleteTopologyEvent completeTopologyEvent = (CompleteTopologyEvent) event; initialized = faultHandler.loadTimeStampMapFromTopology(completeTopologyEvent.getTopology()); } catch (Exception e) { log.error("Error loading member time stamp map from complete topology event.", e); } finally { TopologyManager.releaseReadLock(); } } } });
@Override protected void onEvent(Event event) { MemberTerminatedEvent memberTerminatedEvent = (MemberTerminatedEvent) event; faultHandler.getMemberTimeStampMap().remove(memberTerminatedEvent.getMemberId()); log.debug("Member was removed from the timestamp map: [member] " + memberTerminatedEvent.getMemberId()); } });
@Override protected void onEvent(Event event) { MemberActivatedEvent memberActivatedEvent = (MemberActivatedEvent) event; // do not put this member if we have already received a health event faultHandler.getMemberTimeStampMap().putIfAbsent(memberActivatedEvent.getMemberId(), System.currentTimeMillis()); log.debug("Member was added to the timestamp map: [member] " + memberActivatedEvent.getMemberId()); } });
@Override public void onCompleteTopologyEvent(CompleteTopologyEvent completeTopologyEvent) { if (log.isDebugEnabled()) { log.debug("Complete topology event received"); } String serviceNameInPayload = CartridgeAgentConfiguration.getInstance().getServiceName(); String clusterIdInPayload = CartridgeAgentConfiguration.getInstance().getClusterId(); String memberIdInPayload = CartridgeAgentConfiguration.getInstance().getMemberId(); boolean isConsistent = ExtensionUtils.checkTopologyConsistency(serviceNameInPayload, clusterIdInPayload, memberIdInPayload); if (!isConsistent) { // if this member isn't there in the complete topology return; } else { CartridgeAgentConfiguration.getInstance().setInitialized(true); } Topology topology = completeTopologyEvent.getTopology(); Service service = topology.getService(serviceNameInPayload); Cluster cluster = service.getCluster(clusterIdInPayload); Map<String, String> env = new HashMap<String, String>(); env.put("STRATOS_TOPOLOGY_JSON", gson.toJson(topology.getServices(), serviceType)); env.put("STRATOS_MEMBER_LIST_JSON", gson.toJson(cluster.getMembers(), memberType)); ExtensionUtils.executeCompleteTopologyExtension(env); }