>From Wail Alkowaileet <[email protected]>:

Wail Alkowaileet has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18287 )

Change subject: [NO ISSUE][STO] Include more info. on erroneous write
......................................................................

[NO ISSUE][STO] Include more info. on erroneous write

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

Details:
Include more information on erroneous write of columnar
temp buffers

Change-Id: I8f56c67c394d8486412573f9975d71172b26bb0b
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18287
Reviewed-by: Wail Alkowaileet <[email protected]>
Reviewed-by: Ali Alsuliman <[email protected]>
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
---
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/AbstractColumnValuesWriter.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiTemporaryBufferBytesOutputStream.java
2 files changed, 46 insertions(+), 4 deletions(-)

Approvals:
  Wail Alkowaileet: Looks good to me, but someone else must approve
  Ali Alsuliman: Looks good to me, approved
  Jenkins: Verified; Verified

Objections:
  Anon. E. Moose #1000171: Violations found




diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiTemporaryBufferBytesOutputStream.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiTemporaryBufferBytesOutputStream.java
index 38f7321..8988026 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiTemporaryBufferBytesOutputStream.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiTemporaryBufferBytesOutputStream.java
@@ -55,14 +55,30 @@
     @Override
     public void writeTo(OutputStream outputStream) throws IOException {
         int writtenSize = 0;
-        for (int i = 0; i < currentBufferIndex + 1; i++) {
+        int numberOfUsedBuffers = currentBufferIndex + 1;
+        for (int i = 0; i < numberOfUsedBuffers; i++) {
             ByteBuffer buffer = buffers.get(i);
             outputStream.write(buffer.array(), 0, buffer.position());
             writtenSize += buffer.position();
         }
+
         if (writtenSize != position) {
-            //Sanity check
-            throw new IllegalStateException("Size is different");
+            // Sanity check
+            StringBuilder builder = new StringBuilder();
+            builder.append('[');
+            for (int i = 0; i < numberOfUsedBuffers; i++) {
+                ByteBuffer buffer = buffers.get(i);
+                builder.append("{Buffer index: ").append(i);
+                builder.append(" Position: ").append(buffer.position());
+                builder.append(" Limit: ").append(buffer.limit());
+                builder.append(" Capacity: ").append(buffer.capacity());
+                builder.append("}, ");
+            }
+            builder.setLength(builder.length() - 2);
+            builder.append(']');
+            throw new IllegalStateException("Size is different (written: " + 
writtenSize + ", position: " + position
+                    + ", allocatedBytes: " + allocatedBytes + ", 
currentBufferIndex: " + currentBufferIndex
+                    + ", buffers: " + builder + ")");
         }
     }
 }
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/AbstractColumnValuesWriter.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/AbstractColumnValuesWriter.java
index 5e5d6e4..accf4a0 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/AbstractColumnValuesWriter.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/AbstractColumnValuesWriter.java
@@ -34,10 +34,13 @@
 import org.apache.asterix.om.types.ATypeTag;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IValueReference;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.parquet.bytes.BytesInput;
 import org.apache.parquet.bytes.BytesUtils;

 public abstract class AbstractColumnValuesWriter implements 
IColumnValuesWriter {
+    private static final Logger LOGGER = LogManager.getLogger();
     // For 3 integers (count, defSize, and valueSize)
     private static final int COUNT_DEF_SIZE_VALUE_SIZE = Integer.BYTES * 3;
     protected final AbstractColumnFilterWriter filterWriter;
@@ -188,7 +191,8 @@
                  */
                 BytesUtils.writeZigZagVarInt(0, out);
             }
-        } catch (IOException e) {
+        } catch (Exception e) {
+            LOGGER.error("Error while flushing columnIndex {}", columnIndex);
             throw HyracksDataException.create(e);
         }
         reset();

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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I8f56c67c394d8486412573f9975d71172b26bb0b
Gerrit-Change-Number: 18287
Gerrit-PatchSet: 3
Gerrit-Owner: Wail Alkowaileet <[email protected]>
Gerrit-Reviewer: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Murtadha Hubail <[email protected]>
Gerrit-Reviewer: Wail Alkowaileet <[email protected]>
Gerrit-MessageType: merged

Reply via email to