### Description

Currently, when we execute retention policy, we also refresh the destination index by setting:
```
setRefresh(true)
```
on the DBQ request.
This can cause permission errors which are surprising to the user as the permissions are not required when the transform starts:
```
task encountered irrecoverable failure: org.elasticsearch.ElasticsearchSecurityException: action [indices:admin/refresh] is unauthorized for user [found-internal-kibana4-server] with roles [kibana_system,found-internal-kibana4-server] on indices [logs-cloud_security_posture.findings_latest-default], this action is granted by the index privileges [maintenance,manage,all]
```

We still want the user to have the permissions to delete the documents. But we should execute `refresh` as the system user.
x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/transforms/TransformIndexer.java
}
        int numFailureRetries = Optional.ofNullable(transformConfig.getSettings().getNumFailureRetries())
            .orElse(context.getNumFailureRetries());
        if (numFailureRetries != -1 && context.getAndIncrementFailureCount() > numFailureRetries) {
            failIndexer(
                "task encountered more than "
                    + numFailureRetries
                    + " failures; latest failure: "
                    + ExceptionRootCauseFinder.getDetailedMessage(unwrappedException)
            );
            return;
        }
        
        
        if (e.getMessage().equals(lastAuditedExceptionMessage) == false) {
            String message = ExceptionRootCauseFinder.getDetailedMessage(unwrappedException);
            auditor.warning(
                getJobId(),
                "Transform encountered an exception: " + message + "; Will attempt again at next scheduled trigger."
            );
            lastAuditedExceptionMessage = message;
        }
    }
    /**
     * Cleanup old checkpoints
     *
     * @param listener listener to call after done
     */
    private void cleanupOldCheckpoints(ActionListener<Void> listener) {
        long now = getTimeNanos() * 1000;