[
https://issues.apache.org/jira/browse/HBASE-11894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14121139#comment-14121139
]
rajeshbabu commented on HBASE-11894:
------------------------------------
ping [~jxiang], what do you say?
> 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
> 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)