diff --git a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java index 242bb63480..28eaa24c8d 100644 --- a/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java +++ b/amps/ags/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuter.java @@ -62,6 +62,7 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute /** batching properties */ private int batchSize; + public static final int DEFAULT_BATCH_SIZE = 500; /** list of disposition actions to automatically execute */ private List dispositionActions; @@ -175,6 +176,20 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute { boolean hasMore = true; int skipCount = 0; + + if (batchSize < 1) + { + if (logger.isDebugEnabled()) + { + logger.debug("Invalid value for batch size: " + batchSize + " default value used instead."); + } + batchSize = DEFAULT_BATCH_SIZE; + } + if (logger.isTraceEnabled()) + { + logger.trace("Using batch size of " + batchSize); + } + while (hasMore) { SearchParameters params = new SearchParameters(); diff --git a/amps/ags/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuterUnitTest.java b/amps/ags/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuterUnitTest.java index 463b6a7745..9e2f047e9d 100644 --- a/amps/ags/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuterUnitTest.java +++ b/amps/ags/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/job/DispositionLifecycleJobExecuterUnitTest.java @@ -73,6 +73,7 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest private static final String CUTOFF = "cutoff"; private static final String RETAIN = "retain"; private static final String DESTROY = "destroy"; + private static final int BATCH_SIZE = 1; /** test query snippet */ private static final String QUERY = "\"" + CUTOFF + "\" OR \"" + RETAIN + "\""; @@ -102,7 +103,7 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest // setup data List dispositionActions = buildList(CUTOFF, RETAIN); executer.setDispositionActions(dispositionActions); - executer.setBatchSize(1); + executer.setBatchSize(BATCH_SIZE); // setup interactions doReturn(mockedResultSet).when(mockedSearchService).query(any(SearchParameters.class)); @@ -333,4 +334,22 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest verify(mockedNodeService).exists(node4); verify(mockedSearchService, times(2)).query(any(SearchParameters.class)); } + + /** + * Given a batch size < 1 + * Then the executer use default value instead + */ + @Test + public void testInvalidBatchSize() + { + executer.setBatchSize(0); + executer.executeImpl(); + + ArgumentCaptor paramsCaptor = ArgumentCaptor.forClass(SearchParameters.class); + verify(mockedSearchService, times(1)).query(paramsCaptor.capture());; + assertEquals(executer.DEFAULT_BATCH_SIZE, paramsCaptor.getValue().getMaxItems()); + verify(mockedResultSet, times(1)).close(); + + executer.setBatchSize(BATCH_SIZE); + } }