private void finish() {
   if (finished.compareAndSet(false, true)) {
     final ReplicationResponse.ShardInfo.Failure[] failuresArray;
     if (shardReplicaFailures.isEmpty()) {
       failuresArray = ReplicationResponse.EMPTY;
     } else {
       failuresArray = new ReplicationResponse.ShardInfo.Failure[shardReplicaFailures.size()];
       shardReplicaFailures.toArray(failuresArray);
     }
     primaryResult.setShardInfo(
         new ReplicationResponse.ShardInfo(
             totalShards.get(), successfulShards.get(), failuresArray));
     resultListener.onResponse(primaryResult);
   }
 }