[ https://issues.apache.org/jira/browse/DERBY-2074?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Knut Anders Hatlen updated DERBY-2074: -------------------------------------- Attachment: LoadSorter.java Thanks for that extra info, Torsten. I managed to create a small app that reliably reproduces the issue in my environment (quad core, OpenSolaris 2009.06, JDK 6u13) by executing a SELECT COUNT(DISTINCT...)) statement in ten parallel threads. Seems like there's a race condition of some kind the first time a SortFactory is loaded. The stack trace on trunk with debug enabled is: java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:399) at org.apache.derby.impl.store.access.RAMAccessManager.registerAccessMethod(RAMAccessManager.java:883) at org.apache.derby.impl.store.access.RAMAccessManager.findMethodFactoryByImpl(RAMAccessManager.java:693) at org.apache.derby.impl.store.access.RAMTransaction.createSort(RAMTransaction.java:1695) at org.apache.derby.impl.sql.execute.DistinctScalarAggregateResultSet.loadSorter(DistinctScalarAggregateResultSet.java:362) at org.apache.derby.impl.sql.execute.DistinctScalarAggregateResultSet.openCore(DistinctScalarAggregateResultSet.java:144) at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(ProjectRestrictResultSet.java:168) at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(BasicNoPutResultSetImpl.java:248) at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:416) at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:297) at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1235) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1648) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(EmbedPreparedStatement.java:270) at LoadSorter$1.run(LoadSorter.java:21) at java.lang.Thread.run(Thread.java:619) > Several times exception from derby implementation was thrown (were unable to > eproduce and check if it caused by any our work) > ----------------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-2074 > URL: https://issues.apache.org/jira/browse/DERBY-2074 > Project: Derby > Issue Type: Bug > Components: Store > Affects Versions: 10.1.3.1 > Environment: WinXP Professional, Java 1.5.0_06 > Reporter: Kovylin Alexandr > Priority: Minor > Attachments: LoadSorter.java > > > 12:34:45,323 ERROR [pool-1-thread-3] history.helpers.HistoryDataAccessHelper > - failed to read measurements, filter = (fromTime=Mon Nov 06 12:34:00 MSK > 2006, toTime=Mon Nov 13 12:34:00 MSK 2006, , properties=2-6-2-value) > org.springframework.jdbc.UncategorizedSQLException: > PreparedStatementCallback; uncategorized SQLException for SQL [SELECT > COUNT(DISTINCT sshis.measurement_time) FROM sshis_property_measurement sshis > INNER JOIN sstmp_filter_3 filtertbl ON sshis.property_id = > filtertbl.property_id WHERE sshis.measurement_time >= ? AND > sshis.measurement_time < ?]; SQL state [XJ001]; error code [0]; Java > exception:': > java.lang.NullPointerException'.; nested exception is > org.apache.derby.impl.jdbc.EmbedSQLException: Java exception: ': > java.lang.NullPointerException'. > java.lang.NullPointerException > at java.util.Hashtable.put(Unknown Source) > at > org.apache.derby.impl.store.access.RAMAccessManager.registerAccessMethod(Unknown > Source) > at > org.apache.derby.impl.store.access.RAMAccessManager.findMethodFactoryByImpl(Unknown > Source) > at > org.apache.derby.impl.store.access.RAMTransaction.createSort(UnknownSource) > at > org.apache.derby.impl.sql.execute.DistinctScalarAggregateResultSet.loadSorter(Unknown > Source) > at > org.apache.derby.impl.sql.execute.DistinctScalarAggregateResultSet.openCore(Unknown > Source) > at > org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown > Source) > at > org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source) > at > org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:535) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:476) > at > org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:528) > at > org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:561) > at > org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:579) > at > org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:589) > at > org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:619) > at > org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:629) > at > org.springframework.jdbc.core.JdbcTemplate.queryForInt(JdbcTemplate.java:656) > at > com.meshnetics.wsn.ctrl.dispatcher.services.history.helpers.MeasurementsSaveGetHelper.getMeasurements(MeasurementsSaveGetHelper.java:81) > at > com.meshnetics.wsn.ctrl.dispatcher.services.history.helpers.HistoryDataAccessHelper$7.doInTransaction(HistoryDataAccessHelper.java:315) > at > com.meshnetics.wsn.ctrl.dispatcher.services.history.helpers.HistoryDataAccessHelper$7.doInTransaction(HistoryDataAccessHelper.java:314) > at > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:117) > at > com.meshnetics.wsn.ctrl.dispatcher.services.history.helpers.HistoryDataAccessHelper.getMeasurements(HistoryDataAccessHelper.java:313) > at > com.meshnetics.wsn.ctrl.dispatcher.services.history.asyncread.MeasurementsReadTask.executeTask(MeasurementsReadTask.java:127) > at > com.meshnetics.wsn.ctrl.dispatcher.services.history.asyncread.MeasurementsReadTask.run(MeasurementsReadTask.java:97) > at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) > at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) > at java.util.concurrent.FutureTask.run(Unknown Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown > Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) > at java.lang.Thread.run(Unknown Source) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.