public QueryRunResult Run(QueryPlanFull planFull, Page page)
        {
            const int maxTryCount = 5;
            int       tryCounter  = maxTryCount;

            for (;;)
            {
                try
                {
                    var s = Stopwatch.StartNew();
                    _logger.InfoFormat("Try to execute query '{0}' ", planFull.Query.Full);
                    QueryRunResult result = DoRun(planFull, page);
                    _logger.InfoFormat("Query was executed successfully '{0}' in {1} ms", planFull.Query.Full, s.Elapsed.TotalMilliseconds);
                    return(result);
                }
                catch (DocumentIndexConcurrentAccessException)
                {
                    _logger.InfoFormat("Try to execute query '{0}' failed", planFull.Query.Full);
                    if (--tryCounter == 0)
                    {
                        _logger.InfoFormat("Cannot execute query '{0}' after {1} tries", planFull.Query.Full, maxTryCount);
                        throw;
                    }
                }
            }
        }
Esempio n. 2
0
        public QueryResult Run(QueryData data)
        {
            if (string.IsNullOrEmpty(data.Query))
            {
                return(new QueryResult());
            }
            var            parsedQuery   = _queryParser.Parse(data.Query);
            QueryPlanFull  queryPlanFull = _queryPlanBuilder.Build(data, parsedQuery);
            QueryRunResult result        = _queryEngine.Run(queryPlanFull, Map(data.Page));

            return(CreateResult(result, data));
        }
        public QueryResult Run(QueryData data)
        {
            if (string.IsNullOrEmpty(data.Query))
            {
                return(new QueryResult());
            }
            string         parsedQuery = _queryParser.Parse(data.Query);
            QueryPlan      queryPlan   = _queryPlanBuilder.Build(data, parsedQuery);
            QueryRunResult result      = _queryPlanExecutor.Run(queryPlan, Map(data.Page));

            return(CreateResult(result, data));
        }
		private QueryResult CreateResult(QueryRunResult queryResult, QueryData queryData)
		{
			QueryEntityTypeProvider.SearchResult result = _queryResultFactory.CreateQueryResult(queryResult.Entities);
			var searchResult = new QueryResult
				{
					GeneralIds = result.GeneralIds.ToArray(),
					AssignableIds = result.AssignableIds.ToArray(),
					TestCaseIds = result.TestCaseIds.ToArray(),
					CommentIds = queryResult.Comments.Select(i => i.FileName).ToArray(),
					QueryString = queryData.Query,
					Total = queryResult.EntitiesTotalCount + queryResult.CommentsTotalCount,
					LastIndexedEntityId = queryResult.LastIndexedEntityId,
					LastIndexedCommentId = queryResult.LastIndexedCommentId
				};
			return searchResult;
		}
        private QueryResult CreateResult(QueryRunResult queryResult, QueryData queryData)
        {
            QueryEntityTypeProvider.SearchResult result = _queryResultFactory.CreateQueryResult(queryResult.Entities);
            var searchResult = new QueryResult
            {
                GeneralIds           = result.GeneralIds.ToArray(),
                AssignableIds        = result.AssignableIds.ToArray(),
                TestCaseIds          = result.TestCaseIds.ToArray(),
                CommentIds           = queryResult.Comments.Select(i => i.FileName).ToArray(),
                QueryString          = queryData.Query,
                Total                = queryResult.EntitiesTotalCount + queryResult.CommentsTotalCount,
                LastIndexedEntityId  = queryResult.LastIndexedEntityId,
                LastIndexedCommentId = queryResult.LastIndexedCommentId
            };

            return(searchResult);
        }