Example usage for org.apache.solr.common.params CommonParams TIME_ALLOWED

List of usage examples for org.apache.solr.common.params CommonParams TIME_ALLOWED

Introduction

In this page you can find the example usage for org.apache.solr.common.params CommonParams TIME_ALLOWED.

Prototype

String TIME_ALLOWED

To view the source code for org.apache.solr.common.params CommonParams TIME_ALLOWED.

Click Source Link

Document

Timeout value in milliseconds.

Usage

From source file:lux.solr.XQueryComponent.java

License:Mozilla Public License

protected void evaluateQuery(ResponseBuilder rb, int start, int len) {
    String query = rb.getQueryString();
    SolrQueryRequest req = rb.req;/*from  w  ww.j  a  va2 s  .co m*/
    SolrQueryResponse rsp = rb.rsp;
    if (StringUtils.isBlank(query)) {
        rsp.add("xpath-error", "query was blank");
        return;
    }
    SolrParams params = req.getParams();
    long timeAllowed = (long) params.getInt(CommonParams.TIME_ALLOWED, -1);
    XQueryExecutable expr;
    LuxSearcher searcher = new LuxSearcher(rb.req.getSearcher());
    DocWriter docWriter = new SolrDocWriter(this, rb.req.getCore());
    Compiler compiler = solrIndexConfig.getCompiler();
    SolrQueryContext context = new SolrQueryContext(this, req);
    if (rb.shards != null && rb.req.getParams().getBool("distrib", true)) {
        // This is a distributed request; pass in the ResponseBuilder so it will be
        // available to a subquery.
        context.setResponseBuilder(rb);
        // also capture the current set of shards
        shards = rb.shards;
        slices = rb.slices;
    }
    SolrSearchService searchService = new SolrSearchService(context, new LuxSearchQueryParser());
    Evaluator eval = new Evaluator(compiler, searcher, docWriter, searchService);
    // track which evaluator we are using in a threadlocal container
    evalHolder.set(eval);
    TransformErrorListener errorListener = eval.getErrorListener();
    try {
        URI baseURI = queryPath == null ? null : java.net.URI.create(queryPath);
        expr = compiler.compile(query, errorListener, baseURI, null);
    } catch (LuxException ex) {
        // ex.printStackTrace();
        String err = formatError(query, errorListener);
        if (StringUtils.isEmpty(err)) {
            err = ex.getMessage();
        }
        rsp.add("xpath-error", err);
        // don't close: this forces a commit()
        // evaluator.close();
        return;
    }
    // SolrIndexSearcher.QueryResult result = new
    // SolrIndexSearcher.QueryResult();
    NamedList<Object> xpathResults = new NamedList<Object>();
    long tstart = System.currentTimeMillis();
    int count = 0;
    bindRequestVariables(rb, req, expr, compiler, eval, context);
    Iterator<XdmItem> queryResults = eval.iterator(expr, context);
    String err = null;
    while (queryResults.hasNext()) {
        XdmItem xpathResult = queryResults.next();
        if (++count < start) {
            continue;
        }
        if (count == 1 && !xpathResult.isAtomicValue()) {
            net.sf.saxon.s9api.QName name = ((XdmNode) xpathResult).getNodeName();
            if (name != null && name.getNamespaceURI().equals(EXPATH_HTTP_NS)
                    && name.getLocalName().equals("response")) {
                err = handleEXPathResponse(req, rsp, xpathResults, xpathResult);
                if (queryResults.hasNext()) {
                    logger.warn(
                            "Ignoring results following http:response, which should be the sole item in its result");
                }
                break;
            }
        }
        err = safeAddResult(xpathResults, xpathResult);
        if (err != null) {
            xpathResult = null;
            break;
        }
        if ((len > 0 && xpathResults.size() >= len)
                || (timeAllowed > 0 && (System.currentTimeMillis() - tstart) > timeAllowed)) {
            break;
        }
    }
    ArrayList<TransformerException> errors = eval.getErrorListener().getErrors();
    if (!errors.isEmpty()) {
        err = formatError(query, errors, eval.getQueryStats());
        if (xpathResults.size() == 0) {
            xpathResults = null; // throw a 400 error; don't return partial
                                 // results
        }
    }
    if (err != null) {
        rsp.add("xpath-error", err);
    }
    if (rb.getResults() == null) {
        // create a dummy doc list if previous query processing didn't retrieve any docs
        // In distributed operation, there will be doc results, otherwise none.
        SolrIndexSearcher.QueryResult result = new SolrIndexSearcher.QueryResult();
        result.setDocList(new DocSlice(0, 0, null, null, eval.getQueryStats().docCount, 0));
        rb.setResult(result);
        rsp.add("response", rb.getResults().docList);
    }
    if (xpathResults != null) {
        rsp.add("xpath-results", xpathResults);
        if (logger.isDebugEnabled()) {
            logger.debug("retrieved: " + eval.getDocReader().getCacheMisses() + " docs, " + xpathResults.size()
                    + " results, " + (System.currentTimeMillis() - tstart) + "ms");
        }
    } else {
        logger.warn("xquery evaluation error: " + eval.getDocReader().getCacheMisses() + " docs, "
                + "0 results, " + (System.currentTimeMillis() - tstart) + "ms");
    }
    if (err == null && context.isCommitPending()) {
        doCommit();
    }
}

