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
doAnswer((Answer<Void>) invocation -> {
            invocation.callRealMethod();
            latch.countDown();
            return null;
        }).when(service).processSettingsAndNotifyListeners();
        Files.createDirectories(service.watchedFileDir());
        
        writeTestFile(service.watchedFile(), "{}");
        service.start();
        service.startWatcher(clusterService.state());
        
        assertTrue(latch.await(20, TimeUnit.SECONDS));
        verify(service, times(1)).processFileChanges();
        
        assertTrue(settingsChanged.get());
        service.stop();
        service.close();
    }
    @SuppressWarnings("unchecked")
    public void testStopWorksInMiddleOfProcessing() throws Exception {
        var spiedController = spy(controller);
        var fsService = new FileSettingsService(clusterService, spiedController, env);
        FileSettingsService service = spy(fsService);
        CountDownLatch processFileLatch = new CountDownLatch(1);
        CountDownLatch deadThreadLatch = new CountDownLatch(1);
        doAnswer((Answer<ReservedStateChunk>) invocation -> {
            processFileLatch.countDown();
            new Thread(() -> {