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
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
public class FileSettingsServiceTests extends ESTestCase {
    private Environment env;
    private ClusterService clusterService;
    private FileSettingsService fileSettingsService;
    private ReservedClusterStateService controller;
    private ThreadPool threadpool;
    @Before
    @SuppressWarnings("unchecked")
    public void setUp() throws Exception {
        super.setUp();
        threadpool = new TestThreadPool("file_settings_service_tests");
        clusterService = spy(
            new ClusterService(
                Settings.builder().put(NODE_NAME_SETTING.getKey(), "test").build(),
                new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS),
                threadpool,
                new TaskManager(Settings.EMPTY, threadpool, Set.of())
            )
        );
        final DiscoveryNode localNode = new DiscoveryNode("node", buildNewFakeTransportAddress(), Version.CURRENT);
        final ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT)
            .nodes(DiscoveryNodes.builder().add(localNode).localNodeId(localNode.getId()).masterNodeId(localNode.getId()))
            .build();
        doAnswer((Answer<ClusterState>) invocation -> clusterState).when(clusterService).state();