[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