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
This commit is contained in:
Alan Davis 2014-04-02 20:02:30 +00:00
parent 267fffbe37
commit dd247ae264
3 changed files with 57 additions and 4 deletions

View File

@ -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(

View File

@ -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

View File

@ -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<QName, Serializable> properties = new HashMap<QName, Serializable>();
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()),