docs: @Nullable
    private ServerHolder assignPrimary(
        final DruidCoordinatorRuntimeParams params,
        final DataSegment segment
    )
    {
      ServerHolder topCandidate = null;
      for (final Object2IntMap.Entry<String> entry : targetReplicants.object2IntEntrySet()) {
        final int targetReplicantsInTier = entry.getIntValue();
        // sanity check: target number of replicants should be more than zero.
        if (targetReplicantsInTier <= 0) {
          continue;
        }
        final String tier = entry.getKey();
  
        String noAvailability = StringUtils.format(
            "No available [%s] servers or node capacity to assign primary segment[%s]! Expected Replicants[%d]",
            tier,
            segment.getId(),
            targetReplicantsInTier
        );
  
        final List<ServerHolder> holders = getFilteredHolders(
            tier,
            params.getDruidCluster(),
            createLoadQueueSizeLimitingPredicate(params)
        );
        // no holders satisfy the predicate
        if (holders.isEmpty()) {
          log.warn(noAvailability);
          continue;
        }
  
        final ServerHolder candidate = params.getBalancerStrategy().findNewSegmentHomeReplicator(segment, holders);
        if (candidate == null) {
          log.warn(noAvailability);
        } else {
          // cache the result for later use.
          strategyCache.put(tier, candidate);
          if (topCandidate == null ||
              candidate.getServer().getPriority() > topCandidate.getServer().getPriority()) {
            topCandidate = candidate;
          }
        }
      }
  
      if (topCandidate != null) {
        // remove tier for primary replica
        strategyCache.remove(topCandidate.getServer().getTier());
        log.info(
            "Assigning 'primary' for segment [%s] to server [%s] in tier [%s]",
            segment.getId(),
            topCandidate.getServer().getName(),
            topCandidate.getServer().getTier()
        );
        topCandidate.getPeon().loadSegment(segment, null);
      }
  
      return topCandidate;
    }