Search in sources :

Example 1 with SearchManager

use of org.apache.jackrabbit.core.SearchManager in project jackrabbit by apache.

the class SearchIndexConsistencyCheckTest method testIndexContainsUnknownNode.

public void testIndexContainsUnknownNode() 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());
    ConsistencyCheckError error = errors.iterator().next();
    assertEquals("Different node was reported to be unknown", error.id, nodeId);
    consistencyCheck.repair(false);
    assertFalse("Index was not repaired properly", searchIndexContainsNode(searchIndex, nodeId));
    assertTrue("Consistency check still reports errors", searchIndex.runConsistencyCheck().getErrors().isEmpty());
}
Also used : NodeState(org.apache.jackrabbit.core.state.NodeState) SearchManager(org.apache.jackrabbit.core.SearchManager) NodeId(org.apache.jackrabbit.core.id.NodeId) Session(javax.jcr.Session)

Example 2 with SearchManager

use of org.apache.jackrabbit.core.SearchManager 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());
}
Also used : NodeState(org.apache.jackrabbit.core.state.NodeState) SearchManager(org.apache.jackrabbit.core.SearchManager) Node(javax.jcr.Node) NodeId(org.apache.jackrabbit.core.id.NodeId) Session(javax.jcr.Session)

Example 3 with SearchManager

use of org.apache.jackrabbit.core.SearchManager in project jackrabbit by apache.

the class SearchIndexConsistencyCheckTest method testDoubleCheckStressTest.

/**
     * Stress test on the double check mechanism
     */
public void testDoubleCheckStressTest() throws Exception {
    Thread t = new Thread(new Runnable() {

        private Session s = getHelper().getReadWriteSession();

        @Override
        public void run() {
            while (keepRunning) {
                try {
                    Node foo = s.getRootNode().getNode(testPath).addNode("foo");
                    s.save();
                    foo.remove();
                    s.save();
                } catch (RepositoryException e) {
                    System.out.println(e);
                }
            }
        }
    });
    Session s = getHelper().getSuperuserSession();
    SearchManager searchManager = TestHelper.getSearchManager(s);
    SearchIndex searchIndex = (SearchIndex) searchManager.getQueryHandler();
    keepRunning = true;
    try {
        t.start();
        Thread.sleep(100);
        for (int i = 100; i > 0; i--) {
            final ConsistencyCheck consistencyCheck = searchIndex.runConsistencyCheck();
            consistencyCheck.doubleCheckErrors();
            final List<ConsistencyCheckError> errors = consistencyCheck.getErrors();
            assertTrue(errors.isEmpty());
        }
    } finally {
        keepRunning = false;
    }
}
Also used : SearchManager(org.apache.jackrabbit.core.SearchManager) Node(javax.jcr.Node) RepositoryException(javax.jcr.RepositoryException) Session(javax.jcr.Session)

Example 4 with SearchManager

use of org.apache.jackrabbit.core.SearchManager 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());
}
Also used : NodeState(org.apache.jackrabbit.core.state.NodeState) SearchManager(org.apache.jackrabbit.core.SearchManager) Node(javax.jcr.Node) NodeId(org.apache.jackrabbit.core.id.NodeId) Session(javax.jcr.Session)

Example 5 with SearchManager

use of org.apache.jackrabbit.core.SearchManager 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());
}
Also used : NodeState(org.apache.jackrabbit.core.state.NodeState) SearchManager(org.apache.jackrabbit.core.SearchManager) Node(javax.jcr.Node) NodeId(org.apache.jackrabbit.core.id.NodeId) Session(javax.jcr.Session)

Aggregations

Session (javax.jcr.Session)8 SearchManager (org.apache.jackrabbit.core.SearchManager)8 NodeId (org.apache.jackrabbit.core.id.NodeId)7 NodeState (org.apache.jackrabbit.core.state.NodeState)7 Node (javax.jcr.Node)6 RepositoryException (javax.jcr.RepositoryException)1