Ticket #467 (closed defect: fixed)
IllegalStateException trying to access lexicon index using RWStore with recycling
| Reported by: | thompsonbry | Owned by: | thompsonbry |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | RWStore | Version: | BIGDATA_RELEASE_1_0_4 |
| Keywords: | TransactionService | Cc: | thompsonbry |
Description
We have a new failure mode for the RWStore when the recycler is enabled in the TestMROWTransactions stress test. This error is showing up in CI now that we have brought down the change set from the RWSTORE_1_1_0_DEBUG branch to the 1.0.x and 1.1.x maintenance branches. The error appears in both branches.
junit.framework.AssertionFailedError: Test failed: firstCause=java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.IllegalStateException, retentionMillis=1, nreaderThreads=16, nwriters=20, nreaders=400 at com.bigdata.rdf.sail.TestMROWTransactions.domultiple_csem_transaction2(TestMROWTransactions.java:291) at com.bigdata.rdf.sail.TestMROWTransactionsWithHistory.test_multiple_csem_transaction_withHistory_stress(TestMROWTransactionsWithHistory.java:32) Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.IllegalStateException at com.bigdata.relation.accesspath.BlockingBuffer$BlockingIterator.checkFuture(BlockingBuffer.java:1481) at com.bigdata.relation.accesspath.BlockingBuffer$BlockingIterator._hasNext(BlockingBuffer.java:1658) at com.bigdata.relation.accesspath.BlockingBuffer$BlockingIterator.hasNext(BlockingBuffer.java:1521) at com.bigdata.striterator.AbstractChunkedResolverator._hasNext(AbstractChunkedResolverator.java:327) at com.bigdata.striterator.AbstractChunkedResolverator.hasNext(AbstractChunkedResolverator.java:303) at com.bigdata.rdf.sail.TestMROWTransactions$1Reader.call(TestMROWTransactions.java:196) at com.bigdata.rdf.sail.TestMROWTransactions$1Reader.call(TestMROWTransactions.java:172) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:680) Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalStateException at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) at java.util.concurrent.FutureTask.get(FutureTask.java:83) at com.bigdata.relation.accesspath.BlockingBuffer$BlockingIterator.checkFuture(BlockingBuffer.java:1434) Caused by: java.lang.IllegalStateException at com.bigdata.rdf.lexicon.LexiconRelation.getId2TermIndex(LexiconRelation.java:802) at com.bigdata.rdf.lexicon.LexiconRelation.getTerms(LexiconRelation.java:1898) at com.bigdata.rdf.store.BigdataStatementIteratorImpl.resolveChunk(BigdataStatementIteratorImpl.java:166) at com.bigdata.rdf.store.BigdataStatementIteratorImpl.resolveChunk(BigdataStatementIteratorImpl.java:33) at com.bigdata.striterator.AbstractChunkedResolverator$ChunkConsumerTask.call(AbstractChunkedResolverator.java:232) at com.bigdata.striterator.AbstractChunkedResolverator$ChunkConsumerTask.call(AbstractChunkedResolverator.java:191)
The test is:
public void test_multiple_csem_transaction_withHistory_stress() throws Exception {
final Random r = new Random();
for (int i = 0; i < 100; i++) {
final int nreaderThreads = r.nextInt(19) + 1;
log.warn("Trial: " + i + ", nreaderThreads=" + nreaderThreads);
domultiple_csem_transaction2(1/* retentionMillis */,
nreaderThreads, 20/* nwriters */, 400/* nreaders */);
}
}
Change History
Note: See
TracTickets for help on using
tickets.