You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Andy Seaborne (JIRA)" <ji...@apache.org> on 2012/06/09 23:04:43 UTC

[jira] [Resolved] (JENA-252) ConcurrentModificationException as a result of fixing JENA-250

     [ https://issues.apache.org/jira/browse/JENA-252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andy Seaborne resolved JENA-252.
--------------------------------

       Resolution: Fixed
    Fix Version/s: TDB 0.9.1
         Assignee: Andy Seaborne

StoreConnection now manages the non-transactional/transactional switch.

(and also the sync management in prefixes is now implemented)
                
> ConcurrentModificationException as a result of fixing JENA-250
> --------------------------------------------------------------
>
>                 Key: JENA-252
>                 URL: https://issues.apache.org/jira/browse/JENA-252
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: TDB
>    Affects Versions: TDB 0.9.1
>         Environment: Windows
>            Reporter: Simon Helsen
>            Assignee: Andy Seaborne
>             Fix For: TDB 0.9.1
>
>
> For details see: http://mail-archives.apache.org/mod_mbox/jena-dev/201206.mbox/%3COFD5CF949B.2912666B-ON85257A17.0065FAD4-85257A17.0067EB5F%40ca.ibm.com%3E
> The difference sits in the method _begin in DatasetGraphTransaction:
>  @Override
>     protected void _begin(ReadWrite readWrite)
>     {
>         synchronized(lock)
>         {
>             if ( ! haveUsedInTransaction )
>                 getBaseDatasetGraph().sync() ;
>             haveUsedInTransaction = true ;
>             DatasetGraphTxn dsgTxn = sConn.begin(readWrite) ;
>             txn.set(dsgTxn) ;
>             inTransaction.set(true) ;
>         }
>     }
> The old method was
>  @Override
>     protected void _begin(ReadWrite readWrite)
>     {
>         synchronized(lock)
>         {
>             haveUsedInTransaction = true ;
>             DatasetGraphTxn dsgTxn = sConn.begin(readWrite) ;
>             txn.set(dsgTxn) ;
>             inTransaction.set(true) ;
>         }
>     }
> However, the call to getBaseDatasetGraph().sync()  violates an invariant which make the DatasetControlMRSW think there is more than 1 writer

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira