When BulkProcessor retries failed item requests then the same `IndexRequest` instance are used in a new `BulkRequest` for a retry. This is a problem when `BulkProcessor` is used from within Elasticsearch (this is the case for deprecation index logging, ilm/slm history and more), because the bulk request transport action may have set the `autoGeneratedTimestamp` field. 

If that is the case then error such a these may appear in the logs and the `BulkProcessor` retry fails:

```
Bulk write of 1 deprecation logs failed: autoGeneratedTimestamp should not be set externally
java.lang.IllegalArgumentException: autoGeneratedTimestamp should not be set externally
	at org.elasticsearch.action.bulk.TransportBulkAction.doInternalExecute(TransportBulkAction.java:223) ~[elasticsearch-7.16.1.jar:7.16.1]
	at org.elasticsearch.action.bulk.TransportBulkAction$1.doRun(TransportBulkAction.java:192) ~[elasticsearch-7.16.1.jar:7.16.1]
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-7.16.1.jar:7.16.1]
	at org.elasticsearch.action.bulk.TransportBulkAction.doExecute(TransportBulkAction.java:200) [elasticsearch-7.16.1.jar:7.16.1]
	at org.elasticsearch.action.bulk.TransportBulkAction.doExecute(TransportBulkAction.java:91) [elasticsearch-7.16.1.jar:7.16.1]
```

In the bulk transport action, for each bulk item request of the `BulkRequest` its `process()` method is invoked. Incase of `IndexRequest` when no _id has been specified an id is generated and in that case the `IndexRequest#autoGeneratedTimestamp ` field is set. If the bulk request fails at a later stage, for example because there was no capacity on the node that hosts a primary shard to index documents then the bulk response will contain a `EsRejectedExecutionException` exception in the `BulkResponse` for the bulk items this failure occurred for. This is normal behaviour. However the `BulkProcessor` has retry logic and `EsRejectedExecutionException` is deemed retry-able. The `BulkProcessor` [reuses the same bulk request item instances ](https://github.com/elastic/elasticsearch/blob/master/server/src/main/java/org/elasticsearch/action/bulk/Retry.java#L139)(`IndexRequest` in this case) upon retry. This causes the failure mentioned in the stack trace.
server/src/main/java/org/elasticsearch/action/index/IndexRequest.java
return validationException;
            }
        }
        if (id == null) {
            if (versionType != VersionType.INTERNAL
                || (resolvedVersion != Versions.MATCH_DELETED && resolvedVersion != Versions.MATCH_ANY)) {
                validationException = addValidationError("an id must be provided if version type or value are set", validationException);
            }
        }
        validationException = DocWriteRequest.validateSeqNoBasedCASParams(this, validationException);
        if (id != null && id.getBytes(StandardCharsets.UTF_8).length > 512) {
            validationException = addValidationError(
                "id [" + id + "] is too long, must be no longer than 512 bytes but was: " + id.getBytes(StandardCharsets.UTF_8).length,
                validationException
            );
        }
        if (pipeline != null && pipeline.isEmpty()) {
            validationException = addValidationError("pipeline cannot be an empty string", validationException);
        }
        if (finalPipeline != null && finalPipeline.isEmpty()) {
            validationException = addValidationError("final pipeline cannot be an empty string", validationException);
        }
        return validationException;
    }
    @Override
    public IndicesOptions indicesOptions() {
        return IndicesOptions.strictSingleIndexNoExpandForbidClosed();
    }
    /**
     * The content type. This will be used when generating a document from user provided objects like Maps and when parsing the