List of usage examples for org.apache.solr.common.params CommonParams TIME_ALLOWED
String TIME_ALLOWED
To view the source code for org.apache.solr.common.params CommonParams TIME_ALLOWED.
Click Source Link
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); } }