### Description

`SearchResponse.Clusters` currently uses a `HashMap<String, AtomicReference>` for storing Cluster objects. The AtomicReference CAS swaps are done in a do/while loop in most cases (e.g., in `CCSSingleCoordinatorSearchProgressListener`).

This can be replaced with a `ConcurrentHashMap` in conjunction with either `compute()` method or the `replace(key, assumed_previous_value, value)` method for atomically swapping in a new Cluster object with a CAS operation, assuring that the updates don't lose data from competing threads doing separate Cluster object updates.

See: https://github.com/elastic/elasticsearch/pull/98457/files#r1310467586 
server/src/main/java/org/elasticsearch/action/search/SearchResponse.java
if (out.getTransportVersion().onOrAfter(TransportVersions.V_7_10_0)) {
            out.writeOptionalString(pointInTimeId);
        }
    }
    @Override
    public String toString() {
        return Strings.toString(this);
    }
    /**
     * Holds info about the clusters that the search was executed on: how many in total, how many of them were successful
     * and how many of them were skipped and further details in a Map of Cluster objects
     * (when doing a cross-cluster search).
     */
    public static class Clusters implements ToXContentFragment, Writeable {
        public static final Clusters EMPTY = new Clusters(0, 0, 0);
        static final ParseField _CLUSTERS_FIELD = new ParseField("_clusters");
        static final ParseField TOTAL_FIELD = new ParseField("total");
        static final ParseField SUCCESSFUL_FIELD = new ParseField("successful");
        static final ParseField SKIPPED_FIELD = new ParseField("skipped");
        static final ParseField RUNNING_FIELD = new ParseField("running");
        static final ParseField PARTIAL_FIELD = new ParseField("partial");
        static final ParseField FAILED_FIELD = new ParseField("failed");
        static final ParseField DETAILS_FIELD = new ParseField("details");
        private final int total;
        private final int successful;   
        private final int skipped;      
        
        
        
        private final Map<String, AtomicReference<Cluster>> clusterInfo;