Looks like the watcher thread was interrupted but the interrupt was lost somewhere along the way.

**Build scan:**
https://gradle-enterprise.elastic.co/s/tkibjrfrug5pw/tests/:server:test/org.elasticsearch.reservedstate.service.FileSettingsServiceTests/testStopWorksIfProcessingDidntReturnYet

**Reproduction line:**
```
./gradlew ':server:test' --tests "org.elasticsearch.reservedstate.service.FileSettingsServiceTests.testStopWorksIfProcessingDidntReturnYet" -Dtests.seed=2A90D2A7A2E74E69 -Dtests.locale=sl-SI -Dtests.timezone=America/Fortaleza -Druntime.java=17
```

**Applicable branches:**
8.7

**Reproduces locally?:**
Didn't try

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.reservedstate.service.FileSettingsServiceTests&tests.test=testStopWorksIfProcessingDidntReturnYet

**Failure excerpt:**
```
java.lang.Exception: Test abandoned because suite timeout was reached.

  at __randomizedtesting.SeedInfo.seed([2A90D2A7A2E74E69]:0)

```
server/src/test/java/org/elasticsearch/reservedstate/service/FileSettingsServiceTests.java
clusterService.setRerouteService(mock(RerouteService.class));
        clusterService.setNodeConnectionsService(mock(NodeConnectionsService.class));
        clusterService.getClusterApplierService().setInitialState(clusterState);
        clusterService.getMasterService().setClusterStatePublisher((e, pl, al) -> {
            ClusterServiceUtils.setAllElapsedMillis(e);
            al.onCommit(TimeValue.ZERO);
            for (DiscoveryNode node : e.getNewState().nodes()) {
                al.onNodeAck(node, null);
            }
            pl.onResponse(null);
        });
        clusterService.getMasterService().setClusterStateSupplier(() -> clusterState);
        env = newEnvironment(Settings.EMPTY);
        Files.createDirectories(env.configFile());
        ClusterSettings clusterSettings = new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS);
        controller = new ReservedClusterStateService(clusterService, List.of(new ReservedClusterSettingsAction(clusterSettings)));
        fileSettingsService = spy(new FileSettingsService(clusterService, controller, env));
    }
    @After
    public void tearDown() throws Exception {
        super.tearDown();
        clusterService.close();
        threadpool.shutdownNow();
    }
    public void testOperatorDirName() {
        Path operatorPath = fileSettingsService.watchedFileDir();
        assertTrue(operatorPath.startsWith(env.configFile()));
        assertTrue(operatorPath.endsWith("operator"));
        Path operatorSettingsFile = fileSettingsService.watchedFile();
        assertTrue(operatorSettingsFile.startsWith(operatorPath));