abdullah alamoudi has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/951

Change subject: Fix Decoding of byte[] Records
......................................................................

Fix Decoding of byte[] Records

Change-Id: I71c3d8b8dfa5a98123725f139247d2b5ce10012e
---
M 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
1 file changed, 9 insertions(+), 8 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/51/951/1

diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
index 6ce5e98..7e1f142 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
@@ -39,17 +39,15 @@
 import com.couchbase.client.deps.io.netty.buffer.ByteBuf;
 import com.couchbase.client.deps.io.netty.util.ReferenceCountUtil;
 
-public class DCPMessageToRecordConverter
-        implements IRecordToRecordWithMetadataAndPKConverter<DCPRequest, 
char[]> {
+public class DCPMessageToRecordConverter implements 
IRecordToRecordWithMetadataAndPKConverter<DCPRequest, char[]> {
 
     private final RecordWithMetadataAndPK<char[]> recordWithMetadata;
     private final CharArrayRecord value;
     private final CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
     private final ByteBuffer bytes = 
ByteBuffer.allocateDirect(ExternalDataConstants.DEFAULT_BUFFER_SIZE);
     private final CharBuffer chars = 
CharBuffer.allocate(ExternalDataConstants.DEFAULT_BUFFER_SIZE);
-    private static final IAType[] CB_META_TYPES = new IAType[] { 
/*ID*/BuiltinType.ASTRING,
-            /*VBID*/BuiltinType.AINT32, /*SEQ*/BuiltinType.AINT64, 
/*CAS*/BuiltinType.AINT64,
-            /*EXPIRATION*/BuiltinType.AINT32,
+    private static final IAType[] CB_META_TYPES = new IAType[] { 
/*ID*/BuiltinType.ASTRING, /*VBID*/BuiltinType.AINT32,
+            /*SEQ*/BuiltinType.AINT64, /*CAS*/BuiltinType.AINT64, 
/*EXPIRATION*/BuiltinType.AINT32,
             /*FLAGS*/BuiltinType.AINT32, /*REV*/BuiltinType.AINT64, 
/*LOCK*/BuiltinType.AINT32 };
     private static final int[] PK_INDICATOR = { 1 };
     private static final int[] PK_INDEXES = { 0 };
@@ -105,16 +103,19 @@
         int position = content.readerIndex();
         final int limit = content.writerIndex();
         final int contentSize = content.readableBytes();
+        bytes.clear();
+        System.err.println("Using netty decoder: " + 
content.toString(StandardCharsets.UTF_8));
         while (position < limit) {
-            bytes.clear();
             chars.clear();
-            if ((contentSize - position) < bytes.capacity()) {
+            if ((contentSize - position) < bytes.remaining()) {
                 bytes.limit(contentSize - position);
             }
-            content.getBytes(position, bytes);
+            content.getBytes(position + bytes.position(), bytes);
             position += bytes.position();
             bytes.flip();
             decoder.decode(bytes, chars, false);
+            bytes.compact();
+            position -= bytes.position();
             chars.flip();
             record.append(chars);
         }

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/951
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I71c3d8b8dfa5a98123725f139247d2b5ce10012e
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>

Reply via email to