[
https://issues.apache.org/jira/browse/HBASE-26713?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17484167#comment-17484167
]
Hudson commented on HBASE-26713:
--------------------------------
Results for branch master
[build #506 on
builds.a.o|https://ci-hadoop.apache.org/job/HBase/job/HBase%20Nightly/job/master/506/]:
(x) *{color:red}-1 overall{color}*
----
details (if available):
(/) {color:green}+1 general checks{color}
-- For more information [see general
report|https://ci-hadoop.apache.org/job/HBase/job/HBase%20Nightly/job/master/506/General_20Nightly_20Build_20Report/]
(/) {color:green}+1 jdk8 hadoop3 checks{color}
-- For more information [see jdk8 (hadoop3)
report|https://ci-hadoop.apache.org/job/HBase/job/HBase%20Nightly/job/master/506/JDK8_20Nightly_20Build_20Report_20_28Hadoop3_29/]
(/) {color:green}+1 jdk11 hadoop3 checks{color}
-- For more information [see jdk11
report|https://ci-hadoop.apache.org/job/HBase/job/HBase%20Nightly/job/master/506/JDK11_20Nightly_20Build_20Report_20_28Hadoop3_29/]
(x) {color:red}-1 source release artifact{color}
-- See build output for details.
(x) {color:red}-1 client integration test{color}
-- Something went wrong with this stage, [check relevant console
output|https://ci-hadoop.apache.org/job/HBase/job/HBase%20Nightly/job/master/506//console].
> Increments submitted by 1.x clients will be stored with timestamp 0 on 2.x+
> clusters
> ------------------------------------------------------------------------------------
>
> Key: HBASE-26713
> URL: https://issues.apache.org/jira/browse/HBASE-26713
> Project: HBase
> Issue Type: Bug
> Reporter: Bryan Beaudreault
> Assignee: Bryan Beaudreault
> Priority: Major
> Fix For: 2.5.0, 2.6.0, 3.0.0-alpha-3, 2.4.10
>
>
> We discovered this in our work on upgrading from ~1.2.0 to 2.4.6. A 1.2.0
> client will submit an Increment, without specifying a timestamp. This should
> be translated as LATEST_TIMESTAMP, but an hbase 2 server will store it with a
> timestamp of 0.
> This is because the QualifierValue timestamp proto field is optional, and is
> not set in branch-1 MutationProtos:
> [https://github.com/apache/hbase/blob/branch-1/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java#L218-L219.]
> In branch-1, the timestamp is actually ignored entirely:
> [https://github.com/apache/hbase/blob/branch-1/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java#L8435-L8456.]
> So this is not an issue there.
> As of HBASE-18546, the timestamp is no longer ignored, but the usage of
> QualiferValue.getTimestamp() in deserialization is not wrapped in a
> .hasTimestamp() call:
> [https://github.com/apache/hbase/blob/7d8dc3524981a04e82ff236bb3dc18d36ebc82b4/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java#L886-L909].
> The default value for non-present optionals is defined by the underlying
> primitive, so for longs that is 0. Since the Increment's timestamp is now
> respected by HRegion, it causes the erroneous 0 value to be stored:
> [https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java#L4180]
> (updateLatestStamp only overwrites the cell timestamp if it's
> LATEST_TIMESTAMP, which in this case it has been deserialized as 0)
> I think this might only apply to clients who do not use a KeyValueCodec.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)