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