It appears that data source named "operator" has the black magic power to crash Smart GWT server with stack overflow upon load. The problem gets fixed if name is changed - e.g. to "operator_". Why is this and are there other "reserved" names?
Here is the offending data source :
The stack trace is as long as one can expect upon stack overflow but here is a part of it which hopefully captures the cycle:
Here is the offending data source :
Code:
<?xml version="1.0" encoding="UTF-8"?>
<DataSource
ID="operator"
tableName="OPERATOR"
servertype="sql">
<fields>
<field
name="ID"
type="sequence"
sequenceName="HIBERNATE_SEQUENCE"
primaryKey="true"
hidden="true"/>
<field
name="VERSION"
type="integer"
hidden="true"/>
<field
name="NAME"
type="text"
title="Name">
<validators>
<validator type="isUnique"/>
</validators>
</field>
</fields>
<operationBindings>
<operationBinding
operationType="fetch">
<tableClause>OPERATOR</tableClause>
<whereClause>$defaultWhereClause</whereClause>
<orderClause>NAME</orderClause>
</operationBinding>
</operationBindings>
</DataSource>
Code:
=== 2010-11-05 11:56:59,300 [80-3] ERROR DataSourceLoader - Exception while attempting to load a DataSource java.lang.StackOverflowError at sun.nio.cs.UTF_8.updatePositions(UTF_8.java:58) at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:392) at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:447) at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544) at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:240) at java.lang.StringCoding.encode(StringCoding.java:272) at java.lang.String.getBytes(String.java:946) at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228) at java.io.File.exists(File.java:733) at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:999) at sun.misc.URLClassPath$FileLoader.findResource(URLClassPath.java:966) at sun.misc.URLClassPath.findResource(URLClassPath.java:146) at java.net.URLClassLoader$2.run(URLClassLoader.java:385) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findResource(URLClassLoader.java:382) at java.lang.ClassLoader.getResource(ClassLoader.java:1003) at java.lang.ClassLoader.getResource(ClassLoader.java:998) at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1193) at org.apache.catalina.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1205) at javax.xml.parsers.SecuritySupport$4.run(SecuritySupport.java:96) at java.security.AccessController.doPrivileged(Native Method) at javax.xml.parsers.SecuritySupport.getResourceAsStream(SecuritySupport.java:89) at javax.xml.parsers.FactoryFinder.findJarServiceProvider(FactoryFinder.java:250) at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:223) at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:123) at com.isomorphic.xml.XML.parseXML(XML.java:116) at com.isomorphic.xml.XML.parseXML(XML.java:97) at com.isomorphic.xml.XML.toDSRecords(XML.java:262) at com.isomorphic.xml.XML.toDSRecords(XML.java:254) at com.isomorphic.xml.XML$RecordsFromXMLCache.loadObjectFromFile(XML.java:347) at com.isomorphic.store.ProcessedFileCache.getObjectFromFile(ProcessedFileCache.java:129) at com.isomorphic.xml.XML.loadCacheableDSRecords(XML.java:358) at com.isomorphic.store.DataStructCache.loadInstance(DataStructCache.java:178) at com.isomorphic.datasource.FileSystemDSRepo.loadDS(FileSystemDSRepo.java:65) at com.isomorphic.datasource.DataSource.forName(DataSource.java:147) at com.isomorphic.datasource.DataSource.forName(DataSource.java:144) at com.isomorphic.datasource.DataSource.forName(DataSource.java:141) at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:89) at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:96) at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:76) at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:56) at com.isomorphic.datasource.ValidationContext.getType(ValidationContext.java:252) at com.isomorphic.datasource.BasicDataSource.findDataSource(BasicDataSource.java:1473) at com.isomorphic.datasource.BasicDataSource.getType(BasicDataSource.java:1369) at com.isomorphic.datasource.BasicDataSource.getFieldType(BasicDataSource.java:1155) at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:898) at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:882) at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:786) at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:513) at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:498) at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:461) at com.isomorphic.datasource.DataSource.create(DataSource.java:625) at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:935) at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:882) at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:786) at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:513) at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:475) at com.isomorphic.datasource.DataSource.recordsFromXML(DataSource.java:583) at com.isomorphic.xml.XML.toDSRecords(XML.java:271) at com.isomorphic.xml.XML.toDSRecords(XML.java:262) at com.isomorphic.xml.XML.toDSRecords(XML.java:254) at com.isomorphic.xml.XML$RecordsFromXMLCache.loadObjectFromFile(XML.java:347) at com.isomorphic.store.ProcessedFileCache.getObjectFromFile(ProcessedFileCache.java:129) at com.isomorphic.xml.XML.loadCacheableDSRecords(XML.java:358) at com.isomorphic.store.DataStructCache.loadInstance(DataStructCache.java:178) at com.isomorphic.datasource.FileSystemDSRepo.loadDS(FileSystemDSRepo.java:65) at com.isomorphic.datasource.DataSource.forName(DataSource.java:147) at com.isomorphic.datasource.DataSource.forName(DataSource.java:144) at com.isomorphic.datasource.DataSource.forName(DataSource.java:141) at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:89) at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:96) at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:76) at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:56) at com.isomorphic.datasource.ValidationContext.getType(ValidationContext.java:252) at com.isomorphic.datasource.BasicDataSource.findDataSource(BasicDataSource.java:1473) at com.isomorphic.datasource.BasicDataSource.getType(BasicDataSource.java:1369) at com.isomorphic.datasource.BasicDataSource.findElementType(BasicDataSource.java:1119) at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:601) at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:513) at com.isomorphic.datasource.BasicDataSource.handleExtraElementValue(BasicDataSource.java:861) at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:835) at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:513) at com.isomorphic.datasource.BasicDataSource.handleExtraElementValue(BasicDataSource.java:861) at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:835) at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:513) at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:475) at com.isomorphic.datasource.DataSource.recordsFromXML(DataSource.java:583) at com.isomorphic.xml.XML.toDSRecords(XML.java:271) at com.isomorphic.xml.XML.toDSRecords(XML.java:262) at com.isomorphic.xml.XML.toDSRecords(XML.java:254)
Comment