You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/12/11 23:44:16 UTC

[2/5] git commit: trying to fix registry problems (repeatedAdd test not working)

trying to fix registry problems (repeatedAdd test not working)


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/4de163b4
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/4de163b4
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/4de163b4

Branch: refs/heads/develop
Commit: 4de163b436c4ee75454ea23fdbd24391261aa541
Parents: 8add81f
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Wed Dec 11 22:52:52 2013 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Wed Dec 11 22:52:52 2013 +0100

----------------------------------------------------------------------
 .../kiwi/reasoner/engine/ReasoningEngine.java   |  4 ++--
 .../marmotta/kiwi/model/rdf/KiWiTriple.java     | 13 +++++-----
 .../kiwi/persistence/KiWiConnection.java        | 25 ++++----------------
 .../kiwi/persistence/KiWiTripleRegistry.java    |  2 +-
 .../marmotta/kiwi/sail/KiWiSailConnection.java  |  3 ++-
 .../marmotta/kiwi/sail/KiWiValueFactory.java    |  4 ++--
 .../marmotta/kiwi/test/PersistenceTest.java     |  2 +-
 7 files changed, 19 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/4de163b4/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java b/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
index 8beab0b..33f7ae4 100644
--- a/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
+++ b/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
@@ -349,9 +349,9 @@ public class ReasoningEngine implements TransactionListener {
             Set<KiWiTriple> newTriples = StatementCommons.newQuadrupleSet();
             for(Statement stmt : data.getAddedTriples()) {
                 KiWiTriple t = (KiWiTriple)stmt;
-                if(t.isMarkedForReasoning()) {
+                if(t.isNewTriple()) {
                     newTriples.add(t);
-                    t.setMarkedForReasoning(false);
+                    t.setNewTriple(false);
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/marmotta/blob/4de163b4/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java
index 716acb1..7b69309 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiTriple.java
@@ -73,8 +73,7 @@ public class KiWiTriple  implements Statement, Serializable {
 
     private boolean inferred;
 
-    //@Transient
-    private boolean markedForReasoning;
+    private boolean newTriple;
 
 	
 	public KiWiTriple() {
@@ -85,7 +84,7 @@ public class KiWiTriple  implements Statement, Serializable {
         this.created = created;
         this.deleted = false;
         this.inferred = false;
-        this.markedForReasoning = false;
+        this.newTriple = false;
         this.deletedAt = null;
     }
 
@@ -311,11 +310,11 @@ public class KiWiTriple  implements Statement, Serializable {
     }
 
 
-    public boolean isMarkedForReasoning() {
-        return markedForReasoning;
+    public boolean isNewTriple() {
+        return newTriple;
     }
 
-    public void setMarkedForReasoning(boolean markedForReasoning) {
-        this.markedForReasoning = markedForReasoning;
+    public void setNewTriple(boolean newTriple) {
+        this.newTriple = newTriple;
     }
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/4de163b4/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
index b26c493..36dd591 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
@@ -1047,15 +1047,17 @@ public class KiWiConnection {
      * @throws NullPointerException in case the subject, predicate, object or context have not been persisted
      * @return true in case the update added a new triple to the database, false in case the triple already existed
      */
-    public synchronized boolean storeTriple(final KiWiTriple triple) throws SQLException {
+    public synchronized void storeTriple(final KiWiTriple triple) throws SQLException {
         // mutual exclusion: prevent parallel adding and removing of the same triple
         synchronized (triple) {
 
             requireJDBCConnection();
 
-            boolean hasId = triple.getId() >= 0;
+            if(triple.getId() < 0) {
+                triple.setId(getNextSequence("seq.triples"));
+            }
 
-            if(hasId && deletedStatementsLog.contains(triple.getId())) {
+            if(deletedStatementsLog.contains(triple.getId())) {
                 // this is a hack for a concurrency problem that may occur in case the triple is removed in the
                 // transaction and then added again; in these cases the createStatement method might return
                 // an expired state of the triple because it uses its own database connection
@@ -1063,12 +1065,7 @@ public class KiWiConnection {
                 //deletedStatementsLog.remove(triple.getId());
                 undeleteTriple(triple);
 
-                return true;
             } else {
-                // retrieve a new triple ID and set it in the object
-                if(triple.getId() < 0) {
-                    triple.setId(getNextSequence("seq.triples"));
-                }
 
                 if(batchCommit) {
                     commitLock.lock();
@@ -1081,7 +1078,6 @@ public class KiWiConnection {
                     } finally {
                         commitLock.unlock();
                     }
-                    return !hasId;
                 }  else {
                     Preconditions.checkNotNull(triple.getSubject().getId());
                     Preconditions.checkNotNull(triple.getPredicate().getId());
@@ -1114,8 +1110,6 @@ public class KiWiConnection {
                             }
                         });
 
-                        return !hasId;
-
                     } catch(SQLException ex) {
                         if("HYT00".equals(ex.getSQLState())) { // H2 table locking timeout
                             throw new ConcurrentModificationException("the same triple was modified in concurrent transactions (triple="+triple+")");
@@ -2150,15 +2144,6 @@ public class KiWiConnection {
 
                         synchronized (tripleBatch) {
                             for(KiWiTriple triple : tripleBatch) {
-                                // if the triple has been marked as deleted, this can only have been done by another connection
-                                // in this case the triple id is no longer usable (might result in key conflicts), so we set it to
-                                // a new id
-                                if(triple.isDeleted()) {
-                                    triple.setId(getNextSequence("seq.triples"));
-                                    triple.setDeleted(false);
-                                    triple.setDeletedAt(null);
-                                }
-
                                 // retrieve a new triple ID and set it in the object
                                 if(triple.getId() < 0) {
                                     triple.setId(getNextSequence("seq.triples"));

http://git-wip-us.apache.org/repos/asf/marmotta/blob/4de163b4/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiTripleRegistry.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiTripleRegistry.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiTripleRegistry.java
index 72bfcb4..dfdee6b 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiTripleRegistry.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiTripleRegistry.java
@@ -135,7 +135,7 @@ public class KiWiTripleRegistry {
 
     protected void releaseConnection(KiWiConnection con) {
         try {
-            con.commit();
+            con.getJDBCConnection().commit();
             con.close();
         } catch (SQLException ex) {
             log.error("could not release database connection", ex);

http://git-wip-us.apache.org/repos/asf/marmotta/blob/4de163b4/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiSailConnection.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiSailConnection.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiSailConnection.java
index a8b4aea..23bc680 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiSailConnection.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiSailConnection.java
@@ -160,7 +160,8 @@ public class KiWiSailConnection extends NotifyingSailConnectionBase implements I
                 KiWiTriple triple = (KiWiTriple)valueFactory.createStatement(ksubj,kpred,kobj,kcontext, databaseConnection);
                 triple.setInferred(inferred);
 
-                if(databaseConnection.storeTriple(triple)) {
+                databaseConnection.storeTriple(triple);
+                if(triple.isNewTriple()) {
                     triplesAdded = true;
                     notifyStatementAdded(triple);
                 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/4de163b4/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
index dfaff47..495e953 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
@@ -104,7 +104,7 @@ public class KiWiValueFactory implements ValueFactory {
 
     protected void releaseConnection(KiWiConnection con) {
         try {
-            con.commit();
+            con.getJDBCConnection().commit();
             con.close();
         } catch (SQLException ex) {
             log.error("could not release database connection", ex);
@@ -635,7 +635,7 @@ public class KiWiValueFactory implements ValueFactory {
                 // triple has no id from registry or database, so we create one and flag it for reasoning
                 if(result.getId() < 0) {
                     result.setId(connection.getNextSequence("seq.triples"));
-                    result.setMarkedForReasoning(true);
+                    result.setNewTriple(true);
 
                     registry.registerKey(cacheKey, connection.getTransactionId(), result.getId());
                 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/4de163b4/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PersistenceTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PersistenceTest.java b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PersistenceTest.java
index e2144bd..70bcaf3 100644
--- a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PersistenceTest.java
+++ b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PersistenceTest.java
@@ -84,7 +84,7 @@ public class PersistenceTest {
         KiWiConnection connection = persistence.getConnection();
         try {
             Assert.assertThat(connection.getDatabaseTables(),hasItems("nodes","triples","namespaces"));
-            Assert.assertEquals(2, connection.getDatabaseVersion());
+            Assert.assertEquals(3, connection.getDatabaseVersion());
 
             connection.commit();
         } finally {