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]>