[
https://issues.apache.org/jira/browse/HBASE-29021?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jaehui Lee updated HBASE-29021:
-------------------------------
Description:
h1. Symptoms
After upgrading from HBase 2.5.10 to HBase 2.6.1, I observed an inconsistent
read across versions.
Before the upgrade, I created a table with one row. Invoking a count command
returns 1. After upgrading to 2.6.1, execute the same count command, it returns
0.
{code:java}
count 'test'
Old Version Result:
1 row(s)
Took 0.5582 seconds
=> 1
New Version Result:
0 row(s)
Took 1.4439 seconds
=> 0 {code}
h1. Reproduce
It can be reproduced deterministically with the following steps
Step1: Start up the HBase cluster in 2.5.10 and execute the following commands
{code:java}
create 'test', 'cf', CONFIGURATION => {'hbase.store.file-tracker.impl' =>
'FILE'}
put 'test', 'row', 'cf:q', 'value'{code}
Step2: Execute the count command in the old version
{code:java}
count 'test'
1 row(s)
Took 0.5582 seconds
=> 1 {code}
Step3: Stop the entire cluster, upgrade to 2.6.1 and execute the same count
command
{code:java}
count 'test'
0 row(s)
Took 0.0842 seconds
=> 0{code}
h1. Analysis
The names of {{StoreFileListFile}} differ between the two versions:
* In 2.5.10: {{f1}} or {{f2}}
* In 2.6.1: {{{}f1.{timestamp{}}}} or {{{}f2.{timestamp{}}}}
The addition of a timestamp to the file name was introduced in HBASE-26791.
It can be resolved by handling missing timestamps by setting them to 0.
However, in the case of downgrading versions, the above approach does not work.
A workaround is available:
* Change the storefile tracker implementation from {{FILE}} > {{MIGRATION >
DEFAULT}} before downgrading.
was:
h1. Symptoms
After upgrading from HBase 2.5.10 to HBase 2.6.1, I observed an inconsistent
read across versions.
Before the upgrade, I created a table with one row. Invoking a count command
returns 1. After upgrading to 2.6.1, execute the same count command, it returns
0.
{code:java}
count 'test'
Old Version Result:
1 row(s)
Took 0.5582 seconds
=> 1
New Version Result:
0 row(s)
Took 1.4439 seconds
=> 0 {code}
h1. Reproduce
It can be reproduced deterministically with the following steps
Step1: Start up the HBase cluster in 2.5.10 and execute the following commands
{code:java}
create 'test', 'cf', CONFIGURATION => {'hbase.store.file-tracker.impl' =>
'FILE'}
put 'test', 'row', 'cf:q', 'value'{code}
Step2: Execute the count command in the old version
{code:java}
count 'test'
1 row(s)
Took 0.5582 seconds
=> 1 {code}
Step3: Stop the entire cluster, upgrade to 2.6.1 and execute the same count
command
{code:java}
count 'test'
0 row(s)
Took 0.0842 seconds
=> 0{code}
h1. Analysis
The names of {{StoreFileListFile}} differ between the two versions:
* In 2.5.10: {{f1}} or {{f2}}
* In 2.6.1: {{{}f1.{timestamp{}}}} or {{{}f2.{timestamp{}}}}
The addition of a timestamp to the file name was introduced in HBASE-26791.
When upgrading HBase versions, this issue can be resolved by handling missing
timestamps by setting them to 0.
However, in the case of downgrading versions, the above approach does not work.
A workaround is available:
* Change the storefile tracker implementation from {{FILE}} -> {{MIGRATION}}
-> {{DEFAULT}} before downgrading.
if the HBase version is changed without modifying the storefile tracker
implementation, files may not be recognized.
In such cases, the same workaround can be applied.
> When StoreFileTracker is FILE, unable to recognize StoreFileListFile after
> upgrade from 2.5 to 2.6
> --------------------------------------------------------------------------------------------------
>
> Key: HBASE-29021
> URL: https://issues.apache.org/jira/browse/HBASE-29021
> Project: HBase
> Issue Type: Bug
> Components: HFile, regionserver
> Affects Versions: 2.6.1, 2.5.10
> Reporter: Ke Han
> Assignee: Jaehui Lee
> Priority: Critical
> Labels: pull-request-available
>
> h1. Symptoms
> After upgrading from HBase 2.5.10 to HBase 2.6.1, I observed an inconsistent
> read across versions.
> Before the upgrade, I created a table with one row. Invoking a count command
> returns 1. After upgrading to 2.6.1, execute the same count command, it
> returns 0.
> {code:java}
> count 'test'
> Old Version Result:
> 1 row(s)
> Took 0.5582 seconds
> => 1
> New Version Result:
> 0 row(s)
> Took 1.4439 seconds
> => 0 {code}
> h1. Reproduce
> It can be reproduced deterministically with the following steps
> Step1: Start up the HBase cluster in 2.5.10 and execute the following commands
> {code:java}
> create 'test', 'cf', CONFIGURATION => {'hbase.store.file-tracker.impl' =>
> 'FILE'}
> put 'test', 'row', 'cf:q', 'value'{code}
> Step2: Execute the count command in the old version
> {code:java}
> count 'test'
> 1 row(s)
> Took 0.5582 seconds
> => 1 {code}
> Step3: Stop the entire cluster, upgrade to 2.6.1 and execute the same count
> command
> {code:java}
> count 'test'
> 0 row(s)
> Took 0.0842 seconds
> => 0{code}
> h1. Analysis
> The names of {{StoreFileListFile}} differ between the two versions:
> * In 2.5.10: {{f1}} or {{f2}}
> * In 2.6.1: {{{}f1.{timestamp{}}}} or {{{}f2.{timestamp{}}}}
> The addition of a timestamp to the file name was introduced in HBASE-26791.
> It can be resolved by handling missing timestamps by setting them to 0.
> However, in the case of downgrading versions, the above approach does not
> work. A workaround is available:
> * Change the storefile tracker implementation from {{FILE}} > {{MIGRATION >
> DEFAULT}} before downgrading.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)