You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Simon Helsen (JIRA)" <ji...@apache.org> on 2011/08/12 22:47:27 UTC

[jira] [Commented] (JENA-96) transactional behavior not sound

    [ https://issues.apache.org/jira/browse/JENA-96?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13084365#comment-13084365 ] 

Simon Helsen commented on JENA-96:
----------------------------------

A little bit later, I also see

java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
	at java.util.ArrayList.remove(ArrayList.java:552)
	at java.util.ArrayList.remove(ArrayList.java:572)
	at com.hp.hpl.jena.tdb.transaction.Transaction.removeIterator(Transaction.java:177)
	at com.hp.hpl.jena.tdb.transaction.BlockMgrJournal.endIterator(BlockMgrJournal.java:300)
	at com.hp.hpl.jena.tdb.base.block.BlockMgrWrapper.endIterator(BlockMgrWrapper.java:123)
	at com.hp.hpl.jena.tdb.base.recordbuffer.RecordRangeIterator.close(RecordRangeIterator.java:144)
	at com.hp.hpl.jena.tdb.base.recordbuffer.RecordRangeIterator.hasNext(RecordRangeIterator.java:101)
	at org.openjena.atlas.iterator.Iter$4.hasNext(Iter.java:262)
	at com.hp.hpl.jena.tdb.sys.DatasetControlMRSW$IteratorCheckNotConcurrent.hasNext(DatasetControlMRSW.java:107)
	at org.openjena.atlas.iterator.Iter$3.hasNext(Iter.java:150)
	at org.openjena.atlas.iterator.Iter$4.hasNext(Iter.java:262)
	at org.openjena.atlas.iterator.Iter$3.hasNext(Iter.java:152)
	at org.openjena.atlas.iterator.Iter.hasNext(Iter.java:674)
	at org.openjena.atlas.iterator.RepeatApplyIterator.hasNext(RepeatApplyIterator.java:30)
	at org.openjena.atlas.iterator.Iter$4.hasNext(Iter.java:262)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:43)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterConcat.hasNextBinding(QueryIterConcat.java:71)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:67)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java:49)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterPeek.hasNextBinding(QueryIterPeek.java:46)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at org.openjena.atlas.iterator.Iter$4.hasNext(Iter.java:262)
	at org.openjena.atlas.iterator.RepeatApplyIterator.hasNext(RepeatApplyIterator.java:34)
	at org.openjena.atlas.iterator.Iter$4.hasNext(Iter.java:262)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:43)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:54)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterSlice.hasNextBinding(QueryIterSlice.java:65)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:30)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:30)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:86)
	at com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:57)
	at com.ibm.team.jfs.rdf.internal.jenatdbtx.InternalResultSet.retrieveFirstPage(InternalResultSet.java:72)
	at com.ibm.team.jfs.rdf.internal.jenatdbtx.JenaTdbProvider.renderSelect(JenaTdbProvider.java:2363)
	at com.ibm.team.jfs.rdf.internal.jenatdbtx.JenaTdbProvider.performSelect(JenaTdbProvider.java:1954)
	at com.ibm.team.jfs.rdf.internal.jenatdbtx.JenaTdbProvider$9.run(JenaTdbProvider.java:2174)
	at com.ibm.team.jfs.rdf.internal.jenatdbtx.JenaTdbProvider$9.run(JenaTdbProvider.java:1)
	at com.ibm.team.jfs.rdf.internal.jenatdbtx.JenaTdbProvider.storeOperation(JenaTdbProvider.java:163)
	... 56 more

but I am not sure if this is related or a different issue. I also only observe this problem in a massive concurrent environment.

> transactional behavior not sound
> --------------------------------
>
>                 Key: JENA-96
>                 URL: https://issues.apache.org/jira/browse/JENA-96
>             Project: Jena
>          Issue Type: Bug
>         Environment: tx-tdb-0.9.0-20110809.130753-7
>            Reporter: Simon Helsen
>            Priority: Critical
>
> TDB-TX tx-tdb-0.9.0-20110809.130753-7 has transactionality issues. I am seeing the following stack trace:
> com.hp.hpl.jena.tdb.transaction.TDBTransactionException: Transaction has already committed or aborted
> 	at com.hp.hpl.jena.tdb.transaction.Transaction.abort(Transaction.java:107)
> 	at com.hp.hpl.jena.tdb.DatasetGraphTxn.abort(DatasetGraphTxn.java:31)
> 	at com.ibm.team.jfs.rdf.internal.jenatdbtx.JenaTdbProvider.storeOperation(JenaTdbProvider.java:208)
> 	at com.ibm.team.jfs.rdf.internal.jenatdbtx.JenaTdbProvider.replace(JenaTdbProvider.java:2411)
> 	at com.ibm.team.jfs.rdf.internal.jenatdbtx.JenaRdfService.replace(JenaRdfService.java:265)
> 	... 14 more
>  I use the following bit of code to execute writes:
> 	DatasetGraphTxn dsGraph = null;
> 		try {
> 			dsGraph = this.store.begin(ReadWrite.WRITE);
> 			Dataset ds = dsGraph.toDataset();
> 			Model m = ds.getNamedModel(graphName);
> 			E e = modelWriteActivity.run(m);
> 			dsGraph.commit();
> 			return e;
> 		} catch (Exception e) {
> 			if (dsGraph != null) {
> 				dsGraph.abort();
> 			}
> 			// TODO handle better
> 			throw new RuntimeException(e);
> 		} finally {
> 			if (dsGraph != null) {
> 				dsGraph.close();
> 			}
> 			//System.out.println("ModelWriteActivity: " + (System.currentTimeMillis() - t) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
> 		}
> The only thing I do in the ModelWriteActivity is 
> 	model.removeAll();
> 	model.add(graph);
> As you can see, there is nothing in here which could have made it possible that the transaction has committed before. Moreover I only see this happening when I am executing massive concurrent reads/writes. Sequential operations do not expose this problem.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira