@Override protected void handleEvent(ClusterDistributionManager manager, MembershipListener listener) { listener.memberDeparted(manager, getId(), false); } }
private void notifyListenersMemberRemoved(InternalDistributedMember member, boolean crashed) { Iterator it = membershipListeners.keySet().iterator(); while (it.hasNext()) { try { ((MembershipListener) it.next()).memberDeparted(getDistributionManagerWithNoCheck(), member, crashed); } catch (Exception e) { logger.warn("Ignoring exception during member departed listener notification", e); } } }
@Override protected void handleEvent(ClusterDistributionManager manager, MembershipListener listener) { listener.memberDeparted(manager, getId(), true/* crashed */); } }
listener.memberDeparted(this, theId, crashed);
@Test public void waitForElderStopsWaitingWhenUpdated() { ClusterElderManager clusterElderManager = new ClusterElderManager(clusterDistributionManager); when(clusterDistributionManager.getId()).thenReturn(member0); when(clusterDistributionManager.isCurrentMember(eq(member0))).thenReturn(true); AtomicReference<List<InternalDistributedMember>> currentMembers = new AtomicReference<>(Arrays.asList(member1, member0)); when(clusterDistributionManager.getViewMembers()).then(invocation -> currentMembers.get()); AtomicReference<MembershipListener> membershipListener = new AtomicReference<>(); doAnswer(invocation -> { membershipListener.set(invocation.getArgument(0)); return null; }).when(clusterDistributionManager).addMembershipListener(any()); Callable<Boolean> waitForElder = () -> clusterElderManager.waitForElder(member0); Callable<Void> updateMembershipView = () -> { // Wait for membership listener to be added await().until(() -> membershipListener.get() != null); currentMembers.set(Arrays.asList(member0)); membershipListener.get().memberDeparted(clusterDistributionManager, member1, true); return null; }; concurrencyRule.add(waitForElder).expectValue(true); concurrencyRule.add(updateMembershipView); concurrencyRule.executeInParallel(); assertThat(clusterElderManager.getElderId()).isEqualTo(member0); }