You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by je...@apache.org on 2014/02/11 03:27:17 UTC
svn commit: r1566962 - in /hbase/branches/0.96:
hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java
hbase-server/src/test/java/org/apache/hadoop/hbase/protobuf/TestProtobufUtil.java
Author: jeffreyz
Date: Tue Feb 11 02:27:17 2014
New Revision: 1566962
URL: http://svn.apache.org/r1566962
Log:
HBASE-10486: ProtobufUtil Append & Increment deserialization lost cell level timestamp
Modified:
hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java
hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/protobuf/TestProtobufUtil.java
Modified: hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java?rev=1566962&r1=1566961&r2=1566962&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java (original)
+++ hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java Tue Feb 11 02:27:17 2014
@@ -661,7 +661,8 @@ public final class ProtobufUtil {
"Missing required field: qualifer value");
}
byte[] value = qv.getValue().toByteArray();
- append.add(family, qualifier, value);
+ append.add(CellUtil.createCell(row, family, qualifier, qv.getTimestamp(),
+ KeyValue.Type.Put.getCode(), value));
}
}
}
@@ -733,8 +734,8 @@ public final class ProtobufUtil {
if (!qv.hasValue()) {
throw new DoNotRetryIOException("Missing required field: qualifer value");
}
- long value = Bytes.toLong(qv.getValue().toByteArray());
- increment.addColumn(family, qualifier, value);
+ increment.add(CellUtil.createCell(row, family, qualifier, qv.getTimestamp(),
+ KeyValue.Type.Put.getCode(), qv.getValue().toByteArray()));
}
}
}
Modified: hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/protobuf/TestProtobufUtil.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/protobuf/TestProtobufUtil.java?rev=1566962&r1=1566961&r2=1566962&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/protobuf/TestProtobufUtil.java (original)
+++ hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/protobuf/TestProtobufUtil.java Tue Feb 11 02:27:17 2014
@@ -104,19 +104,22 @@ public class TestProtobufUtil {
*/
@Test
public void testAppend() throws IOException {
+ long timeStamp = 111111;
MutationProto.Builder mutateBuilder = MutationProto.newBuilder();
mutateBuilder.setRow(ByteString.copyFromUtf8("row"));
mutateBuilder.setMutateType(MutationType.APPEND);
- mutateBuilder.setTimestamp(111111);
+ mutateBuilder.setTimestamp(timeStamp);
ColumnValue.Builder valueBuilder = ColumnValue.newBuilder();
valueBuilder.setFamily(ByteString.copyFromUtf8("f1"));
QualifierValue.Builder qualifierBuilder = QualifierValue.newBuilder();
qualifierBuilder.setQualifier(ByteString.copyFromUtf8("c1"));
qualifierBuilder.setValue(ByteString.copyFromUtf8("v1"));
+ qualifierBuilder.setTimestamp(timeStamp);
valueBuilder.addQualifierValue(qualifierBuilder.build());
qualifierBuilder.setQualifier(ByteString.copyFromUtf8("c2"));
qualifierBuilder.setValue(ByteString.copyFromUtf8("v2"));
valueBuilder.addQualifierValue(qualifierBuilder.build());
+ qualifierBuilder.setTimestamp(timeStamp);
mutateBuilder.addColumnValue(valueBuilder.build());
MutationProto proto = mutateBuilder.build();
@@ -130,15 +133,8 @@ public class TestProtobufUtil {
Append append = ProtobufUtil.toAppend(proto, null);
// append always use the latest timestamp,
- // add the timestamp to the original mutate
- long timestamp = append.getTimeStamp();
- mutateBuilder.setTimestamp(timestamp);
- for (ColumnValue.Builder column: mutateBuilder.getColumnValueBuilderList()) {
- for (QualifierValue.Builder qualifier:
- column.getQualifierValueBuilderList()) {
- qualifier.setTimestamp(timestamp);
- }
- }
+ // reset the timestamp to the original mutate
+ mutateBuilder.setTimestamp(append.getTimeStamp());
assertEquals(mutateBuilder.build(), ProtobufUtil.toMutation(MutationType.APPEND, append));
}