groups.ds.xml breaks init of smartclient

Be sure your post includes:

  1. the SmartGWT or SmartClient version and browser version(s) involved;

SmartClient_SC_SNAPSHOT-2011-11-15

  1. for a server-side problem, the complete logs generated during processing of the request;

This problem has gotten me on two different projects so I decided to post this so it may helps others from spinning their wheels.

If you have a file named groups.ds.xml in the ds path with the contents of
<DataSource
tableName=“groups”
ID=“groups”
serverType=“sql”
>
<fields>
<field sqlType=“bigint” primaryKey=“true” sqlLength=“19” name=“id” hidden=“true” type=“integer”></field>
<field sqlType=“varchar” sqlLength=“50” name=“group_name” length=“50” type=“text”></field>
<field sqlType=“integer” sqlLength=“10” name=“version” hidden=“true” type=“integer”></field>
</fields>
</DataSource>

THe fix for me was to name the file group_names.ds.xml and change the ID=“group_names” as follows

<DataSource
tableName=“groups”
ID=“group_names”
serverType=“sql”
>
<fields>
<field sqlType=“bigint” primaryKey=“true” sqlLength=“19” name=“id” hidden=“true” type=“integer”></field>
<field sqlType=“varchar” sqlLength=“50” name=“group_name” length=“50” type=“text”></field>
<field sqlType=“integer” sqlLength=“10” name=“version” hidden=“true” type=“integer”></field>
</fields>
</DataSource>

The startup of smartclient or smartGWT will loop and get a stackoverflow. You don’t even have to have the groups datasouce loaded.

To recreate, just create a file named groups.ds.xml and put it in your ds folder. Then try and start the app and watch the serve log.

It will loop with these enteries

/Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/isomorphic/system/schema/DataSource.ds.xml: 2ms
=== 2011-11-18 08:57:35,958 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/shared/ds/groups.ds.xml: 0ms
=== 2011-11-18 08:57:35,959 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/isomorphic/system/schema/DataSource.ds.xml: 1ms
=== 2011-11-18 08:57:35,968 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/shared/ds/groups.ds.xml: 1ms
=== 2011-11-18 08:57:35,969 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/isomorphic/system/schema/DataSource.ds.xml: 1ms
=== 2011-11-18 08:57:35,978 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/shared/ds/groups.ds.xml: 1ms
=== 2011-11-18 08:57:35,979 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/isomorphic/system/schema/DataSource.ds.xml: 1ms
=== 2011-11-18 08:57:35,989 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/shared/ds/groups.ds.xml: 0ms
=== 2011-11-18 08:57:35,991 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/isomorphic/system/schema/DataSource.ds.xml: 1ms
=== 2011-11-18 08:57:36,002 [sor1] DEBUG XML - Parsed XML from /Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/shared/ds/groups.ds.xml: 1ms

…

/Users/greg_benolkin/Downloads/SmartClient_SC_SNAPSHOT-2011-11-15/smartclientSDK/isomorphic/system/schema/DataSource.ds.xml: 1ms
=== 2011-11-18 08:57:41,268 [sor1] ERROR FeatureExplorerRPC - Top-level servlet error:
java.lang.StackOverflowError
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
at java.io.File.exists(File.java:733)
at org.apache.xerces.parsers.SecuritySupport$7.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.xerces.parsers.SecuritySupport.getFileExists(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
at com.isomorphic.xml.XML.parseXML(XML.java:147)
at com.isomorphic.xml.XML.parseXML(XML.java:125)
at com.isomorphic.xml.XML.toDSRecords(XML.java:290)
at com.isomorphic.xml.XML.toDSRecords(XML.java:282)
at com.isomorphic.xml.XML$RecordsFromXMLCache.loadObjectFromFile(XML.java:377)
at com.isomorphic.store.ProcessedFileCache.getObjectFromFile(ProcessedFileCache.java:132)
at com.isomorphic.xml.XML.loadCacheableDSRecords(XML.java:388)
at com.isomorphic.store.DataStructCache.loadInstance(DataStructCache.java:179)
at com.isomorphic.datasource.FileSystemDSRepo.loadDS(FileSystemDSRepo.java:65)
at com.isomorphic.datasource.DataSource.forName(DataSource.java:178)
at com.isomorphic.datasource.DataSource.forName(DataSource.java:170)
at com.isomorphic.datasource.DataSource.forName(DataSource.java:165)
at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:95)
at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:102)
at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:82)
at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:87)
at com.isomorphic.datasource.ValidationContext.getType(ValidationContext.java:278)
at com.isomorphic.datasource.BasicDataSource.findDataSource(BasicDataSource.java:1968)
at com.isomorphic.datasource.BasicDataSource.getType(BasicDataSource.java:1862)
at com.isomorphic.datasource.BasicDataSource.findElementType(BasicDataSource.java:1612)
at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:1065)
at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:977)
at com.isomorphic.datasource.BasicDataSource.handleExtraElementValue(BasicDataSource.java:1354)
at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:1282)
at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:977)
at com.isomorphic.datasource.BasicDataSource.handleExtraElementValue(BasicDataSource.java:1354)
at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:1282)
at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:977)
at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:936)
at com.isomorphic.datasource.DataSource.recordsFromXML(DataSource.java:1086)
at com.isomorphic.xml.XML.toDSRecords(XML.java:299)
at com.isomorphic.xml.XML.toDSRecords(XML.java:290)
at com.isomorphic.xml.XML.toDSRecords(XML.java:282)
at com.isomorphic.xml.XML$RecordsFromXMLCache.loadObjectFromFile(XML.java:377)
at com.isomorphic.store.ProcessedFileCache.getObjectFromFile(ProcessedFileCache.java:132)
at com.isomorphic.xml.XML.loadCacheableDSRecords(XML.java:388)
at com.isomorphic.store.DataStructCache.loadInstance(DataStructCache.java:179)
at com.isomorphic.datasource.FileSystemDSRepo.loadDS(FileSystemDSRepo.java:65)
at com.isomorphic.datasource.DataSource.forName(DataSource.java:178)
at com.isomorphic.datasource.DataSource.forName(DataSource.java:170)
at com.isomorphic.datasource.DataSource.forName(DataSource.java:165)
at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:95)
at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:102)
at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:82)
at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:87)
at com.isomorphic.datasource.ValidationContext.getType(ValidationContext.java:278)
at com.isomorphic.datasource.DataSource.getElementType(DataSource.java:1052)
at com.isomorphic.datasource.DataSource.recordsFromXML(DataSource.java:1068)
at com.isomorphic.xml.XML.toDSRecords(XML.java:299)
at com.isomorphic.xml.XML.toDSRecords(XML.java:290)
at com.isomorphic.xml.XML.toDSRecords(XML.java:282)

…

at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:95)
at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:102)
at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:82)