>From Ali Alsuliman <[email protected]>:

Ali Alsuliman has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17567 )

Change subject: [ASTERIXDB-3172][RT] Do not reset byte array holding serialized 
tuple
......................................................................

[ASTERIXDB-3172][RT] Do not reset byte array holding serialized tuple

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
In the ResultWriterOperatorDescriptor, the frameOutputStream
should not reset the byte array that holds the serialized
tuple when adding the tuple to the frame (appendTuple()).
This leads to having to re-serialized the tuple again into
the byte array when the frame couldn't appendTuple() due to
being full of tuples.

Change-Id: Ibaaac339065a30f58e2bc7f39800a506f959549d
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17501
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: Murtadha Hubail <[email protected]>
(cherry picked from commit 4f18020796c78bb4455bd7bec2946f83650da427)
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17567
Reviewed-by: Murtadha Al Hubail <[email protected]>
Reviewed-by: Ali Alsuliman <[email protected]>
---
M 
hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java
M 
hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java
2 files changed, 37 insertions(+), 9 deletions(-)

Approvals:
  Murtadha Al Hubail: Looks good to me, approved
  Ali Alsuliman: Looks good to me, but someone else must approve
  Jenkins: Verified; Verified
  Anon. E. Moose #1000171:




diff --git 
a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java
 
b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java
index d3af00d..241e3e2 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java
@@ -51,9 +51,7 @@
         if (LOGGER.isTraceEnabled()) {
             LOGGER.trace("appendTuple(): tuple size: " + count);
         }
-        boolean appended = frameTupleAppender.append(buf, 0, count);
-        count = 0;
-        return appended;
+        return frameTupleAppender.append(buf, 0, count);
     }

     public void flush(IFrameWriter writer) throws HyracksDataException {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java
 
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java
index a4cfa13..426121c 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java
@@ -31,6 +31,7 @@
 import org.apache.hyracks.api.dataflow.value.IResultSerializer;
 import org.apache.hyracks.api.dataflow.value.IResultSerializerFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.ErrorCode;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.exceptions.HyracksException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
@@ -43,14 +44,12 @@
 import 
org.apache.hyracks.dataflow.std.base.AbstractUnaryInputSinkOperatorNodePushable;

 public class ResultWriterOperatorDescriptor extends 
AbstractSingleActivityOperatorDescriptor {
+
     private static final long serialVersionUID = 1L;

     private final ResultSetId rsId;
-
     private final IResultMetadata metadata;
-
     private final boolean asyncMode;
-
     private final IResultSerializerFactory resultSerializerFactory;
     private final long maxReads;

@@ -105,10 +104,12 @@
                     resultSerializer.appendTuple(frameTupleAccessor, tIndex);
                     if (!frameOutputStream.appendTuple()) {
                         frameOutputStream.flush(resultPartitionWriter);
-
-                        resultSerializer.appendTuple(frameTupleAccessor, 
tIndex);
-                        frameOutputStream.appendTuple();
+                        if (!frameOutputStream.appendTuple()) {
+                            throw 
HyracksDataException.create(ErrorCode.TUPLE_CANNOT_FIT_INTO_EMPTY_FRAME,
+                                    frameOutputStream.getLength());
+                        }
                     }
+                    frameOutputStream.reset();
                 }
             }


--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17567
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: stabilization-667a908755
Gerrit-Change-Id: Ibaaac339065a30f58e2bc7f39800a506f959549d
Gerrit-Change-Number: 17567
Gerrit-PatchSet: 2
Gerrit-Owner: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Murtadha Al Hubail <[email protected]>
Gerrit-MessageType: merged

Reply via email to