You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/04/29 21:04:02 UTC

svn commit: r1331974 - in /incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb: TDB.java transaction/DatasetGraphTransaction.java

Author: andy
Date: Sun Apr 29 19:04:02 2012
New Revision: 1331974

URL: http://svn.apache.org/viewvc?rev=1331974&view=rev
Log:
Sync datasets if used old-style.

Modified:
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java?rev=1331974&r1=1331973&r2=1331974&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java Sun Apr 29 19:04:02 2012
@@ -120,7 +120,7 @@ public class TDB
     public static void setOptimizerWarningFlag(boolean b)
     { DatasetBuilderStd.setOptimizerWarningFlag(b) ; }
     
-    // XXX Switch to SystemARQ.sync at ARQ 2.7.1 
+    // XXX Switch to SystemARQ.sync at ARQ 2.7.1 - beware of sync(DatasetGraph)
     
     /** Sync a TDB-backed Model. Do nothing if not TDB-backed. */
     public static void sync(Model model)
@@ -150,13 +150,17 @@ public class TDB
             syncObject(dataset) ;
             return ;
         }
+        
         if ( dataset instanceof DatasetGraphTransaction )
         {
-            // Can't sync transactional dataset graphs.
+            DatasetGraphTransaction dsgt = (DatasetGraphTransaction)dataset ;
+            // This only syncs if the dataset has no tbeen used transactionally. 
+            // Can't sync transactional dataset graphs (it's meaningless)
+            dsgt.syncIfNotTransactional() ; 
             return ;
         }
         
-        // ARQ 2.7.1 and later - replace with SystenARQ.sync()
+        // ARQ 2.7.1 and later - replace with SystemARQ.sync()
 
         // May be a general purpose dataset with TDB objects in it.
         sync(dataset.getDefaultGraph()) ;

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java?rev=1331974&r1=1331973&r2=1331974&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java Sun Apr 29 19:04:02 2012
@@ -126,6 +126,15 @@ public class DatasetGraphTransaction ext
     public boolean isInTransaction()    
     { return inTransaction.get() ; }
 
+    /** This method sync the dataset if it has only ever been used non-transactionally.
+     *  Otherwise it silently does nothing.
+     */
+    public void syncIfNotTransactional()    
+    { 
+        if ( ! haveUsedInTransaction )
+            getBaseDatasetGraph().sync() ;
+    }
+
     @Override
     protected void _begin(ReadWrite readWrite)
     {