**Build scan:**
https://gradle-enterprise.elastic.co/s/hdrkqs5hmpp6k/tests/:server:internalClusterTest/org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT/testSeqNoCASLinearizability

**Reproduction line:**
`./gradlew ':server:internalClusterTest' --tests "org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT.testSeqNoCASLinearizability" -Dtests.seed=FF0D42993DBCEB07 -Dtests.locale=es-HN -Dtests.timezone=Chile/Continental -Druntime.java=18`

**Applicable branches:**
8.3

**Reproduces locally?:**
No

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT&tests.test=testSeqNoCASLinearizability

**Failure excerpt:**
```
com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an uncaught exception in thread: Thread[id=4099, name=elasticsearch[node_t3][generic][T#3], state=RUNNABLE, group=TGRP-ConcurrentSeqNoVersioningIT]


  Caused by: java.lang.AssertionError: supposedly in-sync shard copy received a global checkpoint [566] that is higher than its local checkpoint [560]

    at __randomizedtesting.SeedInfo.seed([FF0D42993DBCEB07]:0)
    at org.elasticsearch.index.shard.IndexShard.updateGlobalCheckpointOnReplica(IndexShard.java:2760)
    at org.elasticsearch.index.shard.IndexShard.lambda$innerAcquireReplicaOperationPermit$30(IndexShard.java:3537)
    at org.elasticsearch.index.shard.IndexShard$5.onResponse(IndexShard.java:3398)
    at org.elasticsearch.index.shard.IndexShard$5.onResponse(IndexShard.java:3368)
    at org.elasticsearch.index.shard.IndexShard.lambda$asyncBlockOperations$24(IndexShard.java:3319)
    at org.elasticsearch.action.ActionListener$2.onResponse(ActionListener.java:162)
    at org.elasticsearch.index.shard.IndexShardOperationPermits$1.doRun(IndexShardOperationPermits.java:107)
    at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:769)
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
    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)

```
test/framework/src/main/java/org/elasticsearch/test/transport/MockTransportService.java
import org.elasticsearch.transport.netty4.Netty4Transport;
import org.elasticsearch.transport.netty4.SharedGroupFactory;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.function.Supplier;
/**
 * A mock delegate service that allows to simulate different network topology failures.
 * Internally it maps TransportAddress objects to rules that inject failures.
 * Adding rules for a node is done by adding rules for all bound addresses of a node
 * (and the publish address, if different).
 * Matching requests to rules is based on the delegate address associated with the
 * discovery node of the request, namely by DiscoveryNode.getAddress().
 * This address is usually the publish address of the node but can also be a different one
 * (for example, @see org.elasticsearch.discovery.HandshakingTransportAddressConnector, which constructs
 * fake DiscoveryNode instances where the publish address is one of the bound addresses).
 */
public final class MockTransportService extends TransportService {