/** * Sends heartbeat to each of the cluster members. * Checks whether a member has failed to send a heartbeat in time * (see {@link #maxNoHeartbeatMillis}) * and removes that member from the cluster. * <p></p> * This method is only called on the master member. * * @param now the current cluster clock time */ private void heartbeatWhenMaster(long now) { Collection<MemberImpl> members = clusterService.getMemberImpls(); for (MemberImpl member : members) { if (!member.localMember()) { try { logIfConnectionToEndpointIsMissing(now, member); if (suspectMemberIfNotHeartBeating(now, member)) { continue; } pingMemberIfRequired(now, member); sendHeartbeat(member); } catch (Throwable e) { logger.severe(e); } } } }
/** * Sends heartbeat to each of the cluster members. * Checks whether a member has failed to send a heartbeat in time * (see {@link #maxNoHeartbeatMillis}) * and removes that member from the cluster. * <p></p> * This method is only called on the master member. * * @param now the current cluster clock time */ private void heartbeatWhenMaster(long now) { Collection<MemberImpl> members = clusterService.getMemberImpls(); for (MemberImpl member : members) { if (!member.localMember()) { try { logIfConnectionToEndpointIsMissing(now, member); if (suspectMemberIfNotHeartBeating(now, member)) { continue; } pingMemberIfRequired(now, member); sendHeartbeat(member); } catch (Throwable e) { logger.severe(e); } } } }
/** * Sends heartbeat to each of the cluster members. * Checks whether the master member has failed to send a heartbeat (see {@link #maxNoHeartbeatMillis}) * and removes that master member from cluster, if it fails on heartbeat. * <p></p> * This method is called on NON-master members. */ private void heartbeatWhenSlave(long now) { MembershipManager membershipManager = clusterService.getMembershipManager(); Collection<Member> members = clusterService.getMembers(MemberSelectors.NON_LOCAL_MEMBER_SELECTOR); for (Member member : members) { try { logIfConnectionToEndpointIsMissing(now, member); if (suspectMemberIfNotHeartBeating(now, member)) { continue; } if (membershipManager.isMemberSuspected(member.getAddress())) { continue; } pingMemberIfRequired(now, member); sendHeartbeat(member); } catch (Throwable e) { logger.severe(e); } } }
/** * Sends heartbeat to each of the cluster members. * Checks whether the master member has failed to send a heartbeat (see {@link #maxNoHeartbeatMillis}) * and removes that master member from cluster, if it fails on heartbeat. * <p></p> * This method is called on NON-master members. */ private void heartbeatWhenSlave(long now) { MembershipManager membershipManager = clusterService.getMembershipManager(); Collection<Member> members = clusterService.getMembers(MemberSelectors.NON_LOCAL_MEMBER_SELECTOR); for (Member member : members) { try { logIfConnectionToEndpointIsMissing(now, member); if (suspectMemberIfNotHeartBeating(now, member)) { continue; } if (membershipManager.isMemberSuspected(member.getAddress())) { continue; } pingMemberIfRequired(now, member); sendHeartbeat(member); } catch (Throwable e) { logger.severe(e); } } }