/** * returns the weight of the members in this membership view */ public int memberWeight() { int result = 0; InternalDistributedMember lead = getLeadMember(); for (InternalDistributedMember mbr : this.members) { result += mbr.getNetMember().getMemberWeight(); switch (mbr.getVmKind()) { case DistributionManager.NORMAL_DM_TYPE: result += 10; if (lead != null && mbr.equals(lead)) { result += 5; } break; case DistributionManager.LOCATOR_DM_TYPE: result += 3; break; case DistributionManager.ADMIN_ONLY_DM_TYPE: break; default: throw new IllegalStateException("Unknown member type: " + mbr.getVmKind()); } } return result; }
/** * logs the weight of failed members wrt the given previous * view */ public void logCrashedMemberWeights(NetView oldView, Logger log) { InternalDistributedMember lead = oldView.getLeadMember(); for (InternalDistributedMember mbr : this.crashedMembers) { if (!oldView.contains(mbr)) { continue; } int mbrWeight = mbr.getNetMember().getMemberWeight(); switch (mbr.getVmKind()) { case DistributionManager.NORMAL_DM_TYPE: if (lead != null && mbr.equals(lead)) { mbrWeight += 15; } else { mbrWeight += 10; } break; case DistributionManager.LOCATOR_DM_TYPE: mbrWeight += 3; break; case DistributionManager.ADMIN_ONLY_DM_TYPE: break; default: throw new IllegalStateException("Unknown member type: " + mbr.getVmKind()); } log.info(" " + mbr + " had a weight of " + mbrWeight); } }
private int getWeight(Collection<InternalDistributedMember> idms, InternalDistributedMember leader) { int weight = 0; for (InternalDistributedMember mbr : idms) { int thisWeight = mbr.getNetMember().getMemberWeight(); if (mbr.getVmKind() == 10 /* NORMAL_DM_KIND */) { thisWeight += 10; if (leader != null && mbr.equals(leader)) { thisWeight += 5; } } else if (mbr.getNetMember().preferredForCoordinator()) { thisWeight += 3; } weight += thisWeight; } return weight; }
/** * returns the weight of crashed members in this membership view * with respect to the given previous view */ public int getCrashedMemberWeight(NetView oldView) { int result = 0; InternalDistributedMember lead = oldView.getLeadMember(); for (InternalDistributedMember mbr : this.crashedMembers) { if (!oldView.contains(mbr)) { continue; } result += mbr.getNetMember().getMemberWeight(); switch (mbr.getVmKind()) { case DistributionManager.NORMAL_DM_TYPE: result += 10; if (lead != null && mbr.equals(lead)) { result += 5; } break; case DistributionManager.LOCATOR_DM_TYPE: result += 3; break; case DistributionManager.ADMIN_ONLY_DM_TYPE: break; default: throw new IllegalStateException("Unknown member type: " + mbr.getVmKind()); } } return result; }