public static GatewaySenderAdvisor createGatewaySenderAdvisor(DistributionAdvisee sender) { GatewaySenderAdvisor advisor = new GatewaySenderAdvisor(sender); advisor.initialize(); return advisor; }
/** * 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(); } } } }
/** * The profile will be created when the sender is added to the cache. here we * are not starting the sender. so we should not release or acquire any lock * for the sender to become primary based on creation only. */ @Override public void profileCreated(Profile profile) { if (profile instanceof GatewaySenderProfile) { GatewaySenderProfile sp = (GatewaySenderProfile)profile; checkCompatibility(sp); // also update the profiles of affected regions } }
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; }
try { DistributedLockService .destroy(getSenderAdvisor().getDLockServiceName()); } catch (IllegalArgumentException e) { Thread lockObtainingThread = getSenderAdvisor().getLockObtainingThread(); if (lockObtainingThread != null && lockObtainingThread.isAlive()) {
logger.debug("Stopping the GatewaySender advisor"); advisor.close();
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(LocalizedMessage.create( LocalizedStrings.SerialGatewaySenderImpl_0__STARTING_AS_SECONDARY_BECAUSE_PRIMARY_GATEWAY_SENDER_IS_AVAIALABLE_ON_MEMBER_2, new Object[] {this.sender.getId(), advisePrimaryGatewaySender()})); this.isPrimary = false; new UpdateAttributesProcessor(this.sender).distribute(false); }
private GatewaySenderAdvisor(DistributionAdvisee sender, LogWriterI18n logger) { super(sender); this.sender = (AbstractGatewaySender)sender; this.logger = logger; this.lockToken = getDLockServiceName() + "-token"; }
if (!(this.cache instanceof CacheCreation)) { this.stopper = new Stopper(cache.getCancelCriterion()); this.senderAdvisor = GatewaySenderAdvisor.createGatewaySenderAdvisor(this); if (!this.isForInternalUse()) { this.statistics = new GatewaySenderStats(cache.getDistributedSystem(),
@Override public void close() { new UpdateAttributesProcessor(this.getAdvisee(), true).distribute(false); super.close(); } }
public Profile getProfile() { return this.senderAdvisor.createProfile(); }
public boolean volunteerForPrimary() { if (logger.fineEnabled()) { logger.fine("Sender : " + this.sender.getId() + " is volunteering for Primary "); } if (advisePrimaryGatewaySender() == null) { if (!adviseEldestGatewaySender()) { logger.fine("Sender " + this.sender + " is not the eldest in the system. Giving preference to eldest sender to become primary..."); return false; } if (logger.fineEnabled()) { logger.fine("Sender : " + this.sender + " no Primary available. So going to acquire distributed lock"); } this.lockService.lock(this.lockToken, 10000, -1); return this.lockService.isHeldByCurrentThread(this.lockToken); } return false; }
try { DistributedLockService .destroy(getSenderAdvisor().getDLockServiceName()); } catch (IllegalArgumentException e) { ((GemFireCacheImpl)getCache()).gatewaySenderStopped(this); Thread lockObtainingThread = getSenderAdvisor().getLockObtainingThread(); if (lockObtainingThread != null && lockObtainingThread.isAlive()) {
logger.debug("Stopping the GatewaySender advisor"); advisor.close();
public void makeSecondary() { if (logger.fineEnabled()) { logger.fine(this.sender + ": Did not obtain the lock on " + this.lockToken + ". Starting as secondary gateway sender."); } // Set primary flag to false logger.info(LocalizedStrings.SerialGatewaySenderImpl_0__STARTING_AS_SECONDARY_BECAUSE_PRIMARY_GATEWAY_SENDER_IS_AVAIALABLE_ON_MEMBER_2, new Object[] {this.sender.getId(), advisePrimaryGatewaySender()}); this.isPrimary = false; new UpdateAttributesProcessor(this.sender).distribute(false); }
private GatewaySenderAdvisor(DistributionAdvisee sender) { super(sender); this.sender = (AbstractGatewaySender)sender; this.lockToken = getDLockServiceName() + "-token"; }
if (!(this.cache instanceof CacheCreation)) { this.stopper = new Stopper(cache.getCancelCriterion()); this.senderAdvisor = GatewaySenderAdvisor.createGatewaySenderAdvisor(this); if (!this.isForInternalUse()) { this.statistics = new AsyncEventQueueStats(cache.getDistributedSystem(),
@Override public void close() { new UpdateAttributesProcessor(this.getAdvisee(), true).distribute(false); super.close(); } }
public Profile getProfile() { return this.senderAdvisor.createProfile(); }
/** * 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 (!((SerialGatewaySenderImpl)this.sender).isPrimary()) {//IF this sender is not primary if (!adviseEldestGatewaySender()) {//AND this is not the eldest sender logger.fine("Sender " + this.sender + " is not the eldest in the system. Giving preference to eldest sender to become primary..."); return; } launchLockObtainingVolunteerThread(); } } } }