in src/main/java/com/google/gcs/sdrs/service/worker/impl/ValidationWorker.java [140:185]
private void updateDmRequests(List<RetentionJobValidation> dmValidationList) {
if (dmValidationList == null || dmValidationList.isEmpty()) {
return;
}
Map<Integer, RetentionJobStatusType> finalValidationMap = new HashMap<>();
dmValidationList.stream()
.forEach(
validation ->
finalValidationMap.put(validation.getRetentionJobId(), validation.getStatus()));
List<DmRequest> dmRequests =
dmQueueDao.getByStatus(DatabaseConstants.DM_REQUEST_STATUS_SCHEDULED);
final Map<String, Integer> countMap = new HashMap<>();
String keySuccess = "success";
String keyError = "error";
countMap.put(keySuccess, 0);
countMap.put(keyError, 0);
dmRequests.forEach(
request -> {
RetentionJobStatusType jobStatus = finalValidationMap.get(request.getRetentionJobId());
if (jobStatus != null) {
switch (jobStatus) {
case SUCCESS:
countMap.put(keySuccess, countMap.get(keySuccess) + 1);
request.setStatus(DatabaseConstants.DM_REQUEST_STATUS_SUCCESS);
break;
case ERROR:
countMap.put(keyError, countMap.get(keyError) + 1);
if (request.getNumberOfRetry() < DmBatchProcessingWorker.DM_MAX_RETRY) {
request.setStatus(DatabaseConstants.DM_REQUEST_STATIUS_RETRY);
} else {
request.setStatus(DatabaseConstants.DM_REQUEST_STATUS_FAIL);
}
break;
default:
}
}
});
dmQueueDao.saveOrUpdateBatch(dmRequests);
logger.info(
String.format(
"Processed %d DM jobs. DM requests processing status: success=%d; fail=%d",
dmValidationList.size(), countMap.get(keySuccess), countMap.get(keyError)));
}