web2/GSIP-34 corrupts CITE wfs-1.0 data directory
-------------------------------------------------
Key: GEOS-2808
URL: http://jira.codehaus.org/browse/GEOS-2808
Project: GeoServer
Issue Type: Bug
Components: Global
Reporter: Ben Caradoc-Davies
Assignee: Andrea Aime
Priority: Critical
Starting GeoServer trunk (using web2) with CITE wfs-1.0 configuration succeeds the first time. It is expected that, as documented in GSIP 34, this old-style data directory will be transformed into a new-style data directory. However, if GeoServer is started a second time, XStream refuses to load some datastores. It looks like the transformation process writes XML that the new-style catalog cannot read..
To repeat:
(1) In src/community/web2/app
mvn -DconfigId=citewfs-1.0 -DconfigDirectory=../../../../data -Dmaven.test.skip=true clean install
(2) Start GeoServer (success).
(3) Stop Geoserver.
(4) Start GeoServer a second time (failure).
Workaround: rebuild web-app module before every GeoServer start!
First start (success):
31 Mar 14:58:44 WARN [geoserver.logging] - log4jConfigFile 'DEFAULT_LOGGING.properties' couldn't be found in the data dir, so GeoServer will install the various logging config file into the data dir, and then try to find it again.
log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
31 Mar 14:58:45 ERROR [geoserver.global] -
----------------------------------
- GEOSERVER_DATA_DIR: C:\Projects\car605\geoserver\cite\geoserver-trunk\src\community\web2\app\src\main\webapp\data
----------------------------------
31 Mar 14:58:45 INFO [geoserver.catalog] - Loaded namespace 'cdf' (http://www.opengis.net/cite/data)
31 Mar 14:58:45 INFO [geoserver.catalog] - Loaded namespace 'cgf' (http://www.opengis.net/cite/geometry)
31 Mar 14:58:45 INFO [geoserver.catalog] - Default namespace: 'cdf'
31 Mar 14:58:45 INFO [geoserver.catalog] - Loaded style 'dotty'
31 Mar 14:58:45 INFO [geoserver.catalog] - Loaded style 'poly'
31 Mar 14:58:46 INFO [geoserver.catalog] - Processed data store 'cdf', enabled
31 Mar 14:58:46 INFO [geoserver.catalog] - Processed data store 'cgf', enabled
31 Mar 14:58:46 WARN [referencing.factory] - Axis elements found in a wkt definition, the force longitude first axis order hint might not be respected:
PROJCS["Monte Mario / Italy zone 1", GEOGCS["Monte Mario", DATUM["Monte Mario", SPHEROID["International 1924", 6378388.0, 297.0, AUTHORITY["EPSG","7022"]], TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68], AUTHORITY["EPSG","6265"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4265"]], PROJECTION["Transverse Mercator", AUTHORITY["EPSG","9807"]], PARAMETER["central_meridian", 9.0], PARAMETER["latitude_of_origin", 0.0], PARAMETER["scale_factor", 0.9996], PARAMETER["false_easting", 1500000.0], PARAMETER["false_northing", 0.0], UNIT["m", 1.0], AXIS["Easting", EAST], AXIS["Northing", NORTH], AUTHORITY["EPSG","3003"]]
31 Mar 14:58:47 INFO [geoserver.catalog] - Loaded feature type 'cdf:Deletes'
31 Mar 14:58:47 INFO [geoserver.catalog] - Loaded feature type 'cdf:Fifteen'
31 Mar 14:58:47 INFO [geoserver.catalog] - Loaded feature type 'cdf:Inserts'
31 Mar 14:58:47 INFO [geoserver.catalog] - Loaded feature type 'cdf:Locks'
31 Mar 14:58:47 INFO [geoserver.catalog] - Loaded feature type 'cdf:Nulls'
31 Mar 14:58:48 INFO [geoserver.catalog] - Loaded feature type 'cdf:Other'
31 Mar 14:58:48 INFO [geoserver.catalog] - Loaded feature type 'cdf:Seven'
31 Mar 14:58:48 INFO [geoserver.catalog] - Loaded feature type 'cdf:Updates'
31 Mar 14:58:48 INFO [geoserver.catalog] - Loaded feature type 'cgf:Lines'
31 Mar 14:58:48 INFO [geoserver.catalog] - Loaded feature type 'cgf:MLines'
31 Mar 14:58:48 INFO [geoserver.catalog] - Loaded feature type 'cgf:MPoints'
31 Mar 14:58:49 INFO [geoserver.catalog] - Loaded feature type 'cgf:MPolygons'
31 Mar 14:58:49 INFO [geoserver.catalog] - Loaded feature type 'cgf:Points'
31 Mar 14:58:49 INFO [geoserver.catalog] - Loaded feature type 'cgf:Polygons'
31 Mar 14:58:49 INFO [geoserver.confg] - Loading service 'wcs'
31 Mar 14:58:49 INFO [geoserver.confg] - Loading service 'wfs'
31 Mar 14:58:49 INFO [geoserver.confg] - Loading service 'wms'
Second start (failure):
log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
31 Mar 15:00:02 ERROR [geoserver.global] -
----------------------------------
- GEOSERVER_DATA_DIR: C:\Projects\car605\geoserver\cite\geoserver-trunk\src\community\web2\app\src\main\webapp\data
----------------------------------
31 Mar 15:00:02 INFO [org.geoserver] - Loaded style 'dotty'
31 Mar 15:00:02 INFO [org.geoserver] - Loaded style 'poly'
31 Mar 15:00:02 INFO [org.geoserver] - Loaded workspace 'cdf'
31 Mar 15:00:03 WARN [org.geoserver] - Failed to load data store 'cdf'
com.thoughtworks.xstream.converters.ConversionException: : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17) : : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
---- Debugging information ----
message : : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
cause-exception : com.thoughtworks.xstream.io.StreamException
cause-message : : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
class : org.geoserver.catalog.impl.DataStoreInfoImpl
required-type : java.util.HashMap
line number : 9
-------------------------------
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:89)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:246)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:218)
at org.geoserver.config.util.XStreamPersister$StoreInfoConverter.doUnmarshal(XStreamPersister.java:991)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:861)
at org.geoserver.config.util.XStreamPersister.load(XStreamPersister.java:400)
at org.geoserver.config.GeoServerLoader.depersist(GeoServerLoader.java:716)
at org.geoserver.config.GeoServerLoader.readCatalog(GeoServerLoader.java:497)
at org.geoserver.config.GeoServerLoader.loadCatalog(GeoServerLoader.java:154)
at org.geoserver.config.GeoServerLoader.postProcessBeforeInitialization(GeoServerLoader.java:125)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1330)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:540)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:510)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:222)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.geoserver.web.Start.main(Start.java:57)
Caused by: com.thoughtworks.xstream.io.StreamException: : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:78)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:137)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:124)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.hasMoreChildren(AbstractPullReader.java:78)
at org.geoserver.config.util.XStreamPersister$BreifMapConverter.populateMap(XStreamPersister.java:494)
at com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
... 45 more
Caused by: org.xmlpull.v1.XmlPullParserException: expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
at org.xmlpull.mxp1.MXParser.parseAttribute(MXParser.java:2004)
at org.xmlpull.mxp1.MXParser.parseStartTag(MXParser.java:1799)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1127)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:63)
... 51 more
31 Mar 15:00:03 INFO [org.geoserver] - Loaded workspace 'cgf'
31 Mar 15:00:03 WARN [org.geoserver] - Failed to load data store 'cgf'
com.thoughtworks.xstream.converters.ConversionException: : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17) : : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
---- Debugging information ----
message : : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
cause-exception : com.thoughtworks.xstream.io.StreamException
cause-message : : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
class : org.geoserver.catalog.impl.DataStoreInfoImpl
required-type : java.util.HashMap
line number : 9
-------------------------------
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:89)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:246)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:218)
at org.geoserver.config.util.XStreamPersister$StoreInfoConverter.doUnmarshal(XStreamPersister.java:991)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:861)
at org.geoserver.config.util.XStreamPersister.load(XStreamPersister.java:400)
at org.geoserver.config.GeoServerLoader.depersist(GeoServerLoader.java:716)
at org.geoserver.config.GeoServerLoader.readCatalog(GeoServerLoader.java:497)
at org.geoserver.config.GeoServerLoader.loadCatalog(GeoServerLoader.java:154)
at org.geoserver.config.GeoServerLoader.postProcessBeforeInitialization(GeoServerLoader.java:125)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1330)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:540)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:510)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:222)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
at org.geoserver.web.Start.main(Start.java:57)
Caused by: com.thoughtworks.xstream.io.StreamException: : expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:78)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:137)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:124)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.hasMoreChildren(AbstractPullReader.java:78)
at org.geoserver.config.util.XStreamPersister$BreifMapConverter.populateMap(XStreamPersister.java:494)
at com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
... 45 more
Caused by: org.xmlpull.v1.XmlPullParserException: expected = after attribute name (position: TEXT seen ...</namespace>\n <loose bbox>... @9:17)
at org.xmlpull.mxp1.MXParser.parseAttribute(MXParser.java:2004)
at org.xmlpull.mxp1.MXParser.parseStartTag(MXParser.java:1799)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1127)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:63)
... 51 more
31 Mar 15:00:03 INFO [org.geoserver] - Loaded service 'wcs', enabled
31 Mar 15:00:03 INFO [org.geoserver] - Loaded service 'wfs', enabled
31 Mar 15:00:03 INFO [org.geoserver] - Loaded service 'wms', enabled
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira