RM-7169 : Disposition Lifecycle job runs in a infinite loop (#528)

batchSize will default to 500 if the given value is smaller than 1
   added unit test.
This commit is contained in:
Alexandru-Eusebiu Epure
2021-06-12 11:17:53 +03:00
committed by GitHub
parent 9aee1567b4
commit 804c70d7f2
2 changed files with 35 additions and 1 deletions

View File

@@ -62,6 +62,7 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
/** batching properties */ /** batching properties */
private int batchSize; private int batchSize;
public static final int DEFAULT_BATCH_SIZE = 500;
/** list of disposition actions to automatically execute */ /** list of disposition actions to automatically execute */
private List<String> dispositionActions; private List<String> dispositionActions;
@@ -175,6 +176,20 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
{ {
boolean hasMore = true; boolean hasMore = true;
int skipCount = 0; 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) while (hasMore)
{ {
SearchParameters params = new SearchParameters(); SearchParameters params = new SearchParameters();

View File

@@ -73,6 +73,7 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest
private static final String CUTOFF = "cutoff"; private static final String CUTOFF = "cutoff";
private static final String RETAIN = "retain"; private static final String RETAIN = "retain";
private static final String DESTROY = "destroy"; private static final String DESTROY = "destroy";
private static final int BATCH_SIZE = 1;
/** test query snippet */ /** test query snippet */
private static final String QUERY = "\"" + CUTOFF + "\" OR \"" + RETAIN + "\""; private static final String QUERY = "\"" + CUTOFF + "\" OR \"" + RETAIN + "\"";
@@ -102,7 +103,7 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest
// setup data // setup data
List<String> dispositionActions = buildList(CUTOFF, RETAIN); List<String> dispositionActions = buildList(CUTOFF, RETAIN);
executer.setDispositionActions(dispositionActions); executer.setDispositionActions(dispositionActions);
executer.setBatchSize(1); executer.setBatchSize(BATCH_SIZE);
// setup interactions // setup interactions
doReturn(mockedResultSet).when(mockedSearchService).query(any(SearchParameters.class)); doReturn(mockedResultSet).when(mockedSearchService).query(any(SearchParameters.class));
@@ -333,4 +334,22 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest
verify(mockedNodeService).exists(node4); verify(mockedNodeService).exists(node4);
verify(mockedSearchService, times(2)).query(any(SearchParameters.class)); 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<SearchParameters> 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);
}
} }