From dd247ae264fae2bc974e99aa7b3c9b3d42e32a5b Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Wed, 2 Apr 2014 20:02:30 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud) 64835: Merged V4.2-BUG-FIX (4.2.2) to HEAD-BUG-FIX (4.3/Cloud) 64763: Merged V4.1-BUG-FIX (4.1.9) to V4.2-BUG-FIX (4.2.2) 64693: Merged V4.1.8 (4.1.8) to V4.1-BUG-FIX (4.1.9) 64175: Merged DEV to 4.1.8 64114: MNT-10796: Incorrect search result when content is deleted. - DBNodeServiceImpl#deleteNode() was updated that will delete a node entry from an index. Requires retest of MNT-3337 and MNT-8485. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@66196 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/domain/node/AbstractNodeDAOImpl.java | 3 - .../repo/node/db/DbNodeServiceImpl.java | 2 +- .../search/impl/lucene/ADMLuceneTest.java | 56 +++++++++++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java b/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java index 18224eaccc..1bbed247a6 100644 --- a/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java +++ b/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java @@ -1937,9 +1937,6 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO nodeUpdateEntity.setAclId(aclId); nodeUpdateEntity.setUpdateAclId(true); updateNodeImpl(oldNode, nodeUpdateEntity, null); - // Node must be indexed. - // Calls to this method are usually made directly - nodeIndexer.indexUpdateNode(oldNode.getNodeRef()); // Fix MNT-8485 and refix MNT-3337 } public void setPrimaryChildrenSharedAclId( diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java index 2d58fff144..854c170e21 100644 --- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java @@ -1268,7 +1268,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl invokeOnDeleteNode( nodeToDelete.primaryParentAssocPair.getSecond(), childNodeTypeQName, childAspectQnames, archive); - nodeIndexer.indexDeleteNode(childAssocRef); + nodeIndexer.indexDeleteNode(nodeToDelete.primaryParentAssocPair.getSecond()); } // Clear out the list of nodes pending delete diff --git a/source/test-java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java b/source/test-java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java index ef1211a869..44a4fc7a67 100644 --- a/source/test-java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java +++ b/source/test-java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java @@ -7772,6 +7772,62 @@ public class ADMLuceneTest extends TestCase implements DictionaryListener } + public void test_MNT_10796() throws Exception + { + String contentName = "testContent7.txt"; + String quary = "cm:name:\"" + contentName + "\""; + this.authenticationComponent.setCurrentUser("admin"); + + SearchParameters sp = new SearchParameters(); + sp.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); + sp.setQuery(quary); + sp.addStore(rootNodeRef.getStoreRef()); + sp.excludeDataInTheCurrentTransaction(false); + + ResultSet results; + ResultSetMetaData md; + + results = serviceRegistry.getSearchService().query(sp); + assertEquals(0, results.length()); + results.close(); + + Map properties = new HashMap(); + + properties.put(ContentModel.PROP_NAME, "folder"); + NodeRef folder = nodeService.createNode(rootNodeRef, ASSOC_TYPE_QNAME, QName.createQName("{namespace}MNT-10796"), ContentModel.TYPE_FOLDER, properties).getChildRef(); + //System.out.println("folder=" + folder.toString()); + + properties.put(ContentModel.PROP_NAME, "folder2"); + NodeRef folder2 = nodeService.createNode(folder, ASSOC_TYPE_QNAME, QName.createQName("{namespace}MNT-10796"), ContentModel.TYPE_FOLDER, properties).getChildRef(); + //System.out.println("folder2=" + folder2.toString()); + + properties.put(ContentModel.PROP_NAME, contentName); + NodeRef testContent = nodeService.createNode(folder2, ASSOC_TYPE_QNAME, QName.createQName("{namespace}MNT-10796"), ContentModel.TYPE_CONTENT, properties).getChildRef(); + //System.out.println("testContent=" + testContent.toString()); + + sp = new SearchParameters(); + sp.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); + sp.setQuery(quary); + sp.addStore(rootNodeRef.getStoreRef()); + sp.excludeDataInTheCurrentTransaction(false); + + results = serviceRegistry.getSearchService().query(sp); + assertEquals(1, results.length()); + results.close(); + + nodeService.deleteNode(folder); + + sp = new SearchParameters(); + sp.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); + sp.setQuery(quary); + sp.addStore(rootNodeRef.getStoreRef()); + sp.excludeDataInTheCurrentTransaction(false); + + results = serviceRegistry.getSearchService().query(sp); + assertEquals(0, results.length()); + results.close(); + } + private void runPerformanceTest(double time, boolean clear) { ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis() + "_" + (new Random().nextInt()),