in src/main/java/com/google/gcs/sdrs/service/worker/impl/ExecuteRetentionWorker.java [66:115]
public void doWork() {
String dataStorageName = getDataStorageName(executionEvent.getTarget());
String projectId = executionEvent.getProjectId();
RetentionRule rule;
try {
switch (executionEvent.getExecutionEventType()) {
case USER_COMMANDED:
executeUserCommandedRule(dataStorageName, projectId);
break;
case POLICY:
boolean dataStorageExists = !dataStorageName.isEmpty();
boolean projectIdExists = projectId != null && !projectId.isEmpty();
if (projectIdExists && dataStorageExists) {
rule = retentionRuleDao.findDatasetRuleByBusinessKey(projectId, dataStorageName);
if (rule != null) {
List<RetentionRule> datasetRules = new ArrayList<>();
datasetRules.add(rule);
executeDatasetRules(datasetRules, projectId);
} else {
String message =
String.format(
"No policy found for target project: %s, target: %s",
projectId, dataStorageName);
logger.error(message);
throw new UnsupportedOperationException(message);
}
} else if (projectIdExists) {
executePolicyByProject(executionEvent.getProjectId());
} else {
executePolicy();
}
break;
default:
logger.warn(
String.format(
"%s is not a supported retention execution type",
executionEvent.getExecutionEventType().toString()));
}
workerResult.setStatus(WorkerResult.WorkerResultStatus.SUCCESS);
} catch (IOException
| IllegalArgumentException
| UnsupportedOperationException
| NullPointerException
| SQLException ex) {
logger.error(String.format("Error executing rule: %s", ex.getMessage()), ex);
workerResult.setStatus(WorkerResult.WorkerResultStatus.FAILED);
}
}