[Mulgara-svn] r1903 - in trunk/src/jar: resolver-spi/java/org/mulgara/resolver/spi resolver-store/java/org/mulgara/resolver/store resolver-store/java/org/mulgara/store/statement/xa11 store-xa/java/org/mulgara/store/xa

pag at mulgara.org pag at mulgara.org
Wed Feb 3 21:41:51 UTC 2010


Author: pag
Date: 2010-02-03 13:41:50 -0800 (Wed, 03 Feb 2010)
New Revision: 1903

Modified:
   trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/SystemResolver.java
   trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreResolver.java
   trunk/src/jar/resolver-store/java/org/mulgara/store/statement/xa11/XA11StatementStoreImpl.java
   trunk/src/jar/store-xa/java/org/mulgara/store/xa/XAStatementStore.java
Log:
Alex's patch for correctly detecting existing graphs on system restarts. This only affected XA11 internal list of graphs, which is used for variable graph queries

Modified: trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/SystemResolver.java
===================================================================
--- trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/SystemResolver.java	2010-01-29 21:19:02 UTC (rev 1902)
+++ trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/SystemResolver.java	2010-02-03 21:41:50 UTC (rev 1903)
@@ -27,7 +27,9 @@
 
 package org.mulgara.resolver.spi;
 
+import org.mulgara.store.statement.StatementStoreException;
 
+
 /**
  * A {@link Resolver} that is currently hosting the System Graph.
  *
@@ -56,5 +58,5 @@
    * @param rdfTypeNode The node representing rdf:type.
    * @param systemGraphTypeNode The node used for the SystemResolver graph type.
    */
-  public void initializeSystemNodes(long systemGraphNode, long rdfTypeNode, long systemGraphTypeNode);
+  public void initializeSystemNodes(long systemGraphNode, long rdfTypeNode, long systemGraphTypeNode) throws StatementStoreException;
 }

Modified: trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreResolver.java
===================================================================
--- trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreResolver.java	2010-01-29 21:19:02 UTC (rev 1902)
+++ trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreResolver.java	2010-02-03 21:41:50 UTC (rev 1903)
@@ -527,7 +527,7 @@
   /**
    * @see org.mulgara.resolver.spi.SystemResolver#initializeSystemNodes(long, long, long)
    */
-  public void initializeSystemNodes(long systemGraphNode, long rdfTypeNode, long systemGraphTypeNode) {
+  public void initializeSystemNodes(long systemGraphNode, long rdfTypeNode, long systemGraphTypeNode) throws StatementStoreException {
     statementStore.initializeSystemNodes(systemGraphNode, rdfTypeNode, systemGraphTypeNode);
   }
 

Modified: trunk/src/jar/resolver-store/java/org/mulgara/store/statement/xa11/XA11StatementStoreImpl.java
===================================================================
--- trunk/src/jar/resolver-store/java/org/mulgara/store/statement/xa11/XA11StatementStoreImpl.java	2010-01-29 21:19:02 UTC (rev 1902)
+++ trunk/src/jar/resolver-store/java/org/mulgara/store/statement/xa11/XA11StatementStoreImpl.java	2010-02-03 21:41:50 UTC (rev 1903)
@@ -667,6 +667,9 @@
       newCurrent = new Phase(false);
       // could not set up the committed graphs yet, so send them in after the fact
       newCurrent.graphNodes = new LinkedHashSet<Long>(recordingPhase.graphNodes);
+      if (logger.isDebugEnabled()) {
+        logger.debug("Set phase graph nodes from recording phase in prepare(): " + newCurrent.graphNodes);
+      }
 
       // Ensure that all data associated with the phase is on disk.
       for (int i = 0; i < NR_INDEXES; ++i) tripleAVLFiles[i].force();
@@ -1206,6 +1209,8 @@
      * @throws IOException Error on the filesystem.
      */
     Phase(boolean initializeGraphs) throws IOException {
+      if (logger.isDebugEnabled()) logger.debug("Phase(boolean), initializeGraphs = " + initializeGraphs);
+
       for (int i = 0; i < NR_INDEXES; ++i) tripleAVLFilePhases[i] = tripleAVLFiles[i].new Phase();
       currentPhase = this;
       dirty = true;
@@ -1231,6 +1236,9 @@
       currentPhase = this;
       dirty = true;
       graphNodes = new LinkedHashSet<Long>(p.graphNodes);
+      if (logger.isDebugEnabled()) {
+        logger.debug("Initializing graph nodes from previous phase in constructor: " + graphNodes);
+      }
     }
 
 
@@ -1348,7 +1356,10 @@
 
       for (int i = 0; i < NR_INDEXES; ++i) tripleAVLFilePhases[i].asyncAddTriple(triple);
 
-      if (node1 == rdfTypeNode && node2 == graphTypeNode && node3 == systemGraphNode) graphNodes.add(node0);
+      if (node1 == rdfTypeNode && node2 == graphTypeNode && node3 == systemGraphNode) {
+        if (logger.isDebugEnabled()) logger.debug("Adding new graph node: " + node0);
+        graphNodes.add(node0);
+      }
     }
 
 
