void preventCircularMirroring()

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


    void preventCircularMirroring(MirroredSolrRequest mirroredSolrRequest) {
        if (mirroredSolrRequest.getSolrRequest() instanceof UpdateRequest) {
            UpdateRequest updateRequest = (UpdateRequest) mirroredSolrRequest.getSolrRequest();
            ModifiableSolrParams params = updateRequest.getParams();
            String shouldMirror = (params == null ? null : params.get(CrossDcConstants.SHOULD_MIRROR));
            if (shouldMirror == null) {
                log.warn(CrossDcConstants.SHOULD_MIRROR + " param is missing - setting to false. Request={}", mirroredSolrRequest);
                updateRequest.setParam(CrossDcConstants.SHOULD_MIRROR, "false");
            } else if (!"false".equalsIgnoreCase(shouldMirror)) {
                log.warn(CrossDcConstants.SHOULD_MIRROR + " param equal to " + shouldMirror);
            }
        } else {
            SolrParams params = mirroredSolrRequest.getSolrRequest().getParams();
            String shouldMirror = (params == null ? null : params.get(CrossDcConstants.SHOULD_MIRROR));
            if (shouldMirror == null) {
                if (params instanceof ModifiableSolrParams) {
                    log.warn("{} {}", CrossDcConstants.SHOULD_MIRROR, "param is missing - setting to false");
                    ((ModifiableSolrParams) params).set(CrossDcConstants.SHOULD_MIRROR, "false");
                } else {
                    log.warn("{} {}", CrossDcConstants.SHOULD_MIRROR, "param is missing and params are not modifiable");
                }
            } else if (!"false".equalsIgnoreCase(shouldMirror)) {
                log.warn("{} {}", CrossDcConstants.SHOULD_MIRROR, "param is present and set to " + shouldMirror);
            }
        }
    }