[ https://issues.apache.org/jira/browse/GEODE-8816?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bruce J Schuchardt updated GEODE-8816: -------------------------------------- Description: This test failed with a suspect string showing a functional problem with the sender event processor. {noformat} org.apache.geode.internal.cache.wan.serial.SerialWANPropagationDUnitTest > testReplicatedSerialPropagationWithRemoteRegionDestroy3 FAILED java.lang.AssertionError: Suspicious strings were written to the log during this run. Fix the strings or use IgnoredException.addIgnoredException to ignore. ----------------------------------------------------------------------- Found suspect string in 'dunit_suspect-vm5.log' at line 737 [error 2021/01/07 01:06:31.894 GMT <P2P message reader for 172.17.0.18(663)<v1>:41005 unshared ordered uid=191 dom #1 local port=49013 remote port=40362> tid=1289] Exception occurred in CacheListener java.util.concurrent.RejectedExecutionException: Task org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor$2@3f0ab37b rejected from java.util.concurrent.ThreadPoolExecutor@1a4d5355[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2071] at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379) at org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor.handlePrimaryDestroy(SerialGatewaySenderEventProcessor.java:607) at org.apache.geode.internal.cache.wan.serial.SerialSecondaryGatewayListener.afterDestroy(SerialSecondaryGatewayListener.java:91) at org.apache.geode.internal.cache.EnumListenerEvent$AFTER_DESTROY.dispatchEvent(EnumListenerEvent.java:178) at org.apache.geode.internal.cache.LocalRegion.dispatchEvent(LocalRegion.java:8265) at org.apache.geode.internal.cache.LocalRegion.dispatchListenerEvent(LocalRegion.java:6974) at org.apache.geode.internal.cache.LocalRegion.invokeDestroyCallbacks(LocalRegion.java:6775) at org.apache.geode.internal.cache.EntryEventImpl.invokeCallbacks(EntryEventImpl.java:2446) at org.apache.geode.internal.cache.entries.AbstractRegionEntry.dispatchListenerEvents(AbstractRegionEntry.java:164) at org.apache.geode.internal.cache.LocalRegion.basicDestroyPart2(LocalRegion.java:6716) at org.apache.geode.internal.cache.map.RegionMapDestroy.destroyExistingEntry(RegionMapDestroy.java:414) at org.apache.geode.internal.cache.map.RegionMapDestroy.handleExistingRegionEntry(RegionMapDestroy.java:244) at org.apache.geode.internal.cache.map.RegionMapDestroy.destroy(RegionMapDestroy.java:152) at org.apache.geode.internal.cache.AbstractRegionMap.destroy(AbstractRegionMap.java:968) at org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6505) at org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6479) at org.apache.geode.internal.cache.LocalRegionDataView.destroyExistingEntry(LocalRegionDataView.java:59) at org.apache.geode.internal.cache.LocalRegion.basicDestroy(LocalRegion.java:6430) at org.apache.geode.internal.cache.DistributedRegion.basicDestroy(DistributedRegion.java:1730) at org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue$SerialGatewaySenderQueueMetaRegion.basicDestroy(SerialGatewaySenderQueue.java:1387) at org.apache.geode.internal.cache.LocalRegion.localDestroy(LocalRegion.java:2230) at org.apache.geode.internal.cache.DistributedRegion.localDestroy(DistributedRegion.java:967) at org.apache.geode.internal.cache.wan.serial.BatchDestroyOperation$DestroyMessage.operateOnRegion(BatchDestroyOperation.java:121) at org.apache.geode.internal.cache.DistributedCacheOperation$CacheOperationMessage.basicProcess(DistributedCacheOperation.java:1208) at org.apache.geode.internal.cache.DistributedCacheOperation$CacheOperationMessage.process(DistributedCacheOperation.java:1110) at org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376) at org.apache.geode.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:432) at org.apache.geode.distributed.internal.ClusterDistributionManager.scheduleIncomingMessage(ClusterDistributionManager.java:2066) at org.apache.geode.distributed.internal.ClusterDistributionManager.handleIncomingDMsg(ClusterDistributionManager.java:1831) at org.apache.geode.distributed.internal.membership.gms.GMSMembership.dispatchMessage(GMSMembership.java:930) at org.apache.geode.distributed.internal.membership.gms.GMSMembership.handleOrDeferMessage(GMSMembership.java:861) at org.apache.geode.distributed.internal.membership.gms.GMSMembership.processMessage(GMSMembership.java:1203) at org.apache.geode.distributed.internal.DistributionImpl$MyDCReceiver.messageReceived(DistributionImpl.java:828) at org.apache.geode.distributed.internal.direct.DirectChannel.receive(DirectChannel.java:614) at org.apache.geode.internal.tcp.TCPConduit.messageReceived(TCPConduit.java:679) at org.apache.geode.internal.tcp.Connection.dispatchMessage(Connection.java:3268) at org.apache.geode.internal.tcp.Connection.readMessage(Connection.java:2993) at org.apache.geode.internal.tcp.Connection.processInputBuffer(Connection.java:2797) at org.apache.geode.internal.tcp.Connection.readMessages(Connection.java:1651) at org.apache.geode.internal.tcp.Connection.run(Connection.java:1482) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) {noformat} The cache was closing when this happened {noformat} [vm5] [info 2021/01/07 01:06:31.890 GMT <RMI TCP Connection(1)-172.17.0.18> tid=0x21] GemFireCache[id = 79187125; isClosing = true; isShutDownAll = false; created = Thu Jan 07 01:06:27 GMT 2021; server = false; copyOnRead = false; lockLease = 120; lockTimeout = 60]: Now closing. [vm5] [info 2021/01/07 01:06:31.890 GMT <Event Processor for GatewaySender_ln> tid=0x4fe] The event processor is stopped, not to wait for being primary any more. [vm5] [error 2021/01/07 01:06:31.894 GMT <P2P message reader for 172.17.0.18(663)<v1>:41005 unshared ordered uid=191 dom #1 local port=49013 remote port=40362> tid=0x509] Exception occurred in CacheListener [vm5] java.util.concurrent.RejectedExecutionException: Task org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor$2@3f0ab37b rejected from java.util.concurrent.ThreadPoolExecutor@1a4d5355[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2071] {noformat} The method that shuts down the executor does so before nulling out the variable holding the executor: {code:java} private void shutdownListenerExecutor() { synchronized (listenerObjectLock) { if (this.executor != null) { this.executor.shutdown(); this.executor = null; } } } {code} The method that submits a task to the executor checks for a null before submitting it, so there's a race condition where a thread could attempt to submit a task but the executor has been shut down. {code:java} protected void handlePrimaryDestroy(final GatewaySenderEventImpl gatewayEvent) { Executor my_executor = this.executor; synchronized (listenerObjectLock) { if (my_executor == null) { // should mean we are now primary return; } my_executor.execute(new Runnable() { @Override public void run() { basicHandlePrimaryDestroy(gatewayEvent.getEventId(), false); } }); } } {code} was: This test failed with a suspect string showing a functional problem with the sender queues. {noformat} org.apache.geode.internal.cache.wan.serial.SerialWANPropagationDUnitTest > testReplicatedSerialPropagationWithRemoteRegionDestroy3 FAILED java.lang.AssertionError: Suspicious strings were written to the log during this run. Fix the strings or use IgnoredException.addIgnoredException to ignore. ----------------------------------------------------------------------- Found suspect string in 'dunit_suspect-vm5.log' at line 737 [error 2021/01/07 01:06:31.894 GMT <P2P message reader for 172.17.0.18(663)<v1>:41005 unshared ordered uid=191 dom #1 local port=49013 remote port=40362> tid=1289] Exception occurred in CacheListener java.util.concurrent.RejectedExecutionException: Task org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor$2@3f0ab37b rejected from java.util.concurrent.ThreadPoolExecutor@1a4d5355[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2071] at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379) at org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor.handlePrimaryDestroy(SerialGatewaySenderEventProcessor.java:607) at org.apache.geode.internal.cache.wan.serial.SerialSecondaryGatewayListener.afterDestroy(SerialSecondaryGatewayListener.java:91) at org.apache.geode.internal.cache.EnumListenerEvent$AFTER_DESTROY.dispatchEvent(EnumListenerEvent.java:178) at org.apache.geode.internal.cache.LocalRegion.dispatchEvent(LocalRegion.java:8265) at org.apache.geode.internal.cache.LocalRegion.dispatchListenerEvent(LocalRegion.java:6974) at org.apache.geode.internal.cache.LocalRegion.invokeDestroyCallbacks(LocalRegion.java:6775) at org.apache.geode.internal.cache.EntryEventImpl.invokeCallbacks(EntryEventImpl.java:2446) at org.apache.geode.internal.cache.entries.AbstractRegionEntry.dispatchListenerEvents(AbstractRegionEntry.java:164) at org.apache.geode.internal.cache.LocalRegion.basicDestroyPart2(LocalRegion.java:6716) at org.apache.geode.internal.cache.map.RegionMapDestroy.destroyExistingEntry(RegionMapDestroy.java:414) at org.apache.geode.internal.cache.map.RegionMapDestroy.handleExistingRegionEntry(RegionMapDestroy.java:244) at org.apache.geode.internal.cache.map.RegionMapDestroy.destroy(RegionMapDestroy.java:152) at org.apache.geode.internal.cache.AbstractRegionMap.destroy(AbstractRegionMap.java:968) at org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6505) at org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6479) at org.apache.geode.internal.cache.LocalRegionDataView.destroyExistingEntry(LocalRegionDataView.java:59) at org.apache.geode.internal.cache.LocalRegion.basicDestroy(LocalRegion.java:6430) at org.apache.geode.internal.cache.DistributedRegion.basicDestroy(DistributedRegion.java:1730) at org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue$SerialGatewaySenderQueueMetaRegion.basicDestroy(SerialGatewaySenderQueue.java:1387) at org.apache.geode.internal.cache.LocalRegion.localDestroy(LocalRegion.java:2230) at org.apache.geode.internal.cache.DistributedRegion.localDestroy(DistributedRegion.java:967) at org.apache.geode.internal.cache.wan.serial.BatchDestroyOperation$DestroyMessage.operateOnRegion(BatchDestroyOperation.java:121) at org.apache.geode.internal.cache.DistributedCacheOperation$CacheOperationMessage.basicProcess(DistributedCacheOperation.java:1208) at org.apache.geode.internal.cache.DistributedCacheOperation$CacheOperationMessage.process(DistributedCacheOperation.java:1110) at org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376) at org.apache.geode.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:432) at org.apache.geode.distributed.internal.ClusterDistributionManager.scheduleIncomingMessage(ClusterDistributionManager.java:2066) at org.apache.geode.distributed.internal.ClusterDistributionManager.handleIncomingDMsg(ClusterDistributionManager.java:1831) at org.apache.geode.distributed.internal.membership.gms.GMSMembership.dispatchMessage(GMSMembership.java:930) at org.apache.geode.distributed.internal.membership.gms.GMSMembership.handleOrDeferMessage(GMSMembership.java:861) at org.apache.geode.distributed.internal.membership.gms.GMSMembership.processMessage(GMSMembership.java:1203) at org.apache.geode.distributed.internal.DistributionImpl$MyDCReceiver.messageReceived(DistributionImpl.java:828) at org.apache.geode.distributed.internal.direct.DirectChannel.receive(DirectChannel.java:614) at org.apache.geode.internal.tcp.TCPConduit.messageReceived(TCPConduit.java:679) at org.apache.geode.internal.tcp.Connection.dispatchMessage(Connection.java:3268) at org.apache.geode.internal.tcp.Connection.readMessage(Connection.java:2993) at org.apache.geode.internal.tcp.Connection.processInputBuffer(Connection.java:2797) at org.apache.geode.internal.tcp.Connection.readMessages(Connection.java:1651) at org.apache.geode.internal.tcp.Connection.run(Connection.java:1482) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) {noformat} The cache was closing when this happened {noformat} [vm5] [info 2021/01/07 01:06:31.890 GMT <RMI TCP Connection(1)-172.17.0.18> tid=0x21] GemFireCache[id = 79187125; isClosing = true; isShutDownAll = false; created = Thu Jan 07 01:06:27 GMT 2021; server = false; copyOnRead = false; lockLease = 120; lockTimeout = 60]: Now closing. [vm5] [info 2021/01/07 01:06:31.890 GMT <Event Processor for GatewaySender_ln> tid=0x4fe] The event processor is stopped, not to wait for being primary any more. [vm5] [error 2021/01/07 01:06:31.894 GMT <P2P message reader for 172.17.0.18(663)<v1>:41005 unshared ordered uid=191 dom #1 local port=49013 remote port=40362> tid=0x509] Exception occurred in CacheListener [vm5] java.util.concurrent.RejectedExecutionException: Task org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor$2@3f0ab37b rejected from java.util.concurrent.ThreadPoolExecutor@1a4d5355[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2071] {noformat} The method that shuts down the executor does so before nulling out the variable holding the executor: {code:java} private void shutdownListenerExecutor() { synchronized (listenerObjectLock) { if (this.executor != null) { this.executor.shutdown(); this.executor = null; } } } {code} The method that submits a task to the executor checks for a null before submitting it, so there's a race condition where a thread could attempt to submit a task but the executor has been shut down. {code:java} protected void handlePrimaryDestroy(final GatewaySenderEventImpl gatewayEvent) { Executor my_executor = this.executor; synchronized (listenerObjectLock) { if (my_executor == null) { // should mean we are now primary return; } my_executor.execute(new Runnable() { @Override public void run() { basicHandlePrimaryDestroy(gatewayEvent.getEventId(), false); } }); } } {code} > CI failure: SerialWanPropagationDUnitTest. > testReplicatedSerialPropagationWithRemoteRegionDestroy3 > -------------------------------------------------------------------------------------------------- > > Key: GEODE-8816 > URL: https://issues.apache.org/jira/browse/GEODE-8816 > Project: Geode > Issue Type: Bug > Components: wan > Reporter: Bruce J Schuchardt > Priority: Major > > This test failed with a suspect string showing a functional problem with the > sender event processor. > {noformat} > org.apache.geode.internal.cache.wan.serial.SerialWANPropagationDUnitTest > > testReplicatedSerialPropagationWithRemoteRegionDestroy3 FAILED > java.lang.AssertionError: Suspicious strings were written to the log > during this run. > Fix the strings or use IgnoredException.addIgnoredException to ignore. > ----------------------------------------------------------------------- > Found suspect string in 'dunit_suspect-vm5.log' at line 737 > [error 2021/01/07 01:06:31.894 GMT <P2P message reader for > 172.17.0.18(663)<v1>:41005 unshared ordered uid=191 dom #1 local port=49013 > remote port=40362> tid=1289] Exception occurred in CacheListener > java.util.concurrent.RejectedExecutionException: Task > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor$2@3f0ab37b > rejected from java.util.concurrent.ThreadPoolExecutor@1a4d5355[Terminated, > pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2071] > at > java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063) > at > java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) > at > java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379) > at > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor.handlePrimaryDestroy(SerialGatewaySenderEventProcessor.java:607) > at > org.apache.geode.internal.cache.wan.serial.SerialSecondaryGatewayListener.afterDestroy(SerialSecondaryGatewayListener.java:91) > at > org.apache.geode.internal.cache.EnumListenerEvent$AFTER_DESTROY.dispatchEvent(EnumListenerEvent.java:178) > at > org.apache.geode.internal.cache.LocalRegion.dispatchEvent(LocalRegion.java:8265) > at > org.apache.geode.internal.cache.LocalRegion.dispatchListenerEvent(LocalRegion.java:6974) > at > org.apache.geode.internal.cache.LocalRegion.invokeDestroyCallbacks(LocalRegion.java:6775) > at > org.apache.geode.internal.cache.EntryEventImpl.invokeCallbacks(EntryEventImpl.java:2446) > at > org.apache.geode.internal.cache.entries.AbstractRegionEntry.dispatchListenerEvents(AbstractRegionEntry.java:164) > at > org.apache.geode.internal.cache.LocalRegion.basicDestroyPart2(LocalRegion.java:6716) > at > org.apache.geode.internal.cache.map.RegionMapDestroy.destroyExistingEntry(RegionMapDestroy.java:414) > at > org.apache.geode.internal.cache.map.RegionMapDestroy.handleExistingRegionEntry(RegionMapDestroy.java:244) > at > org.apache.geode.internal.cache.map.RegionMapDestroy.destroy(RegionMapDestroy.java:152) > at > org.apache.geode.internal.cache.AbstractRegionMap.destroy(AbstractRegionMap.java:968) > at > org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6505) > at > org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6479) > at > org.apache.geode.internal.cache.LocalRegionDataView.destroyExistingEntry(LocalRegionDataView.java:59) > at > org.apache.geode.internal.cache.LocalRegion.basicDestroy(LocalRegion.java:6430) > at > org.apache.geode.internal.cache.DistributedRegion.basicDestroy(DistributedRegion.java:1730) > at > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue$SerialGatewaySenderQueueMetaRegion.basicDestroy(SerialGatewaySenderQueue.java:1387) > at > org.apache.geode.internal.cache.LocalRegion.localDestroy(LocalRegion.java:2230) > at > org.apache.geode.internal.cache.DistributedRegion.localDestroy(DistributedRegion.java:967) > at > org.apache.geode.internal.cache.wan.serial.BatchDestroyOperation$DestroyMessage.operateOnRegion(BatchDestroyOperation.java:121) > at > org.apache.geode.internal.cache.DistributedCacheOperation$CacheOperationMessage.basicProcess(DistributedCacheOperation.java:1208) > at > org.apache.geode.internal.cache.DistributedCacheOperation$CacheOperationMessage.process(DistributedCacheOperation.java:1110) > at > org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376) > at > org.apache.geode.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:432) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.scheduleIncomingMessage(ClusterDistributionManager.java:2066) > at > org.apache.geode.distributed.internal.ClusterDistributionManager.handleIncomingDMsg(ClusterDistributionManager.java:1831) > at > org.apache.geode.distributed.internal.membership.gms.GMSMembership.dispatchMessage(GMSMembership.java:930) > at > org.apache.geode.distributed.internal.membership.gms.GMSMembership.handleOrDeferMessage(GMSMembership.java:861) > at > org.apache.geode.distributed.internal.membership.gms.GMSMembership.processMessage(GMSMembership.java:1203) > at > org.apache.geode.distributed.internal.DistributionImpl$MyDCReceiver.messageReceived(DistributionImpl.java:828) > at > org.apache.geode.distributed.internal.direct.DirectChannel.receive(DirectChannel.java:614) > at > org.apache.geode.internal.tcp.TCPConduit.messageReceived(TCPConduit.java:679) > at > org.apache.geode.internal.tcp.Connection.dispatchMessage(Connection.java:3268) > at > org.apache.geode.internal.tcp.Connection.readMessage(Connection.java:2993) > at > org.apache.geode.internal.tcp.Connection.processInputBuffer(Connection.java:2797) > at > org.apache.geode.internal.tcp.Connection.readMessages(Connection.java:1651) > at org.apache.geode.internal.tcp.Connection.run(Connection.java:1482) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > {noformat} > The cache was closing when this happened > {noformat} > [vm5] [info 2021/01/07 01:06:31.890 GMT <RMI TCP Connection(1)-172.17.0.18> > tid=0x21] GemFireCache[id = 79187125; isClosing = true; isShutDownAll = > false; created = Thu Jan 07 01:06:27 GMT 2021; server = false; copyOnRead = > false; lockLease = 120; lockTimeout = 60]: Now closing. > [vm5] [info 2021/01/07 01:06:31.890 GMT <Event Processor for > GatewaySender_ln> tid=0x4fe] The event processor is stopped, not to wait for > being primary any more. > [vm5] [error 2021/01/07 01:06:31.894 GMT <P2P message reader for > 172.17.0.18(663)<v1>:41005 unshared ordered uid=191 dom #1 local port=49013 > remote port=40362> tid=0x509] Exception occurred in CacheListener > [vm5] java.util.concurrent.RejectedExecutionException: Task > org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor$2@3f0ab37b > rejected from java.util.concurrent.ThreadPoolExecutor@1a4d5355[Terminated, > pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2071] > {noformat} > The method that shuts down the executor does so before nulling out the > variable holding the executor: > {code:java} > private void shutdownListenerExecutor() { > synchronized (listenerObjectLock) { > if (this.executor != null) { > this.executor.shutdown(); > this.executor = null; > } > } > } > {code} > The method that submits a task to the executor checks for a null before > submitting it, so there's a race condition where a thread could attempt to > submit a task but the executor has been shut down. > {code:java} > protected void handlePrimaryDestroy(final GatewaySenderEventImpl > gatewayEvent) { > Executor my_executor = this.executor; > synchronized (listenerObjectLock) { > if (my_executor == null) { > // should mean we are now primary > return; > } > my_executor.execute(new Runnable() { > @Override > public void run() { > basicHandlePrimaryDestroy(gatewayEvent.getEventId(), false); > } > }); > } > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)