/** * Returns a copy (possibly not current) of the current view (a list of * {@link DistributedMember}s) */ @Override public NetView getView() { // Grab the latest view under a mutex... NetView v; latestViewReadLock.lock(); v = latestView; latestViewReadLock.unlock(); NetView result = new NetView(v, v.getViewId()); v.getMembers().stream().filter(this::isShunned).forEachOrdered(result::remove); return result; }
newView = new NetView(this.localAddress, viewNumber, mbrs, leaving, removals); newView.setFailureDetectionPorts(currentView); newView.setPublicKeys(currentView);
try { if (latestView.contains(member)) { NetView newView = new NetView(latestView, latestView.getViewId()); newView.remove(member); latestView = newView;
latestView = new NetView(initialView, initialView.getViewId()); listener.viewInstalled(latestView);
NetView newMembers = new NetView(latestView, latestView.getViewId()); newMembers.add(member); latestView = newMembers;
@Test public void testRemoveMembers() throws Exception { int numMembers = members.size(); NetView view = new NetView(members.get(0), 2, new ArrayList<>(members)); setFailureDetectionPorts(view); for (int i = 1; i < numMembers; i += 2) { view.remove(members.get(i)); assertFalse(view.contains(members.get(i))); } List<InternalDistributedMember> remainingMembers = view.getMembers(); int num = remainingMembers.size(); for (int i = 0; i < num; i++) { InternalDistributedMember mbr = remainingMembers.get(i); assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr)); } }
@Test public void testNullPublicKeysNotRetained() throws Exception { NetView view = new NetView(members.get(0), 2, new ArrayList<>(members)); setFailureDetectionPorts(view); NetView newView = new NetView(view, 3); for (InternalDistributedMember member : view.getMembers()) { view.setPublicKey(member, null); } newView.setPublicKeys(view); for (InternalDistributedMember member : view.getMembers()) { assertNull(newView.getPublicKey(member)); assertNull(view.getPublicKey(member)); } }
this.isCoordinator = false; installView(new NetView(view, view.getViewId()));
@Test public void testRemoveAll() throws Exception { int numMembers = members.size(); NetView view = new NetView(members.get(0), 2, new ArrayList<>(members)); setFailureDetectionPorts(view); Collection<InternalDistributedMember> removals = new ArrayList<>(numMembers / 2); for (int i = 1; i < numMembers; i += 2) { removals.add(members.get(i)); } view.removeAll(removals); for (InternalDistributedMember mbr : removals) { assertFalse(view.contains(mbr)); } assertEquals(numMembers - removals.size(), view.size()); List<InternalDistributedMember> remainingMembers = view.getMembers(); int num = remainingMembers.size(); for (int i = 0; i < num; i++) { InternalDistributedMember mbr = remainingMembers.get(i); assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr)); } }
NetView check = new NetView(cv, cv.getViewId() + 1); ArrayList<SuspectRequest> membersToCheck = new ArrayList<>(); synchronized (suspectRequestsInView) {
@Test public void testCreateView() throws Exception { int numMembers = members.size(); NetView view = new NetView(members.get(0), 2, members); setFailureDetectionPorts(view); assertTrue(view.getCreator().equals(members.get(0))); assertEquals(2, view.getViewId()); assertEquals(members, view.getMembers()); assertEquals(0, view.getCrashedMembers().size()); assertEquals(members.get(1), view.getLeadMember()); // a locator can't be lead member assertEquals(0, view.getShutdownMembers().size()); assertEquals(1, view.getNewMembers().size()); assertEquals(members.get(numMembers - 1), view.getNewMembers().iterator().next()); assertEquals(members.get(0), view.getCoordinator()); for (int i = 0; i < numMembers; i++) { InternalDistributedMember mbr = members.get(i); assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr)); } assertFalse(view.shouldBeCoordinator(members.get(1))); assertTrue(view.shouldBeCoordinator(members.get(0))); assertEquals(members.get(numMembers - 1), view.getCoordinator(Collections.singletonList(members.get(0)))); members.get(numMembers - 1).getNetMember().setPreferredForCoordinator(false); assertEquals(members.get(1), view.getCoordinator(Collections.singletonList(members.get(0)))); members.get(numMembers - 1).getNetMember().setPreferredForCoordinator(true); List<InternalDistributedMember> preferred = view.getPreferredCoordinators( Collections.<InternalDistributedMember>singleton(members.get(1)), members.get(0), 2); assertEquals(2, preferred.size()); assertEquals(members.get(numMembers - 1), preferred.get(0)); }
NetView check = new NetView(newView, newView.getViewId() + 1); synchronized (leftMembers) { check.removeAll(leftMembers);
@Test public void testCopyView() throws Exception { NetView view = new NetView(members.get(0), 2, new ArrayList<>(members)); setFailureDetectionPorts(view); NetView newView = new NetView(view, 3); assertTrue(newView.getCreator().equals(members.get(0))); assertEquals(3, newView.getViewId()); assertEquals(members, newView.getMembers()); assertEquals(0, newView.getCrashedMembers().size()); assertEquals(members.get(1), newView.getLeadMember()); // a locator can't be lead member assertEquals(0, newView.getShutdownMembers().size()); assertEquals(0, newView.getNewMembers().size()); assertTrue(newView.equals(view)); assertTrue(view.equals(newView)); newView.remove(members.get(1)); assertFalse(newView.equals(view)); }
if (currentView == null) { NetView newView = new NetView(this.localAddress); newView.setFailureDetectionPort(localAddress, services.getHealthMonitor().getFailureDetectionPort());
NetView newView = new NetView(initialView, viewId);
@Test public void testAddLotsOfMembers() throws Exception { NetView view = new NetView(members.get(0), 2, new ArrayList<>(members)); setFailureDetectionPorts(view); NetView copy = new NetView(view, 2); int oldSize = view.size(); for (int i = 0; i < 100; i++) { InternalDistributedMember mbr = new InternalDistributedMember(SocketCreator.getLocalHost(), 2000 + i); mbr.setVmKind(ClusterDistributionManager.NORMAL_DM_TYPE); mbr.setVmViewId(2); view.add(mbr); view.setFailureDetectionPort(mbr, 2000 + i); } assertEquals(oldSize + 100, view.size()); for (InternalDistributedMember mbr : view.getMembers()) { assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr)); } assertEquals(100, view.getNewMembers(copy).size()); }
for (InternalDistributedMember id : v.getMembers()) { if (requestingMemberID.compareTo(id, false) == 0) { NetView newView = new NetView(v, v.getViewId()); newView.remove(id); v = newView;
NetView check = new NetView(v, v.getViewId() + 1); synchronized (removedMembers) { removedMembers.add(mbr);
NetView check = new NetView(v, v.getViewId() + 1); check.remove(mbr); synchronized (removedMembers) {
vmbrs.add(members[i]); NetView lastView = new NetView(members[0], 4, vmbrs); InternalDistributedMember leader = members[2]; assertTrue(!leader.getNetMember().preferredForCoordinator()); new ArrayList<InternalDistributedMember>(lastView.getMembers()); newMbrs.removeAll(failedMembers); NetView newView = new NetView(members[0], 5, newMbrs, Collections.emptySet(), failedMembers);