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

rajeshbabu reassigned HBASE-11894:
----------------------------------

    Assignee: rajeshbabu

> MetaEntries from coprocessor hooks in split and merge are not getting added 
> to hbase:meta after HBASE-11611
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-11894
>                 URL: https://issues.apache.org/jira/browse/HBASE-11894
>             Project: HBase
>          Issue Type: Bug
>          Components: Region Assignment
>            Reporter: rajeshbabu
>            Assignee: rajeshbabu
>             Fix For: 2.0.0
>
>
> As part of HBASE-9249 & HBASE-9489, added new hooks in split and merge which 
> take meta entries from coprocessor hooks if any. These meta entries helps to 
> ensure atomicity of split(merge) of regions by server and split(merge) of the 
> regions handled in coprocessors(This is required in secondary indexing case).
> After HBASE-11611 the meta entries are not getting added to meta both in 
> split and merge.
> {code}
>     @MetaMutationAnnotation
>     List<Mutation> metaEntries = new ArrayList<Mutation>();
>     if (rsCoprocessorHost != null) {
>       if (rsCoprocessorHost.preMergeCommit(this.region_a, this.region_b, 
> metaEntries)) {
>         throw new IOException("Coprocessor bypassing regions " + 
> this.region_a + " "
>             + this.region_b + " merge.");
>       }
>       try {
>         for (Mutation p : metaEntries) {
>           HRegionInfo.parseRegionName(p.getRow());
>         }
>       } catch (IOException e) {
>         LOG.error("Row key of mutation from coprocessor is not parsable as 
> region name."
>             + "Mutations from coprocessor should only be for hbase:meta 
> table.", e);
>         throw e;
>       }
>     }
>     // This is the point of no return. Similar with SplitTransaction.
>     // IF we reach the PONR then subsequent failures need to crash out this
>     // regionserver
>     this.journal.add(JournalEntry.PONR);
>     // Add merged region and delete region_a and region_b
>     // as an atomic update. See HBASE-7721. This update to hbase:meta makes 
> the region
>     // will determine whether the region is merged or not in case of failures.
>     // If it is successful, master will roll-forward, if not, master will
>     // rollback
>     if (services != null && 
> !services.reportRegionStateTransition(TransitionCode.MERGE_PONR,
>         mergedRegionInfo, region_a.getRegionInfo(), 
> region_b.getRegionInfo())) {
>       // Passed PONR, let SSH clean it up
>       throw new IOException("Failed to notify master that merge passed PONR: "
>         + region_a.getRegionInfo().getRegionNameAsString() + " and "
>         + region_b.getRegionInfo().getRegionNameAsString());
>     }
> {code}
> I think while reporting region state transition to master we need to pass 
> meta entries also so that we can add them to meta along with split or merge 
> updates.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to