When transform isn't able to detect changes it logs and audits the following message as warning:

`[${transform_id}] failed to detect changes for transform. Skipping update till next check.`

On a broken cluster this causes a flood of log messages as this gets logged for every failure. The failure happens based on `frequency`. Apart from the log spam this check isn't properly integrated into retry and failure handlers. The later would prevent the spam. The failure handler lets the transform retry based on exponential back-off. A transform that isn't executed as `unattended` should fail after the configured number of retries (if the number of retries is configured as -1 it should retry forever).

The code in question can be found in `sourceHasChanged` (called by `onStart`) in `TransformIndexer`

Todo:

 - [ ] create a failure test case that simulates the error (see details below)
 - [x] don't suppress the failure in `sourceHasChanged`, but let the error pass and be handled in `TransformFailureHandler`

Details:

The failure:

```
Caused by: org.elasticsearch.action.search.SearchPhaseExecutionException: Search rejected due to missing shards [[...][0], [...][0]]. Consider using `allow_partial_search_results` setting to bypass this error.
    at org.elasticsearch.action.search.AbstractSearchAsyncAction.run(AbstractSearchAsyncAction.java:245) ~[elasticsearch-8.5.1.jar:?]
```
x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/transforms/TransformIndexer.java
IDENTIFY_CHANGES,
    }
    public static final int MINIMUM_PAGE_SIZE = 10;
    private static final Logger logger = LogManager.getLogger(TransformIndexer.class);
    
    private static final long NUMBER_OF_CHECKPOINTS_TO_KEEP = 10;
    private static final long RETENTION_OF_CHECKPOINTS_MS = 864000000L; 
    private static final long CHECKPOINT_CLEANUP_INTERVAL = 100L; 
    protected final TransformConfigManager transformsConfigManager;
    private final CheckpointProvider checkpointProvider;
    protected final TransformFailureHandler failureHandler;
    private volatile float docsPerSecond = -1;
    protected final TransformAuditor auditor;
    protected final TransformContext context;
    protected volatile TransformConfig transformConfig;
    private volatile TransformProgress progress;
    
    protected volatile boolean hasSourceChanged = true;
    protected final AtomicReference<Collection<ActionListener<Void>>> saveStateListeners = new AtomicReference<>();
    private volatile Map<String, String> fieldMappings;
    
    private Function function;
    
    private ChangeCollector changeCollector;
    
    private Map<String, Object> nextChangeCollectorBucketPosition = null;
    private volatile Integer initialConfiguredPageSize;
    private volatile long logEvery = 1;
    private volatile long logCount = 0;