From 7bd9ac246acdebb80c3e637dfa19f9ebc84e37e1 Mon Sep 17 00:00:00 2001 From: tanisha Date: Wed, 2 Jun 2021 16:45:45 -0400 Subject: [PATCH] Re:#879 - Removed trigger booleans, is page less than requested page size, update status --- .../webservice/query/runner/RunningQuery.java | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/web-services/query/src/main/java/datawave/webservice/query/runner/RunningQuery.java b/web-services/query/src/main/java/datawave/webservice/query/runner/RunningQuery.java index 8c3bd360aea..03fcd4a7429 100644 --- a/web-services/query/src/main/java/datawave/webservice/query/runner/RunningQuery.java +++ b/web-services/query/src/main/java/datawave/webservice/query/runner/RunningQuery.java @@ -196,10 +196,14 @@ public ResultsPage next() throws Exception { touch(); long pageStartTime = System.currentTimeMillis(); List resultList = new ArrayList<>(); + + int currentPageCount = 0; + long currentPageBytes = 0; + int maxPageSize = Math.min(this.settings.getPagesize(), this.logic.getMaxPageSize()); + try { addNDC(); - int currentPageCount = 0; - long currentPageBytes = 0; + // test for any exceptions prior to loop as hasNext() would likely be false; testForUncaughtException(resultList.size()); @@ -237,13 +241,9 @@ public ResultsPage next() throws Exception { log.info("Query logic max results has been reached, aborting query.next call"); this.getMetric().setLifecycle(QueryMetric.Lifecycle.MAXRESULTS); break; - - } else if (numResults >= this.maxResults) { - log.info("Results are greater than max results, aborting query.next call"); - this.getMetric().setLifecycle(BaseQueryMetric.Lifecycle.MAXRESULTS); - break; } + if (this.logic.getMaxWork() >= 0 && (this.getMetric().getNextCount() + this.getMetric().getSeekCount()) >= this.logic.getMaxWork()) { log.info("Query logic max work has been reached, aborting query.next call"); this.getMetric().setLifecycle(QueryMetric.Lifecycle.MAXWORK); @@ -255,10 +255,9 @@ public ResultsPage next() throws Exception { // this page. long pageTimeInCall = (System.currentTimeMillis() - pageStartTime); - int maxPageSize = Math.min(this.settings.getPagesize(), this.logic.getMaxPageSize()); if (timing != null && currentPageCount > 0 && timing.shouldReturnPartialResults(currentPageCount, maxPageSize, pageTimeInCall)) { log.info("Query logic max expire before page is full, returning existing results " + currentPageCount + " " + maxPageSize + " " - + pageTimeInCall + " " + timing); + + pageTimeInCall + " " + timing); break; } @@ -334,13 +333,9 @@ public ResultsPage next() throws Exception { } } } - if (resultList.isEmpty()) { - return new ResultsPage(); - } else { - return new ResultsPage(resultList,ResultsPage.Status.PARTIAL); - } + ResultsPage.Status status = (currentPageCount < maxPageSize) ? ResultsPage.Status.PARTIAL : ResultsPage.Status.COMPLETE; + return new ResultsPage(resultList, status); } - public void cancel() { this.canceled = true; // save off the future as it could be removed at any time