@Override public String toString() { if (this.isShortForm) { return "FindCoordinatorResponse(coordinator=" + coordinator + ")"; } else { return "FindCoordinatorResponse(coordinator=" + coordinator + ", fromView=" + fromView + ", viewId=" + (view == null ? "null" : view.getViewId()) + ", registrants=" + (registrants == null ? "none" : registrants) + ", senderId=" + senderId + ", network partition detection enabled=" + this.networkPartitionDetectionEnabled + ", locators preferred as coordinators=" + this.usePreferredCoordinators + ")"; } }
@Override public String toString() { return "InstallViewMessage(type=" + this.kind + "; Current ViewID=" + view.getViewId() + "; Previous View ID=" + previousViewId + "; " + this.view + "; cred=" + (credentials == null ? "null" : "not null") + ")"; }
public long getViewId() { return view.getViewId(); }
/** * 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; }
@Override public void installView(NetView v) { if (latestViewId < 0 && !isConnected()) { latestViewId = v.getViewId(); latestView = v; logger.debug("MembershipManager: initial view is {}", latestView); } else { handleOrDeferViewEvent(v); } }
public static Integer getViewId() { return getGmsJoinLeave().getView().getViewId(); }
long newId = viewArg.getViewId(); LocalViewMessage v = new LocalViewMessage(address, newId, viewArg, GMSMembershipManager.this);
synchronized (viewInstallationLock) { int rand = testing ? 0 : NetView.RANDOM.nextInt(10); int viewNumber = currentView.getViewId() + 5 + rand; if (this.localAddress.getVmViewId() < 0) { this.localAddress.setVmViewId(viewNumber);
@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); } } }
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);
/** * Dispatch routine for processing a single startup event * * @param o the startup event to handle */ private void processStartupEvent(StartupEvent o) { // Most common events first if (o.isDistributionMessage()) { // normal message try { dispatchMessage(o.dmsg); } catch (MemberShunnedException e) { // message from non-member - ignore } } else if (o.isGmsView()) { // view event processView(o.gmsView.getViewId(), o.gmsView); } else if (o.isSurpriseConnect()) { // connect processSurpriseConnect(o.member); } else // sanity throw new InternalGemFireError( String.format("unknown startup event: %s", o)); }
private boolean sendView(NetView view, boolean preparing, ViewReplyProcessor viewReplyProcessor) throws InterruptedException { int id = view.getViewId(); InstallViewMessage msg = new InstallViewMessage(view, services.getAuthenticator().getCredentials(this.localAddress), preparing); this.isCoordinator = false; installView(new NetView(view, view.getViewId()));
public static void send(ClusterDistributionManager dm) throws InterruptedException { long viewId = dm.getMembershipManager().getView().getViewId(); ReplyProcessor21 rp = new ReplyProcessor21(dm, dm.getOtherDistributionManagerIds()); rp.enableSevereAlertProcessing(); dm.putOutgoing(new WaitForViewInstallation(viewId, rp.getProcessorId())); try { rp.waitForReplies(); } catch (ReplyException e) { if (e.getCause() != null && !(e.getCause() instanceof CancelException)) { if (logger.isDebugEnabled()) { logger.debug("Reply to WaitForViewInstallation received odd exception", e.getCause()); } } } // this isn't necessary for TXFailoverCommand, which is the only use of this // message right now. TXFailoverCommand performs messaging to all servers, // which will force us to wait for the view containing the crash of another // server to be processed. // dm.waitForViewInstallation(viewId); }
private void ackView(InstallViewMessage m) { if (!playingDead && m.getView().contains(m.getView().getCreator())) { services.getMessenger() .send(new ViewAckMessage(m.getSender(), m.getView().getViewId(), m.isPreparing())); } }
@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)); }
@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)); }