rajeshbabu created HBASE-11894:
----------------------------------
Summary: 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)