From b47290b010ab2ec8ca6c4ecf1cc058dc15e77fea Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Mon, 27 Oct 2014 02:48:49 +0000 Subject: [PATCH] Investigation of build issues: * Revert to 5.0.b-SNAPSHOT (so enterprise build works) * convert public job to use FTS rather than Lucene git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@89169 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- pom.xml | 2 +- .../job/PublishUpdatesJobExecuter.java | 88 ++++++++++++------- .../service/DispositionServiceImplTest.java | 6 ++ 3 files changed, 61 insertions(+), 35 deletions(-) diff --git a/pom.xml b/pom.xml index 7e8e1e3b6e..096328f8c5 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ - 5.0.b + 5.0.b-SNAPSHOT org.postgresql.Driver diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/PublishUpdatesJobExecuter.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/PublishUpdatesJobExecuter.java index c2580aebcf..1f130520af 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/PublishUpdatesJobExecuter.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/job/PublishUpdatesJobExecuter.java @@ -34,7 +34,9 @@ import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; +import org.alfresco.service.cmr.search.QueryConsistency; import org.alfresco.service.cmr.search.ResultSet; +import org.alfresco.service.cmr.search.SearchParameters; import org.alfresco.service.cmr.search.SearchService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -128,37 +130,41 @@ public class PublishUpdatesJobExecuter extends RecordsManagementJobExecuter { if (nodeService.exists(nodeRef)) { - // Mark the update node as publishing in progress - markPublishInProgress(nodeRef); - try + boolean publishing = (Boolean)nodeService.getProperty(nodeRef, PROP_PUBLISH_IN_PROGRESS); + if (!publishing) { - Date start = new Date(); - if (logger.isDebugEnabled()) + // Mark the update node as publishing in progress + markPublishInProgress(nodeRef); + try { - logger.debug("Starting publish of updates ..."); - logger.debug(" - for " + nodeRef.toString()); - logger.debug(" - at " + start.toString()); + Date start = new Date(); + if (logger.isDebugEnabled()) + { + logger.debug("Starting publish of updates ..."); + logger.debug(" - for " + nodeRef.toString()); + logger.debug(" - at " + start.toString()); + } + + // Publish updates + publishUpdates(nodeRef); + + + if (logger.isDebugEnabled()) + { + Date end = new Date(); + long duration = end.getTime() - start.getTime(); + logger.debug("Completed publish of updates ..."); + logger.debug(" - for " + nodeRef.toString()); + logger.debug(" - at " + end.toString()); + logger.debug(" - duration " + Long.toString(duration)); + } } - - // Publish updates - publishUpdates(nodeRef); - - - if (logger.isDebugEnabled()) + finally { - Date end = new Date(); - long duration = end.getTime() - start.getTime(); - logger.debug("Completed publish of updates ..."); - logger.debug(" - for " + nodeRef.toString()); - logger.debug(" - at " + end.toString()); - logger.debug(" - duration " + Long.toString(duration)); + // Ensure the update node has either completed the publish or is marked as no longer in progress + unmarkPublishInProgress(nodeRef); } } - finally - { - // Ensure the update node has either completed the publish or is marked as no longer in progress - unmarkPublishInProgress(nodeRef); - } } } } @@ -205,8 +211,7 @@ public class PublishUpdatesJobExecuter extends RecordsManagementJobExecuter { // Build the query string StringBuilder sb = new StringBuilder(); - sb.append("+ASPECT:\"rma:").append(ASPECT_UNPUBLISHED_UPDATE.getLocalName()).append("\" "); - sb.append("@rma\\:").append(PROP_PUBLISH_IN_PROGRESS.getLocalName()).append(":false "); + sb.append("ASPECT:\"rma:").append(ASPECT_UNPUBLISHED_UPDATE.getLocalName()).append("\""); String query = sb.toString(); if (logger.isDebugEnabled()) @@ -216,17 +221,32 @@ public class PublishUpdatesJobExecuter extends RecordsManagementJobExecuter // Execute query to find updates awaiting publishing List resultNodes = null; - ResultSet results = searchService.query( - StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, - SearchService.LANGUAGE_LUCENE, - query); + + SearchParameters searchParameters = new SearchParameters(); + searchParameters.setQueryConsistency(QueryConsistency.TRANSACTIONAL); + searchParameters.setQuery(query); + searchParameters.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE); + searchParameters.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); + try { - resultNodes = results.getNodeRefs(); + ResultSet results = searchService.query(searchParameters); + try + { + resultNodes = results.getNodeRefs(); + } + finally + { + results.close(); + } } - finally + catch (AlfrescoRuntimeException exception) { - results.close(); + if (logger.isDebugEnabled()) + { + logger.debug("Error executing query, " + exception.getMessage()); + } + throw exception; } if (logger.isDebugEnabled()) diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/DispositionServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/DispositionServiceImplTest.java index 9d05b218c3..b3ebdcf049 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/DispositionServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/DispositionServiceImplTest.java @@ -981,9 +981,15 @@ public class DispositionServiceImplTest extends BaseRMTestCase @Override public void test(DispositionActionDefinition result) throws Exception { + DispositionActionDefinition actionDefinition = testRM386DispositionSchedule.getDispositionActionDefinitionByName("cutoff"); + assertNotNull(actionDefinition); + assertTrue(nodeService.hasAspect(actionDefinition.getNodeRef(), ASPECT_UNPUBLISHED_UPDATE)); + // Publish the updates PublishUpdatesJobExecuter updater = (PublishUpdatesJobExecuter)applicationContext.getBean("publishUpdatesJobExecuter"); updater.executeImpl(); + + assertFalse(nodeService.hasAspect(actionDefinition.getNodeRef(), ASPECT_UNPUBLISHED_UPDATE)); // Check the record has been updated DispositionAction dispositionAction = dispositionService.getNextDispositionAction(testRM386Record);