/** * test hook * * @return the current membership view coordinator */ @Override public DistributedMember getCoordinator() { latestViewReadLock.lock(); try { return latestView == null ? null : latestView.getCoordinator(); } finally { latestViewReadLock.unlock(); } }
public static InternalDistributedMember getCurrentCoordinator() { return getGmsJoinLeave().getView().getCoordinator(); }
/** * Returns the coordinator of this view, rejecting any in the given collection of IDs */ public InternalDistributedMember getCoordinator( Collection<InternalDistributedMember> rejections) { if (rejections == null) { return getCoordinator(); } synchronized (membersLock) { for (InternalDistributedMember addr : members) { if (addr.getNetMember().preferredForCoordinator() && !rejections.contains(addr)) { return addr; } } for (InternalDistributedMember addr : members) { if (!rejections.contains(addr)) { return addr; } } } return null; }
if (v.getCoordinator().equals(localAddress)) { return false; msg.getSender(), localAddress, v.getCoordinator()); JoinResponseMessage jrm = new JoinResponseMessage(msg.getMemberID(), v, msg.getRequestId()); services.getMessenger().send(jrm);
@Override public void installView(NetView v) { this.view = v; if (this.jgAddress.getVmViewId() < 0) { this.jgAddress.setVmViewId(this.localAddress.getVmViewId()); } List<JGAddress> mbrs = new ArrayList<>(v.size()); mbrs.addAll(v.getMembers().stream().map(JGAddress::new).collect(Collectors.toList())); ViewId vid = new ViewId(new JGAddress(v.getCoordinator()), v.getViewId()); View jgv = new View(vid, new ArrayList<>(mbrs)); logger.trace("installing view into JGroups stack: {}", jgv); this.myChannel.down(new Event(Event.VIEW_CHANGE, jgv)); addressesWithIoExceptionsProcessed.clear(); if (encrypt != null) { encrypt.installView(v); } synchronized (scheduledMcastSeqnos) { for (DistributedMember mbr : v.getCrashedMembers()) { scheduledMcastSeqnos.remove(mbr); } for (DistributedMember mbr : v.getShutdownMembers()) { scheduledMcastSeqnos.remove(mbr); } } }
private void processFindCoordinatorRequest(FindCoordinatorRequest req) { FindCoordinatorResponse resp; if (this.isJoined) { NetView v = currentView; resp = new FindCoordinatorResponse(v.getCoordinator(), localAddress, services.getMessenger().getPublicKey(v.getCoordinator()), req.getRequestId()); } else { resp = new FindCoordinatorResponse(localAddress, localAddress, services.getMessenger().getPublicKey(localAddress), req.getRequestId()); } resp.setRecipient(req.getMemberID()); services.getMessenger().send(resp); }
InternalDistributedMember coord = v.getCoordinator(); if (searchState.alreadyTried.contains(coord)) { searchState.view = response.getCurrentView();
suspectRequests, cv, cv.getCoordinator()); if (cv.getCoordinator().equals(localAddress)) { "Proposed view with suspects & leaving members removed is {}\nwith coordinator {}\nmy address is {}", check, check.getCoordinator(), localAddress); InternalDistributedMember coordinator = check.getCoordinator(); if (coordinator != null && coordinator.equals(localAddress)) {
if (isCoordinator && !localAddress.equals(view.getCoordinator()) && getViewCreator() != null) { getViewCreator().markViewCreatorForShutdown();
@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)); }
coordinator = v.getCoordinator(Collections.emptyList()); } else { coordinator = v.getCoordinator(findRequest.getRejectedCoordinators()); coordinator = localAddress; if (v != null && localAddress != null && !localAddress.equals(v.getCoordinator())) { logger.info("This member is becoming coordinator since view {}", v); v = null;
private void sendHeartbeats(List<InternalDistributedMember> mbrs, int startIndex) { InternalDistributedMember coordinator = currentView.getCoordinator(); if (coordinator != null && !coordinator.equals(localAddress)) { HeartbeatMessage message = new HeartbeatMessage(-1);
check.removeAll(leftMembers); if (check.getCoordinator().equals(localAddress)) { synchronized (viewInstallationLock) { becomeCoordinator(mbr);
check.removeAll(leftMembers); if (check.getCoordinator().equals(localAddress)) { synchronized (viewInstallationLock) { becomeCoordinator(mbr);