[ 
https://issues.apache.org/jira/browse/GEODE-1170?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15228644#comment-15228644
 ] 

ASF subversion and git services commented on GEODE-1170:
--------------------------------------------------------

Commit abedde9a7d6c039876a4a4976bee48e81f262228 in incubator-geode's branch 
refs/heads/develop from [~barry.oglesby]
[ https://git-wip-us.apache.org/repos/asf?p=incubator-geode.git;h=abedde9 ]

GEODE-1170: The GatewaySender for the AsyncEventQueue is now marked internal


> An incorrect gateway-sender element for an AsyncEventQueue is generated in 
> the xml during reconnect causing a GatewaySenderException when the member 
> rejoins
> ------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-1170
>                 URL: https://issues.apache.org/jira/browse/GEODE-1170
>             Project: Geode
>          Issue Type: Bug
>          Components: wan
>            Reporter: Barry Oglesby
>            Assignee: Barry Oglesby
>
> If a {{Cache}} configures an {{AsyncEventQueue}}, and the member is forced 
> out of the {{DistributedSystem}}, an incorrect {{gateway-sender}} element is 
> generated in the xml to rebuild the cache after reconnect completes.
> Original xml:
> {noformat}
> <gateway-sender id="ny" remote-distributed-system-id="1" ... />
> <async-event-queue id="db" ... >
> {noformat}
> Generated xml:
> {noformat}
> [info 2016/04/04 15:04:29.979 PDT gateway-ln-1 <ServerConnection on port 5212 
> Thread 0> tid=0x66] generating XML to rebuild the cache after reconnect 
> completes
> [info 2016/04/04 15:04:30.014 PDT gateway-ln-1 <ServerConnection on port 5212 
> Thread 0> tid=0x66] XML generation completed: <?xml version="1.0" 
> encoding="UTF-8"?><cache ... >
>   <gateway-sender id="ny" remote-distributed-system-id="1" ... />
>   <gateway-sender id="AsyncEventQueue_db" remote-distributed-system-id="-1" 
> ... />
>   <async-event-queue id="db" ... >
> {noformat}
> Exception during reconnect:
> {noformat}
> [warning 2016/04/04 15:05:30.711 PDT gateway-ln-1 <ReconnectThread> tid=0x68] 
> Exception occurred while trying to create the cache during reconnect
> com.gemstone.gemfire.cache.CacheXmlException: While reading Cache XML 
> file:/path/to/gemfire-ln-hub.xml. While parsing XML, caused by 
> com.gemstone.gemfire.internal.cache.wan.GatewaySenderException: GatewaySender 
> AsyncEventQueue_db cannot be created with remote DS Id less than 0. 
>       at 
> com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlParser.parse(CacheXmlParser.java:275)
>       at 
> com.gemstone.gemfire.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4384)
>       at 
> com.gemstone.gemfire.internal.cache.GemFireCacheImpl.initializeDeclarativeCache(GemFireCacheImpl.java:1364)
>       at 
> com.gemstone.gemfire.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1176)
>       at 
> com.gemstone.gemfire.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:796)
>       at 
> com.gemstone.gemfire.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:780)
>       at 
> com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.reconnect(InternalDistributedSystem.java:2814)
>       at 
> com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.tryReconnect(InternalDistributedSystem.java:2526)
>       at 
> com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.disconnect(InternalDistributedSystem.java:947)
>       at 
> com.gemstone.gemfire.distributed.internal.DistributionManager$MyListener.membershipFailure(DistributionManager.java:4381)
>       at 
> com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager.uncleanShutdown(GMSMembershipManager.java:1580)
>       at 
> com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager$5.run(GMSMembershipManager.java:2615)
>       at java.lang.Thread.run(Thread.java:745)
> Caused by: com.gemstone.gemfire.internal.cache.wan.GatewaySenderException: 
> GatewaySender AsyncEventQueue_db cannot be created with remote DS Id less 
> than 0. 
>       at 
> com.gemstone.gemfire.internal.cache.wan.GatewaySenderFactoryImpl.create(GatewaySenderFactoryImpl.java:199)
>       at 
> com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlParser.endSerialGatewaySender(CacheXmlParser.java:830)
>       at 
> com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlParser.endElement(CacheXmlParser.java:3166)
>       at 
> com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlParser$DefaultHandlerDelegate.endElement(CacheXmlParser.java:3726)
>       at 
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
>       at 
> com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
>       at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:780)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:356)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
>       at 
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
>       at 
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
>       at 
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
>       at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
>       at 
> com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlParser.parse(CacheXmlParser.java:230)
>       ... 12 more
> {noformat}
> The issue is that {{AsyncEventQueueFactoryImpl.create}} no longer uses a 
> {{GatewaySenderFactory}} to create a {{GatewaySender}}. Instead, the 
> {{GatewaySender}} is created directly from the attributes defined in the 
> {{AsyncEventQueueFactoryImpl}}. Those attributes don't set 
> {{isForInternalUse=true}}, so the resulting {{GatewaySender}} is not created 
> as an internal one. Later, when {{CacheXmlGenerator.parse}} asks the 
> {{Cache}} for its {{GatewaySenders}}, it gets the internal one used for the 
> {{AsyncEventQueue}} and generates xml for it.
> The fix is to {{set isForInternalUse=true}} in 
> {{AsyncEventQueueFactoryImpl.configureAsyncEventQueue}} like:
> {noformat}
> this.attrs.isForInternalUse = true;
> {noformat}
> Generated xml with fix:
> {noformat}
> [info 2016/04/04 16:46:57.476 PDT gateway-ln-1 <ServerConnection on port 5456 
> Thread 0> tid=0x66] XML generation completed: <?xml version="1.0" 
> encoding="UTF-8"?><cache ... >
>   <gateway-sender id="ny" remote-distributed-system-id="1" ... />
>   <async-event-queue id="db" ... >
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to