[ 
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)

Reply via email to