Seems like a one-off failure on ARM : https://gradle-enterprise.elastic.co/scans/tests?search.timeZoneId=Europe%2FBucharest&tests.container=org.elasticsearch.index.engine.frozen.FrozenIndexIT&tests.test=testRetryPointInTime

**Build scan:**
https://gradle-enterprise.elastic.co/s/jgxaxl3gwjel2/tests/:x-pack:plugin:frozen-indices:internalClusterTest/org.elasticsearch.index.engine.frozen.FrozenIndexIT/testRetryPointInTime

**Reproduction line:**
`./gradlew ':x-pack:plugin:frozen-indices:internalClusterTest' --tests "org.elasticsearch.index.engine.frozen.FrozenIndexIT.testRetryPointInTime" -Dtests.seed=991387B9FDE04ADC -Dtests.locale=pl-PL -Dtests.timezone=Africa/Algiers -Druntime.java=17`

**Applicable branches:**
main

**Reproduces locally?:**
No

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.index.engine.frozen.FrozenIndexIT&tests.test=testRetryPointInTime

**Failure excerpt:**
```
java.lang.IllegalStateException: unable to launch a new watch service

  at __randomizedtesting.SeedInfo.seed([991387B9FDE04ADC:EC6786CE761CF5F4]:0)
  at org.elasticsearch.reservedstate.service.FileSettingsService.startWatcher(FileSettingsService.java:201)
  at org.elasticsearch.reservedstate.service.FileSettingsService.setWatching(FileSettingsService.java:142)
  at org.elasticsearch.reservedstate.service.FileSettingsService.startIfMaster(FileSettingsService.java:136)
  at org.elasticsearch.reservedstate.service.FileSettingsService.doStart(FileSettingsService.java:111)
  at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:43)
  at org.elasticsearch.node.Node.start(Node.java:1364)
  at org.elasticsearch.test.InternalTestCluster$NodeAndClient.startNode(InternalTestCluster.java:982)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
  at java.util.concurrent.FutureTask.run(FutureTask.java:264)
  at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:820)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
  at java.lang.Thread.run(Thread.java:833)

  Caused by: java.io.IOException: User limit of inotify watches reached

    at sun.nio.fs.LinuxWatchService$Poller.implRegister(LinuxWatchService.java:264)
    at sun.nio.fs.AbstractPoller.processRequests(AbstractPoller.java:266)
    at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:364)
    at java.lang.Thread.run(Thread.java:833)

```
server/src/main/java/org/elasticsearch/reservedstate/service/FileSettingsService.java
}
        this.watcherThreadLatch = new CountDownLatch(1);
        new Thread(() -> {
            try {
                logger.info("file settings service up and running [tid={}]", Thread.currentThread().getId());
                WatchKey key;
                while ((key = watchService.take()) != null) {
                    /**
                     * Reading and interpreting watch service events can vary from platform to platform. E.g:
                     * MacOS symlink delete and set (rm -rf operator && ln -s <path to>/file_settings/ operator):
                     *     ENTRY_MODIFY:operator
                     *     ENTRY_CREATE:settings.json
                     *     ENTRY_MODIFY:settings.json
                     * Linux in Docker symlink delete and set (rm -rf operator && ln -s <path to>/file_settings/ operator):
                     *     ENTRY_CREATE:operator
                     * Windows
                     *     ENTRY_CREATE:operator
                     *     ENTRY_MODIFY:operator
                     * After we get an indication that something has changed, we check the timestamp, file id,
                     * real path of our desired file.
                     */
                    if (Files.exists(settingsDir)) {
                        try {
                            Path path = operatorSettingsFile();
                            if (logger.isDebugEnabled()) {
                                key.pollEvents().stream().forEach(e -> logger.debug("{}:{}", e.kind().toString(), e.context().toString()));
                            }
                            key.pollEvents();
                            key.reset();