public void makeSecondary() { if (logger.isDebugEnabled()) { logger.debug("{}: Did not obtain the lock on {}. Starting as secondary gateway sender.", this.sender, this.lockToken); } // Set primary flag to false logger.info( "{} starting as secondary because primary gateway sender is available on member :{}", new Object[] {this.sender.getId(), advisePrimaryGatewaySender()}); this.isPrimary = false; new UpdateAttributesProcessor(this.sender).distribute(false); }
public boolean volunteerForPrimary() { if (logger.isDebugEnabled()) { logger.debug("Sender : {} is volunteering for Primary ", this.sender.getId()); } if (advisePrimaryGatewaySender() == null) { if (!adviseEldestGatewaySender()) { if (logger.isDebugEnabled()) { logger.debug( "Sender {} is not the eldest in the system. Giving preference to eldest sender to become primary...", this.sender); } return false; } if (logger.isDebugEnabled()) { logger.debug("Sender : {} no Primary available. So going to acquire distributed lock", this.sender); } this.lockService.lock(this.lockToken, 10000, -1); return this.lockService.isHeldByCurrentThread(this.lockToken); } return false; }
/** * When the sender profile is removed, then check for the primary members if they are not * available then this secondary sender should volunteer for primary */ @Override protected void profileRemoved(Profile profile) { if (profile instanceof GatewaySenderProfile) { GatewaySenderProfile sp = (GatewaySenderProfile) profile; if (!sp.isParallel) {// SerialGatewaySender // if there is a primary sender, then don't volunteer for primary if (advisePrimaryGatewaySender() != null) { return; } if (!this.sender.isPrimary()) {// IF this sender is not primary if (!adviseEldestGatewaySender()) {// AND this is not the eldest sender if (logger.isDebugEnabled()) { logger.debug( "Sender {} is not the eldest in the system. Giving preference to eldest sender to become primary...", this.sender); } return; } launchLockObtainingVolunteerThread(); } } } }
if (!sp.isParallel) { // SerialGatewaySender if (!sp.isRunning) { if (advisePrimaryGatewaySender() != null) { return;
AbstractGatewaySender sender = this.region.getSerialGatewaySender(); if (sender != null) { InternalDistributedMember primary = sender.getSenderAdvisor().advisePrimaryGatewaySender(); if (primary != null) { recipients.remove(primary);