Successful threaded calls to GeoPackage.getTileDao(layer)
Observed Results:
Errors due to unsafe threading on SimpleDateFormat
Output:
FATAL:09/21/2017 21:25:28.726 [Envoy[GeoPackageImageEnvoy]-52] (io.opensphere.core.appl.UncaughtExceptionHandler:28) - Uncaught Exception: mil.nga.geopackage.GeoPackageException: Failed to retrieve TileDao for table name: tiles. Exception retrieving TileMatrixSet.
mil.nga.geopackage.GeoPackageException: Failed to retrieve TileDao for table name: tiles. Exception retrieving TileMatrixSet.
at mil.nga.geopackage.manager.GeoPackageImpl.getTileDao(GeoPackageImpl.java:250)
at io.opensphere.geopackage.envoy.GeoPackageImageEnvoy.query(GeoPackageImageEnvoy.java:126)
at io.opensphere.core.data.CachingDataRegistryDataProvider$1.run(CachingDataRegistryDataProvider.java:163)
at io.opensphere.core.data.DefaultQueryTracker$RunnableWrapper.run(DefaultQueryTracker.java:517)
at io.opensphere.core.util.lang.TaskCanceller$3.lambda$0(TaskCanceller.java:167)
at io.opensphere.core.util.lang.TaskCanceller$1.call(TaskCanceller.java:105)
at io.opensphere.core.util.lang.TaskCanceller$3.run(TaskCanceller.java:169)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at io.opensphere.core.util.concurrent.PausingThreadPoolExecutor$WorkerProxy.run(PausingThreadPoolExecutor.java:306)
at java.lang.Thread.run(Thread.java:745)
at io.opensphere.core.util.lang.NamedThreadFactory$1.run(NamedThreadFactory.java:84)
Caused by: java.sql.SQLException: Failed to parse date string: 2017-07-31T14:22:03.494Z
at mil.nga.geopackage.persister.DatePersister.sqlArgToJava(DatePersister.java:82)
at com.j256.ormlite.field.BaseFieldConverter.resultToJava(BaseFieldConverter.java:30)
at com.j256.ormlite.field.FieldType.resultToJava(FieldType.java:841)
at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:61)
at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:310)
at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:224)
at com.j256.ormlite.stmt.mapped.MappedQueryForFieldEq.execute(MappedQueryForFieldEq.java:38)
at com.j256.ormlite.field.FieldType.createForeignObject(FieldType.java:1047)
at com.j256.ormlite.field.FieldType.assignField(FieldType.java:556)
at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:72)
at com.j256.ormlite.stmt.SelectIterator.getCurrent(SelectIterator.java:284)
at com.j256.ormlite.stmt.SelectIterator.nextThrow(SelectIterator.java:168)
at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:202)
at com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:277)
at com.j256.ormlite.stmt.QueryBuilder.query(QueryBuilder.java:366)
at com.j256.ormlite.stmt.Where.query(Where.java:480)
at com.j256.ormlite.dao.BaseDaoImpl.queryForEq(BaseDaoImpl.java:253)
at mil.nga.geopackage.manager.GeoPackageImpl.getTileDao(GeoPackageImpl.java:244)
... 11 more
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:601)
at java.lang.Long.parseLong(Long.java:631)
at java.text.DigitList.getLong(DigitList.java:195)
at java.text.DecimalFormat.parse(DecimalFormat.java:2051)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2162)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
at java.text.DateFormat.parse(DateFormat.java:364)
at mil.nga.geopackage.db.DateConverter.dateValue(DateConverter.java:127)
at mil.nga.geopackage.persister.DatePersister.sqlArgToJava(DatePersister.java:80)
... 28 more
Steps to Reproduce:
Threaded calls to: myGeoPackage.getTileDao(layer);
Relevant Code:
myGeoPackage.getTileDao(layer);
Additional Information:
Temporarily fixed by synchronizing the getTileDao call
Reported by a NGA opensphere developer
Version Information:
Expected Results:
Observed Results:
Output:
FATAL:09/21/2017 21:25:28.726 [Envoy[GeoPackageImageEnvoy]-52] (io.opensphere.core.appl.UncaughtExceptionHandler:28) - Uncaught Exception: mil.nga.geopackage.GeoPackageException: Failed to retrieve TileDao for table name: tiles. Exception retrieving TileMatrixSet. mil.nga.geopackage.GeoPackageException: Failed to retrieve TileDao for table name: tiles. Exception retrieving TileMatrixSet. at mil.nga.geopackage.manager.GeoPackageImpl.getTileDao(GeoPackageImpl.java:250) at io.opensphere.geopackage.envoy.GeoPackageImageEnvoy.query(GeoPackageImageEnvoy.java:126) at io.opensphere.core.data.CachingDataRegistryDataProvider$1.run(CachingDataRegistryDataProvider.java:163) at io.opensphere.core.data.DefaultQueryTracker$RunnableWrapper.run(DefaultQueryTracker.java:517) at io.opensphere.core.util.lang.TaskCanceller$3.lambda$0(TaskCanceller.java:167) at io.opensphere.core.util.lang.TaskCanceller$1.call(TaskCanceller.java:105) at io.opensphere.core.util.lang.TaskCanceller$3.run(TaskCanceller.java:169) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at io.opensphere.core.util.concurrent.PausingThreadPoolExecutor$WorkerProxy.run(PausingThreadPoolExecutor.java:306) at java.lang.Thread.run(Thread.java:745) at io.opensphere.core.util.lang.NamedThreadFactory$1.run(NamedThreadFactory.java:84) Caused by: java.sql.SQLException: Failed to parse date string: 2017-07-31T14:22:03.494Z at mil.nga.geopackage.persister.DatePersister.sqlArgToJava(DatePersister.java:82) at com.j256.ormlite.field.BaseFieldConverter.resultToJava(BaseFieldConverter.java:30) at com.j256.ormlite.field.FieldType.resultToJava(FieldType.java:841) at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:61) at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:310) at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:224) at com.j256.ormlite.stmt.mapped.MappedQueryForFieldEq.execute(MappedQueryForFieldEq.java:38) at com.j256.ormlite.field.FieldType.createForeignObject(FieldType.java:1047) at com.j256.ormlite.field.FieldType.assignField(FieldType.java:556) at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:72) at com.j256.ormlite.stmt.SelectIterator.getCurrent(SelectIterator.java:284) at com.j256.ormlite.stmt.SelectIterator.nextThrow(SelectIterator.java:168) at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:202) at com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:277) at com.j256.ormlite.stmt.QueryBuilder.query(QueryBuilder.java:366) at com.j256.ormlite.stmt.Where.query(Where.java:480) at com.j256.ormlite.dao.BaseDaoImpl.queryForEq(BaseDaoImpl.java:253) at mil.nga.geopackage.manager.GeoPackageImpl.getTileDao(GeoPackageImpl.java:244) ... 11 more Caused by: java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:601) at java.lang.Long.parseLong(Long.java:631) at java.text.DigitList.getLong(DigitList.java:195) at java.text.DecimalFormat.parse(DecimalFormat.java:2051) at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2162) at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514) at java.text.DateFormat.parse(DateFormat.java:364) at mil.nga.geopackage.db.DateConverter.dateValue(DateConverter.java:127) at mil.nga.geopackage.persister.DatePersister.sqlArgToJava(DatePersister.java:80) ... 28 more
Steps to Reproduce:
Threaded calls to: myGeoPackage.getTileDao(layer);
Relevant Code:
Additional Information: