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

        

Reply via email to