You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "rajeshbabu (JIRA)" <ji...@apache.org> on 2013/09/04 10:30:53 UTC

[jira] [Updated] (HBASE-9249) Add cp hook before setting PONR in split

     [ https://issues.apache.org/jira/browse/HBASE-9249?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

rajeshbabu updated HBASE-9249:
------------------------------

    Attachment: HBASE-9249_v5.patch

bq. Both actual and index region got split. We would like to write to Meta both the data (daughter region entries) as one Put. For that there should be some provision provided in this beforePONR or after PONR CP hook so that that can change what is getting written to META tabl?. Do how we handle in case of batch put. We pass the WALEdit also to the hook. Hook can change it and finally core writes the resultant edit.. Same way can follow here also?

Its good idea Anoop,better to collect puts(if any is needed) from preSplitBeforePONR hook and insert along while offlining user region atomically. With this approach there wont be any kernel changes later. Handled same in current patch and also throwing IOE on bypass in preSplitBeforePONR hook so we can rollback the transaction.

Added test case to verify hooks and puts from coprocessors.

Please review. Thanks.

                
> Add cp hook before setting PONR in split
> ----------------------------------------
>
>                 Key: HBASE-9249
>                 URL: https://issues.apache.org/jira/browse/HBASE-9249
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: rajeshbabu
>            Assignee: rajeshbabu
>         Attachments: HBASE-9249.patch, HBASE-9249_v2.patch, HBASE-9249_v3.patch, HBASE-9249_v4.patch, HBASE-9249_v5.patch
>
>
> This hook helps to perform split on user region and corresponding index region such that both will be split or none.
> With this hook split for user and index region as follows
> user region
> ===========
> 1) Create splitting znode for user region split
> 2) Close parent user region
> 3) split user region storefiles
> 4) instantiate child regions of user region
> Through the new hook we can call index region transitions as below
> index region
> ===========
> 5) Create splitting znode for index region split
> 6) Close parent index region
> 7) Split storefiles of index region
> 8) instantiate child regions of the index region
> If any failures in 5,6,7,8 rollback the steps and return null, on null return throw exception to rollback for 1,2,3,4
> 9) set PONR
> 10) do batch put of offline and split entries for user and index regions
> index region
> ============
> 11) open daughers of index regions and transition znode to split. This step we will do through preSplitAfterPONR hook. Opening index regions before opening user regions helps to avoid put failures if there is colocation mismatch(this can happen if user regions opening completed but index regions opening in progress)
> user region
> ===========
> 12) open daughers of user regions and transition znode to split.
> Even if region server crashes also at the end both user and index regions will be split or none

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira