private Result processMirroredSolrRequest()

in crossdc-consumer/src/main/java/org/apache/solr/crossdc/messageprocessor/SolrMessageProcessor.java [182:218]


    private Result<MirroredSolrRequest> processMirroredSolrRequest(SolrRequest request, MirroredSolrRequest.Type type) throws Exception {
        String connectString;
        if (client.getClusterStateProvider() instanceof ZkClientClusterStateProvider) {
            connectString = ((ZkClientClusterStateProvider) client.getClusterStateProvider()).getZkHost();
        } else {
            connectString = client.toString();
        }
        if (log.isDebugEnabled()) {
            log.debug("Sending request to Solr at address={} with params {}", connectString, request.getParams());
        }
        Result<MirroredSolrRequest> result;
        SolrResponseBase response = null;
        Timer.Context ctx = metrics.timer(MetricRegistry.name(type.name(), "outputTime")).time();

        try {
            response = (SolrResponseBase) request.process(client);
        } finally {
            ctx.stop();
        }

        int status = response.getStatus();

        if (log.isTraceEnabled()) {
            log.trace("result status={}", status);
        }

        if (status != 0) {
            metrics.counter(MetricRegistry.name(type.name(), "outputErrors")).inc();
            throw new SolrException(SolrException.ErrorCode.getErrorCode(status), "response=" + response);
        }

        if (log.isDebugEnabled()) {
            log.debug("Finished sending request to Solr at address={} with params {} status_code={}", connectString, request.getParams(), status);
        }
        result = new Result<>(ResultStatus.HANDLED);
        return result;
    }