public void becomeCoordinator() { CoordGmsImpl tmp=(CoordGmsImpl)impls.get(COORD); if(tmp == null) { tmp=new CoordGmsImpl(this); impls.put(COORD, tmp); } try { first_view_sent=false; tmp.init(); } catch(Exception e) { log.error(Util.getMessage("ExceptionSwitchingToCoordinatorRole"), e); } setImpl(tmp); }
public void suspect(Address mbr) { if(mbr.equals(gms.local_addr)) { if(log.isWarnEnabled()) log.warn("I am the coord and I'm suspected -- will probably leave shortly"); return; } Collection<Request> suspected=new LinkedHashSet<>(1); suspected.add(new Request(Request.SUSPECT,mbr)); handleMembershipChange(suspected); }
public void join(Address mbr,boolean useFlushIfPresent) { wrongMethod("join"); }
log.warn(mbr + " already present; returning existing view " + gms.view); JoinRsp join_rsp=new JoinRsp(new View(gms.view_id, gms.members.getMembers()), gms.getDigest()); sendJoinResponse(join_rsp, mbr); it.remove(); sendLeaveResponses(leaving_mbrs); // no-op if no leaving members log.warn("GMS flush by coordinator at " + gms.getLocalAddress() + " failed"); sendJoinResponses(join_rsp, new_mbrs); // might be a no-op if no joining members gms.castViewChangeWithDest(new_view, null, tmp_mbrs); sendJoinResponses(join_rsp, new_mbrs); // Return result to newly joined clients (if there are any)
sendLeaveResponses(leaving_mbrs); // we still have to send potential leave responses sendLeaveResponses(leaving_mbrs); // no-op if no leaving members
@ManagedOperation(description="Fetches digests from all members and installs them, unblocking blocked members") public void fixDigests() { if(impl instanceof CoordGmsImpl) ((CoordGmsImpl)impl).fixDigests(); }
public MergeId _getMergeId() { return impl instanceof CoordGmsImpl? ((CoordGmsImpl)impl).getMergeId() : null; }
/** The coordinator itself wants to leave the group */ public void leave(Address mbr) { if(mbr == null) { if(log.isErrorEnabled()) log.error(Util.getMessage("MemberSAddressIsNull")); return; } leaving=true; Address next_coord=gms.determineNextCoordinator(); if(next_coord != null) sendLeaveReqTo(next_coord); else { gms.getViewHandler().add(new Request(Request.LEAVE, mbr)); // If we're the coord leaving, ignore gms.leave_timeout: https://issues.jboss.org/browse/JGRP-1509 long timeout=(long)(Math.max(gms.leave_timeout, gms.view_ack_collection_timeout) * 1.10); gms.getViewHandler().waitUntilComplete(timeout); } gms.becomeClient(); }
public void handleExit() { cancelMerge(); }
sendLeaveResponses(leaving_mbrs); // we still have to send potential leave responses sendLeaveResponses(leaving_mbrs); // no-op if no leaving members
@ManagedOperation(description="Fetches digests from all members and installs them, unblocking blocked members") public void fixDigests() { if(impl instanceof CoordGmsImpl) ((CoordGmsImpl)impl).fixDigests(); }
public MergeId _getMergeId() { return impl instanceof CoordGmsImpl? ((CoordGmsImpl)impl).getMergeId() : null; }
/** The coordinator itself wants to leave the group */ public void leave(Address mbr) { if(mbr == null) { if(log.isErrorEnabled()) log.error(Util.getMessage("MemberSAddressIsNull")); return; } leaving=true; Address next_coord=gms.determineNextCoordinator(); if(next_coord != null) sendLeaveReqTo(next_coord); else { gms.getViewHandler().add(new Request(Request.LEAVE, mbr)); // If we're the coord leaving, ignore gms.leave_timeout: https://issues.jboss.org/browse/JGRP-1509 long timeout=(long)(Math.max(gms.leave_timeout, gms.view_ack_collection_timeout) * 1.10); gms.getViewHandler().waitUntilComplete(timeout); } gms.becomeClient(); }
public void init() throws Exception { super.init(); cancelMerge(); }
public void becomeCoordinator() { CoordGmsImpl tmp=(CoordGmsImpl)impls.get(COORD); if(tmp == null) { tmp=new CoordGmsImpl(this); impls.put(COORD, tmp); } try { tmp.init(); } catch(Exception e) { log.error("exception switching to coordinator role", e); } setImpl(tmp); }
public void joinWithStateTransfer(Address mbr,boolean useFlushIfPresent) { wrongMethod("join"); }
public void suspect(Address mbr) { if(mbr.equals(gms.local_addr)) { if(log.isWarnEnabled()) log.warn("I am the coord and I'm being am suspected -- will probably leave shortly"); return; } Collection emptyVector=new LinkedHashSet(0); Collection suspected=new LinkedHashSet(1); suspected.add(mbr); handleMembershipChange(emptyVector, emptyVector, suspected); }
public void becomeCoordinator() { CoordGmsImpl tmp=(CoordGmsImpl)impls.get(COORD); if(tmp == null) { tmp=new CoordGmsImpl(this); impls.put(COORD, tmp); } try { first_view_sent=false; tmp.init(); } catch(Exception e) { log.error(Util.getMessage("ExceptionSwitchingToCoordinatorRole"), e); } setImpl(tmp); }
public void joinWithStateTransfer(Address mbr,boolean useFlushIfPresent) { wrongMethod("join"); }
public void suspect(Address mbr) { if(mbr.equals(gms.local_addr)) { if(log.isWarnEnabled()) log.warn("I am the coord and I'm suspected -- will probably leave shortly"); return; } Collection<Request> suspected=new LinkedHashSet<>(1); suspected.add(new Request(Request.SUSPECT,mbr)); handleMembershipChange(suspected); }