From source file:org.vootoo.client.netty.NettySolrClient.java

License:Apache License

protected ResponseParser createRequest(SolrRequest request, ProtobufRequestSetter saveRequestSetter)
        throws SolrServerException, IOException {

    SolrParams params = request.getParams();
    Collection<ContentStream> streams = requestWriter.getContentStreams(request);//throw IOException
    String path = requestWriter.getPath(request);
    if (path == null || !path.startsWith("/")) {
        path = DEFAULT_PATH;/* w ww .  j  a v a2 s  .  c o  m*/
    }

    ResponseParser parser = request.getResponseParser();
    if (parser == null) {
        parser = this.parser;
    }

    // The parser 'wt=' and 'version=' params are used instead of the original
    // params
    ModifiableSolrParams wparams = new ModifiableSolrParams(params);
    if (parser != null) {
        wparams.set(CommonParams.WT, parser.getWriterType());
        wparams.set(CommonParams.VERSION, parser.getVersion());
    }
    if (invariantParams != null) {
        wparams.add(invariantParams);
    }

    Integer timeout = wparams.getInt(CommonParams.TIME_ALLOWED);
    if (timeout == null) {
        //mandatory use TIME_ALLOWED
        timeout = defaultTimeout;
        wparams.set(CommonParams.TIME_ALLOWED, timeout);
    }

    saveRequestSetter.setTimeout(timeout);
    saveRequestSetter.setPath(path);
    saveRequestSetter.setSolrParams(wparams);

    if (request.getMethod() != null) {
        saveRequestSetter.setMethod(request.getMethod());
    }

    if (SolrRequest.METHOD.GET == request.getMethod()) {
        if (streams != null) {
            throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "GET can't send streams!");
        }
        return parser;
    }

    if (SolrRequest.METHOD.POST == request.getMethod() || SolrRequest.METHOD.PUT == request.getMethod()) {
        if (streams != null) {
            saveRequestSetter.setContentStreams(streams);
        }

        return parser;
    }

    throw new SolrServerException("Unsupported method: " + request.getMethod());
}

From source file:org.vootoo.server.netty.SolrRequestRunner.java

License:Apache License

protected void handleRequest(ProtobufResponseSetter responeSetter, ProtobufRequestGetter solrRequest) {
    long waitTime = solrRequest.useTime();
    //mdc log wait in queue time
    putMDCWithWaitTime(waitTime);/* w w w .  ja v  a2  s.  c  o m*/

    Logger myLogger = isUpdate ? updateLogger : queryLogger;

    SolrParams solrParams = solrRequest.getSolrParams();
    int timeout = solrParams.getInt(CommonParams.TIME_ALLOWED, queryDefaultTimeout);

    if (waitTime > timeout) {//is timeout
        myLogger.warn("tip={} params={{}}", "Timeout_In_Queue", solrParams);
        throw new VootooException(VootooException.VootooErrorCode.TIMEOUT, "timeout stay in RequestQueue");
    }

    if (myLogger.isDebugEnabled()) {
        myLogger.debug("tip={} params={{}}", "Start_Execute", solrRequest.getSolrParams());
    }

    RequestProcesser requestHandler = new RequestProcesser(coreContainer, responeSetter);

    long st = System.currentTimeMillis();
    requestHandler.handleRequest(solrRequest);
    long ut = System.currentTimeMillis() - st;

    //mdc log execute time
    putMDCWithExecuteTime(ut);

    //log
    if (responeSetter.getSolrQueryResponse() != null
            && responeSetter.getSolrQueryResponse().getToLog().size() > 0) {
        NamedList<Object> myToLog = responeSetter.getSolrQueryResponse().getToLog();
        String plog = toLogString(myToLog);

        myLogger.info("{}", plog);
    } else {
        myLogger.info("params={{}}", solrParams);
    }
}