/** * check to see if the new view shows a drop of 51% or more */ private boolean isNetworkPartition(NetView newView, boolean logWeights) { if (currentView == null) { return false; } int oldWeight = currentView.memberWeight(); int failedWeight = newView.getCrashedMemberWeight(currentView); if (failedWeight > 0 && logWeights) { if (logger.isInfoEnabled() && newView.getCreator().equals(localAddress)) { // view-creator // logs this newView.logCrashedMemberWeights(currentView, logger); } int failurePoint = (int) (Math.round(51.0 * oldWeight) / 100.0); if (failedWeight > failurePoint && quorumLostView != newView) { quorumLostView = newView; logger.warn("total weight lost in this view change is {} of {}. Quorum has been lost!", failedWeight, oldWeight); services.getManager().quorumLost(newView.getActualCrashedMembers(currentView), currentView); return true; } } return false; }
Thread.sleep(BROADCAST_MESSAGE_SLEEP_TIME); Set<InternalDistributedMember> crashes = newView.getActualCrashedMembers(currentView); forceDisconnect(String.format( "Exiting due to possible network partition event due to loss of %s cache processes: %s",
Set<InternalDistributedMember> crashes = newView.getActualCrashedMembers(currentView); forceDisconnect(String.format( "Exiting due to possible network partition event due to loss of %s cache processes: %s",
Set<InternalDistributedMember> actual = newView.getActualCrashedMembers(lastView); assertTrue(!actual.contains(members[members.length - 2]));