@@ -1376,7 +1387,10 @@
       } catch (IOException e) {
         throw new StatementStoreException("I/O error", e);
       }
-      if (node1 == rdfTypeNode && node2 == graphTypeNode && node3 == systemGraphNode) graphNodes.remove(node0);
+      if (node1 == rdfTypeNode && node2 == graphTypeNode && node3 == systemGraphNode) {
+        if (logger.isDebugEnabled()) logger.debug("Removing graph node: " + node0);
+        graphNodes.remove(node0);
+      }
     }
 
 
@@ -1702,7 +1716,13 @@
     LinkedHashSet<Long> scanForGraphs() throws StatementStoreException, IOException {
       LinkedHashSet<Long> nodeList = new LinkedHashSet<Long>();
 
-      if (systemGraphNode == NONE || rdfTypeNode == NONE || graphTypeNode == NONE) return nodeList;
+      if (systemGraphNode == NONE || rdfTypeNode == NONE || graphTypeNode == NONE) {
+        if (logger.isDebugEnabled()) {
+          logger.debug("Unable to scan for graphs, nodes not initialized. systemGraphNode = " +
+                       systemGraphNode + ", rdfTypeNode = " + rdfTypeNode + ", graphTypeNode = " + graphTypeNode);
+        }
+        return nodeList;
+      }
 
       StoreTuples graphTuples = tripleAVLFilePhases[TI_3120].findTuples(systemGraphNode, rdfTypeNode, graphTypeNode);
       assert graphTuples.getNumberOfVariables() == 1;
@@ -1714,6 +1734,8 @@
         throw new StatementStoreException("Unable to construct a result containing all graphs.", e);
       }
 
+      if (logger.isDebugEnabled()) logger.debug("Initializing graph nodes from statement indexes: " + nodeList);
+
       return nodeList;
     }
 
@@ -1780,8 +1802,9 @@
    * @param systemGraphNode The new system graph node.
    * @param rdfTypeNode The node for rdf:graph.
    * @param systemGraphTypeNode The node for the system graph type.
+   * @throws StatementStoreException 
    */
-  public void initializeSystemNodes(long systemGraphNode, long rdfTypeNode, long systemGraphTypeNode) {
+  public void initializeSystemNodes(long systemGraphNode, long rdfTypeNode, long systemGraphTypeNode) throws StatementStoreException {
     if (this.systemGraphNode != NONE && systemGraphNode != this.systemGraphNode) {
       throw new IllegalStateException("Cannot set system graph again. Was: " + this.systemGraphNode + ", now: " + systemGraphNode);
     }
@@ -1799,6 +1822,14 @@
     }
     if (systemGraphTypeNode < 0) throw new IllegalArgumentException("Attempt to set invalid graph type node");
     this.graphTypeNode = systemGraphTypeNode;
+    
+    if (currentPhase != null) {
+      try {
+        currentPhase.graphNodes = currentPhase.scanForGraphs();
+      } catch (IOException e) {
+        throw new StatementStoreException("Error while scanning for graph nodes", e);
+      }
+    }
   }
 
 }

Modified: trunk/src/jar/store-xa/java/org/mulgara/store/xa/XAStatementStore.java
===================================================================
--- trunk/src/jar/store-xa/java/org/mulgara/store/xa/XAStatementStore.java	2010-01-29 21:19:02 UTC (rev 1902)
+++ trunk/src/jar/store-xa/java/org/mulgara/store/xa/XAStatementStore.java	2010-02-03 21:41:50 UTC (rev 1903)
@@ -89,7 +89,8 @@
    * @param systemGraphNode The node for the system graph.
    * @param rdfTypeNode The node representing rdf:type.
    * @param systemGraphTypeNode The node used for the SystemResolver graph type.
+   * @throws StatementStoreException If unable to read the graphs after initializing.
    */
-  public void initializeSystemNodes(long systemGraphNode, long rdfTypeNode, long systemGraphTypeNode);
+  public void initializeSystemNodes(long systemGraphNode, long rdfTypeNode, long systemGraphTypeNode) throws StatementStoreException;
 
 }




More information about the Mulgara-svn mailing list