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/ActiveShardCount.java
case 1:
                return ONE;
            case 0:
                return NONE;
            default:
                assert value > 1;
                return new ActiveShardCount(value);
        }
    }
    @Override
    public void writeTo(final StreamOutput out) throws IOException {
        out.writeInt(value);
    }
    public static ActiveShardCount readFrom(final StreamInput in) throws IOException {
        return get(in.readInt());
    }
    /**
     * Parses the active shard count from the given string.  Valid values are "all" for
     * all shard copies, null for the default value (which defaults to one shard copy),
     * or a numeric value greater than or equal to 0. Any other input will throw an
     * IllegalArgumentException.
     */
    public static ActiveShardCount parseString(final String str) {
        if (str == null) {
            return ActiveShardCount.DEFAULT;
        } else if (str.equals("all")) {
            return ActiveShardCount.ALL;
        } else {
            int val;
            try {