Fix index bug where deletes at the end if the current TX are not seen

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2633 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2006-04-07 09:31:42 +00:00
parent 424bd89fbc
commit 6812223a4e
2 changed files with 46 additions and 1 deletions

View File

@@ -919,6 +919,9 @@ public class LuceneIndexerImpl extends LuceneBase implements LuceneIndexer
throw new LuceneIndexException("Filed to close main reader", e);
}
}
// Make sure deletes are sent
closeDeltaReader();
// Make sure writes and updates are sent.
closeDeltaWriter();
}
}

View File

@@ -3025,7 +3025,28 @@ public class LuceneTest extends TestCase
runBaseTests();
serviceRegistry.getNodeService().deleteNode(n1);
serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN,
sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
sp.setQuery("PATH:\"//.\"");
sp.excludeDataInTheCurrentTransaction(false);
results = serviceRegistry.getSearchService().query(sp);
assertEquals(5, results.length());
results.close();
sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
sp.setQuery("PATH:\"//.\"");
sp.excludeDataInTheCurrentTransaction(true);
results = serviceRegistry.getSearchService().query(sp);
assertEquals(15, results.length());
results.close();
NodeRef created = serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN,
QName.createQName("{namespace}texas"), testSuperType).getChildRef();
sp = new SearchParameters();
@@ -3046,6 +3067,27 @@ public class LuceneTest extends TestCase
assertEquals(15, results.length());
results.close();
serviceRegistry.getNodeService().deleteNode(created);
sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
sp.setQuery("PATH:\"//.\"");
sp.excludeDataInTheCurrentTransaction(false);
results = serviceRegistry.getSearchService().query(sp);
assertEquals(5, results.length());
results.close();
sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
sp.setQuery("PATH:\"//.\"");
sp.excludeDataInTheCurrentTransaction(true);
results = serviceRegistry.getSearchService().query(sp);
assertEquals(15, results.length());
results.close();
tx.rollback();
sp = new SearchParameters();