[
https://issues.apache.org/jira/browse/GEODE-3785?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jinmei Liao resolved GEODE-3785.
--------------------------------
Resolution: Fixed
Fix Version/s: 1.3.0
> When importing 8.x cluster config, the xml schema needs to be updated
> correctly
> -------------------------------------------------------------------------------
>
> Key: GEODE-3785
> URL: https://issues.apache.org/jira/browse/GEODE-3785
> Project: Geode
> Issue Type: Bug
> Reporter: Jinmei Liao
> Assignee: Jinmei Liao
> Fix For: 1.3.0
>
>
> Summary
> When initializing a 9.1 system with a default cluster config with an 8.1
> cache.xml file the cache XML file becomes corrupt.
> Description
> When initializing a 9.1 system with a default cluster config with an 8.1
> cache.xml file the cache XML file becomes corrupt. To get a system into this
> state follow these steps.
> 1. Start 2 or more locators.
> 2. `import cluster-configuration --zip-file-name=cluster.zip` where the
> cluster configuration is an 8.1 cache.xml file.
> *Example 8.1 cache.xml*
> <?xml version="1.0" encoding="UTF-8"?>
> <cache xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache
> http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd"
> version="8.1"
> xmlns="http://schema.pivotal.io/gemfire/cache"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <disk-store name="pdxDiskStoreddd"/>
> <disk-store name="regionDiskstore"/>
> <pdx disk-store-name="pdxDiskStoreddd" persistent="true"/>
> <region name="one" refid="PARTITION_PERSISTENT">
> <region-attributes disk-store-name="regionDiskstore"/>
> </region>
> <region name="two" refid="PARTITION_PERSISTENT"/>
> <region name="three" refid="PARTITION_PERSISTENT"/>
> <region name="four" refid="PARTITION_PERSISTENT"/>
> </cache>
> 3. start up the cache servers to use the cluster-configuration
> 4. Add a region which will intern mutate the cluster-configuration which will
> cause the problem.
> 5. stop one cache server.
> 6. restart the cache server and it will retrieve the faulty cluster.xml and
> it will refuse to start up.
> Example error:
> Starting a Geode Server in
> /Users/cblack/dev/projects/geode-patterns/geode-greenplum-realtime-loading/data/server3...
> The Cache Server process terminated unexpectedly with exit status 1. Please
> refer to the log file in
> /Users/cblack/dev/projects/geode-patterns/geode-greenplum-realtime-loading/data/server3
> for full details.
> Exception in thread "main" org.apache.geode.cache.CacheXmlException: Error
> while parsing XML, caused by org.xml.sax.SAXParseException; lineNumber: 2;
> columnNumber: 324; cvc-complex-type.3.1: Value '1.0' of attribute 'version'
> of element 'cache' is not valid with respect to the corresponding attribute
> use. Attribute 'version' has a fixed value of '8.1'.
> at
> org.apache.geode.internal.cache.xmlcache.CacheXml.error(CacheXml.java:890)
> at
> org.apache.geode.internal.cache.xmlcache.CacheXmlParser$DefaultHandlerDelegate.error(CacheXmlParser.java:3404)
> at
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:137)
> at
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
> at
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
> at
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
> at
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:452)
> at
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3230)
> at
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processOneAttribute(XMLSchemaValidator.java:2850)
> at
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processAttributes(XMLSchemaValidator.java:2762)
> at
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2050)
> at
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:740)
> at
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
> at
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:613)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3132)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:852)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
> at
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
> 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:643)
> at
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
> at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
> at
> org.apache.geode.internal.cache.xmlcache.CacheXmlParser.parse(CacheXmlParser.java:224)
> at
> org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4287)
> at
> org.apache.geode.internal.cache.ClusterConfigurationLoader.applyClusterXmlConfiguration(ClusterConfigurationLoader.java:143)
> at
> org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1193)
> at
> org.apache.geode.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:758)
> at
> org.apache.geode.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:745)
> at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:173)
> at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:212)
> at
> org.apache.geode.distributed.internal.DefaultServerLauncherCacheProvider.createCache(DefaultServerLauncherCacheProvider.java:52)
> at
> org.apache.geode.distributed.ServerLauncher.createCache(ServerLauncher.java:860)
> at
> org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:772)
> at
> org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:699)
> at
> org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:231)
> Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 324;
> cvc-complex-type.3.1: Value '1.0' of attribute 'version' of element 'cache'
> is not valid with respect to the corresponding attribute use. Attribute
> 'version' has a fixed value of '8.1'.
> at
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
> at
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
> ... 36 more
> Bad Cache XML with the messed up name space. Also note that this isn't valid
> GemFire XML and would not pass the parse XML step by having elements out of
> order. Which is ok but makes importing into other system harder.
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <cache xmlns="http://schema.pivotal.io/gemfire/cache"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"
> xsi:schemaLocation="http://geode.apache.org/schema/cache
> http://geode.apache.org/schema/cache/cache-1.0.xsd
> http://schema.pivotal.io/gemfire/cache
> http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd">
> <region xmlns="http://geode.apache.org/schema/cache" name="charlie">
> <region-attributes data-policy="replicate" scope="distributed-ack"/>
> </region>
> <disk-store name="pdxDiskStoreddd"/>
> <disk-store name="regionDiskstore"/>
> <pdx disk-store-name="pdxDiskStoreddd" persistent="true"/>
> <region name="one" refid="PARTITION_PERSISTENT">
> <region-attributes disk-store-name="regionDiskstore"/>
> </region>
> <region name="two" refid="PARTITION_PERSISTENT"/>
> <region name="three" refid="PARTITION_PERSISTENT"/>
> <region name="four" refid="PARTITION_PERSISTENT"/>
> </cache>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)