The following error message emitted from org.elasticsearch.action.support.replication.ReplicationOperation is misleading:

```
Not enough active copies to meet shard count of [1] (have 1, needed 1)
```

full context:
```
org.elasticsearch.transport.RemoteTransportException: [es-es-index-58f985f8f-pgls6][10.2.12.197:9300][indices:data/write/bulk[s][p]]
Caused by: org.elasticsearch.action.UnavailableShardsException: [.security-7][0] Not enough active copies to meet shard count of [1] (have 1, needed 1). Timeout: [1m], request: [BulkShardRequest [[.security-7][0]] containing [index {[.security][myrole], source[{"enabled":true,"roles":["myrole"],"rules":{"all":[{"field":{"realm.name":"myrealm"}},{"field":{"username":"me"}}]},"metadata":{},"doc_type":"role-mapping"}]}] and a refresh]
```

The message appears to be due to the calculation for wait_for_active_shards only counts search shards, but the message is constructed by counting all shards. In stateless this message can mean that the search shard is not available. 



server/src/main/java/org/elasticsearch/action/support/replication/ReplicationOperation.java
* </ul>
     */
    private final AtomicInteger pendingActions = new AtomicInteger();
    private final AtomicInteger successfulShards = new AtomicInteger();
    private final Primary<Request, ReplicaRequest, PrimaryResultT> primary;
    private final Replicas<ReplicaRequest> replicasProxy;
    private final AtomicBoolean finished = new AtomicBoolean();
    private final TimeValue initialRetryBackoffBound;
    private final TimeValue retryTimeout;
    private final long primaryTerm;
    
    private final ActionListener<PrimaryResultT> resultListener;
    private volatile PrimaryResultT primaryResult = null;
    private final List<ReplicationResponse.ShardInfo.Failure> shardReplicaFailures = Collections.synchronizedList(new ArrayList<>());
    public ReplicationOperation(
        Request request,
        Primary<Request, ReplicaRequest, PrimaryResultT> primary,
        ActionListener<PrimaryResultT> listener,
        Replicas<ReplicaRequest> replicas,
        Logger logger,
        ThreadPool threadPool,
        String opType,
        long primaryTerm,
        TimeValue initialRetryBackoffBound,
        TimeValue retryTimeout
    ) {
        this.replicasProxy = replicas;
        this.primary = primary;
        this.resultListener = listener;
        this.logger = logger;