use of org.apache.jackrabbit.core.state.NodeState in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testMissingAncestorDoubleCheck.
public void testMissingAncestorDoubleCheck() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
Node foo = testRootNode.addNode("foo");
foo.addNode("bar");
testRootNode.getSession().save();
NodeId fooId = new NodeId(foo.getIdentifier());
Iterator<NodeId> remove = Collections.singletonList(fooId).iterator();
Iterator<NodeState> add = Collections.<NodeState>emptyList().iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 2 index consistency errors", 2, errors.size());
remove = Collections.<NodeId>emptyList().iterator();
add = Collections.singletonList(new NodeState(fooId, null, null, 1, true)).iterator();
searchIndex.updateNodes(remove, add);
consistencyCheck.doubleCheckErrors();
assertTrue("Consistency double check of missing ancestor failed", consistencyCheck.getErrors().isEmpty());
}
use of org.apache.jackrabbit.core.state.NodeState in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testIndexMissesAncestor.
public void testIndexMissesAncestor() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
Node foo = testRootNode.addNode("foo");
Node bar = foo.addNode("bar");
testRootNode.getSession().save();
NodeId fooId = new NodeId(foo.getIdentifier());
NodeId barId = new NodeId(bar.getIdentifier());
Iterator<NodeId> remove = Collections.singletonList(fooId).iterator();
Iterator<NodeState> add = Collections.<NodeState>emptyList().iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 2 index consistency errors", 2, errors.size());
assertEquals("Different node was reported to have missing parent", errors.get(0).id, barId);
assertEquals("Different node was reported to be missing", errors.get(1).id, fooId);
consistencyCheck.repair(false);
assertTrue("Index was not repaired properly", searchIndexContainsNode(searchIndex, fooId));
assertTrue("Consistency check still reports errors", searchIndex.runConsistencyCheck().getErrors().isEmpty());
}
use of org.apache.jackrabbit.core.state.NodeState in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testIndexMissesNode.
public void testIndexMissesNode() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
Node foo = testRootNode.addNode("foo");
testRootNode.getSession().save();
NodeId fooId = new NodeId(foo.getIdentifier());
Iterator<NodeId> remove = Collections.singletonList(fooId).iterator();
Iterator<NodeState> add = Collections.<NodeState>emptyList().iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 1 index consistency error", 1, errors.size());
ConsistencyCheckError error = errors.iterator().next();
assertEquals("Different node was reported to be missing", error.id, fooId);
consistencyCheck.repair(false);
assertTrue("Index was not repaired properly", searchIndexContainsNode(searchIndex, fooId));
assertTrue("Consistency check still reports errors", searchIndex.runConsistencyCheck().getErrors().isEmpty());
}
use of org.apache.jackrabbit.core.state.NodeState in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testUnknownNodeDoubleCheck.
public void testUnknownNodeDoubleCheck() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
NodeId nodeId = new NodeId(0, 0);
NodeState nodeState = new NodeState(nodeId, null, null, 1, false);
Iterator<NodeId> remove = Collections.<NodeId>emptyList().iterator();
Iterator<NodeState> add = Collections.singletonList(nodeState).iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 1 index consistency error", 1, errors.size());
// now remove the unknown node from the index again so that double check finds a false positive
remove = Collections.singletonList(nodeId).iterator();
add = Collections.<NodeState>emptyList().iterator();
searchIndex.updateNodes(remove, add);
consistencyCheck.doubleCheckErrors();
assertTrue("Consistency double check of deleted node failed", consistencyCheck.getErrors().isEmpty());
}
use of org.apache.jackrabbit.core.state.NodeState in project jackrabbit by apache.
the class SearchIndexConsistencyCheckTest method testMissingNodeDoubleCheck.
public void testMissingNodeDoubleCheck() throws Exception {
Session s = getHelper().getSuperuserSession();
SearchManager searchManager = TestHelper.getSearchManager(s);
SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
Node foo = testRootNode.addNode("foo");
testRootNode.getSession().save();
NodeId fooId = new NodeId(foo.getIdentifier());
Iterator<NodeId> remove = Collections.singletonList(fooId).iterator();
Iterator<NodeState> add = Collections.<NodeState>emptyList().iterator();
searchIndex.updateNodes(remove, add);
ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
assertEquals("Expected 1 index consistency error", 1, errors.size());
// now add foo to the index again so that double check finds a false positive
remove = Collections.<NodeId>emptyList().iterator();
add = Collections.singletonList(new NodeState(fooId, null, null, 1, false)).iterator();
searchIndex.updateNodes(remove, add);
consistencyCheck.doubleCheckErrors();
assertTrue("Consistency double check of missing node failed", consistencyCheck.getErrors().isEmpty());
}
Aggregations