[ 
https://issues.apache.org/jira/browse/HBASE-19893?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16385671#comment-16385671
 ] 

ramkrishna.s.vasudevan commented on HBASE-19893:
------------------------------------------------

Few questions first
{code}
              // We also need to remove region replicas from in-memory states
441           List<RegionInfo> regionReplicas = 
env.getAssignmentManager().getRegionStates()
442               .getRegionsOfTable(getTableName()).stream()
443               .filter(r -> 
!RegionReplicaUtil.isDefaultReplica(r)).collect(Collectors.toList());
444           deleteRegionsFromInMemoryStates(regionReplicas, env);
{code}
This fix I can understand. 
but
bq.addRegionsToInMemoryStates(regionsToAdd, env); and this
{code}
deleteRegionsFromInMemoryStates(regionsToRestore, env);
468             addRegionsToInMemoryStates(regionsToRestore, env);
{code}
Why is that you need to add to the AM's in memory state from 
RestoreSnapshotProcedure? Once the snapshot is restored will the AM 
automatically read the META and do the assignments?  May be am missing 
something here.


> restore_snapshot is broken in master branch when region splits
> --------------------------------------------------------------
>
>                 Key: HBASE-19893
>                 URL: https://issues.apache.org/jira/browse/HBASE-19893
>             Project: HBase
>          Issue Type: Bug
>          Components: snapshots
>            Reporter: Toshihiro Suzuki
>            Assignee: Toshihiro Suzuki
>            Priority: Critical
>         Attachments: HBASE-19893.master.001.patch, 
> HBASE-19893.master.002.patch
>
>
> When I was investigating HBASE-19850, I found restore_snapshot didn't work in 
> master branch.
>  
> Steps to reproduce are as follows:
> 1. Create a table
> {code:java}
> create "test", "cf"
> {code}
> 2. Load data (2000 rows) to the table
> {code:java}
> (0...2000).each{|i| put "test", "row#{i}", "cf:col", "val"}
> {code}
> 3. Split the table
> {code:java}
> split "test"
> {code}
> 4. Take a snapshot
> {code:java}
> snapshot "test", "snap"
> {code}
> 5. Load more data (2000 rows) to the table and split the table agin
> {code:java}
> (2000...4000).each{|i| put "test", "row#{i}", "cf:col", "val"}
> split "test"
> {code}
> 6. Restore the table from the snapshot 
> {code:java}
> disable "test"
> restore_snapshot "snap"
> enable "test"
> {code}
> 7. Scan the table
> {code:java}
> scan "test"
> {code}
> However, this scan returns only 244 rows (it should return 2000 rows) like 
> the following:
> {code:java}
> hbase(main):038:0> scan "test"
> ROW COLUMN+CELL
>  row78 column=cf:col, timestamp=1517298307049, value=val
> ....
>   row999 column=cf:col, timestamp=1517298307608, value=val
> 244 row(s)
> Took 0.1500 seconds
> {code}
>  
> Also, the restored table should have 2 online regions but it has 3 online 
> regions.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to