Failed on my PR but reproducible on main.

**Build scan:**
https://gradle-enterprise.elastic.co/s/ihsa6rp45s7pi/tests/:server:test/org.elasticsearch.search.internal.ContextIndexSearcherTests/testContextIndexSearcherDenseWithDeletions

**Reproduction line:**
```
./gradlew ':server:test' --tests "org.elasticsearch.search.internal.ContextIndexSearcherTests.testContextIndexSearcherDenseWithDeletions" -Dtests.seed=CC72C52A61B0EED9 -Dtests.locale=en-ZA -Dtests.timezone=Etc/GMT+12 -Druntime.java=20
```

**Applicable branches:**
main

**Reproduces locally?:**
Yes

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.search.internal.ContextIndexSearcherTests&tests.test=testContextIndexSearcherDenseWithDeletions

**Failure excerpt:**
```
java.lang.AssertionError: 
Expected: an instance of org.apache.lucene.util.FixedBitSet
     but: <org.elasticsearch.lucene.util.MatchAllBitSet@304c196f> is a org.elasticsearch.lucene.util.MatchAllBitSet

  at __randomizedtesting.SeedInfo.seed([CC72C52A61B0EED9:DC24AC130B9BB9E7]:0)
  at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
  at org.junit.Assert.assertThat(Assert.java:956)
  at org.junit.Assert.assertThat(Assert.java:923)
  at org.elasticsearch.search.internal.ContextIndexSearcherTests.doTestContextIndexSearcher(ContextIndexSearcherTests.java:229)
  at org.elasticsearch.search.internal.ContextIndexSearcherTests.testContextIndexSearcherDenseWithDeletions(ContextIndexSearcherTests.java:178)
  at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  at java.lang.reflect.Method.invoke(Method.java:578)
  at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:982)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:996)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
  at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
  at org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
  at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
  at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
  at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
  at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
  at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
  at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
  at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
  at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
  at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
  at org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
  at java.lang.Thread.run(Thread.java:1623)

```
server/src/test/java/org/elasticsearch/search/internal/ContextIndexSearcherTests.java
}
        void stopBusyThreads() {
            busyThreadsLatch.countDown();
        }
        @Override
        public void execute(Runnable command) {
            int started = startedTasks.incrementAndGet();
            if (started > executor.getMaximumPoolSize()) {
                try {
                    /*
                    There could be tasks that complete quickly before the exception is handled, which leaves room for new tasks that are
                    about to get cancelled to start before their cancellation becomes effective. We can accept that cancellation may or may
                    not be effective for the slices that belong to the first batch of tasks until all threads are busy and adjust the
                    test expectations accordingly, but for the subsequent slices, we want to assert that they are cancelled and never
                    executed. The only way to guarantee that is waiting for cancellation to kick in.
                    */
                    assertBusy(() -> {
                        Future<?> future = (Future<?>) command;
                        if (future.isCancelled() == false) {
                            throw new AssertionError("task should be cancelled");
                        }
                    });
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
            executor.execute(command);
        }
    }
    private static class TestQuery extends Query {