>From Ali Alsuliman <[email protected]>:
Ali Alsuliman has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21308?usp=email )
Change subject: [ASTERIXDB-3649][HYR] Ensure reportPartitionConsumed for all
partitions
......................................................................
[ASTERIXDB-3649][HYR] Ensure reportPartitionConsumed for all partitions
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
The following applies to non-async requests.
- Change result set reader to read all locations even empty ones.
Otherwise, if empty locations were left unread, then the result
state in both the NCs and CC will stay around.
- Call reportPartitionConsumed for all partitions for the same reason.
Otherwise, the job record in the CC will stay around.
Ext-ref: MB-71997, MB-69763
Change-Id: I330d0668c8b41d5096d095a6067f8214ca60a4f1
---
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
M
hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/PartitionResultSetReader.java
M
hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/ResultSetReader.java
M
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionManager.java
4 files changed, 7 insertions(+), 15 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/08/21308/1
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
index 01ee878..0dbad6a 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
@@ -115,9 +115,9 @@
response.setStatus(HttpResponseStatus.NOT_FOUND);
return;
}
- response.setStatus(httpStatus);
SessionOutput sessionOutput = initResponse(request, response,
metadata.getFormat());
processResults(handle, resultReader, sessionOutput, metadata,
request);
+ response.setStatus(httpStatus);
} catch (HyracksDataException e) {
if (e.matches(ErrorCode.NO_RESULT_SET)) {
LOGGER.log(Level.INFO, "No results for: \"" + strHandle +
"\"");
diff --git
a/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/PartitionResultSetReader.java
b/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/PartitionResultSetReader.java
index dd72e2e..8f0ccf2 100644
---
a/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/PartitionResultSetReader.java
+++
b/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/PartitionResultSetReader.java
@@ -96,12 +96,7 @@
// exhausted all known records
return false;
}
- ResultDirectoryRecord record = getRecord(currentRecord);
- // skip empty records
- if (record.isEmpty()) {
- return false;
- }
- requestRecordData(record);
+ requestRecordData(getRecord(currentRecord));
return true;
}
diff --git
a/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/ResultSetReader.java
b/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/ResultSetReader.java
index 9765805..07dbde2 100644
---
a/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/ResultSetReader.java
+++
b/hyracks-fullstack/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/result/ResultSetReader.java
@@ -164,16 +164,11 @@
protected boolean hasNextRecord() throws HyracksDataException {
currentRecord++;
- ResultDirectoryRecord record = getRecord(currentRecord);
- // skip empty records
- while (record.isEmpty() && ++currentRecord < knownRecords.length) {
- record = getRecord(currentRecord);
- }
if (currentRecord == knownRecords.length) {
// exhausted all known records
return false;
}
- requestRecordData(record);
+ requestRecordData(getRecord(currentRecord));
return true;
}
diff --git
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionManager.java
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionManager.java
index b13988a..8203637 100644
---
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionManager.java
+++
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/result/ResultPartitionManager.java
@@ -157,8 +157,10 @@
public synchronized void removePartition(JobId jobId, ResultSetId
resultSetId, int partition)
throws HyracksException {
ResultSetMap rsIdMap = partitionResultStateMap.get(jobId);
- if (rsIdMap != null && rsIdMap.removePartition(jobId, resultSetId,
partition)) {
- partitionResultStateMap.remove(jobId);
+ if (rsIdMap != null) {
+ if (rsIdMap.removePartition(jobId, resultSetId, partition)) {
+ partitionResultStateMap.remove(jobId);
+ }
reportPartitionConsumed(jobId, resultSetId, partition);
}
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21308?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: lumina
Gerrit-Change-Id: I330d0668c8b41d5096d095a6067f8214ca60a4f1
Gerrit-Change-Number: 21308
Gerrit-PatchSet: 1
Gerrit-Owner: Ali Alsuliman <[email protected]>