@Override public Set<InternalDistributedMember> addAllMembershipListenerAndGetAllIds(MembershipListener l) { MembershipManager mgr = membershipManager; mgr.getViewLock().writeLock().lock(); try { synchronized (this.membersLock) { // Don't let the members come and go while we are adding this // listener. This ensures that the listener (probably a // ReplyProcessor) gets a consistent view of the members. addAllMembershipListener(l); return getDistributionManagerIdsIncludingAdmin(); } } finally { mgr.getViewLock().writeLock().unlock(); } }