rajeshbabu created HBASE-12583:
----------------------------------
Summary: Allow creating reference files even the split row not
lies in the storefile range if required
Key: HBASE-12583
URL: https://issues.apache.org/jira/browse/HBASE-12583
Project: HBase
Issue Type: Improvement
Reporter: rajeshbabu
Assignee: rajeshbabu
Fix For: 2.0.0, 0.98.9, 0.99.2
Currently in HRegionFileSystem#splitStoreFile we are not creating reference
files if the split row not lies in the storefile range that means one of the
child region doesn't have any data.
{code}
// Check whether the split row lies in the range of the store file
// If it is outside the range, return directly.
if (top) {
//check if larger than last key.
KeyValue splitKey = KeyValueUtil.createFirstOnRow(splitRow);
byte[] lastKey = f.createReader().getLastKey();
// If lastKey is null means storefile is empty.
if (lastKey == null) return null;
if (f.getReader().getComparator().compareFlatKey(splitKey.getBuffer(),
splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0,
lastKey.length) > 0) {
return null;
}
} else {
//check if smaller than first key
KeyValue splitKey = KeyValueUtil.createLastOnRow(splitRow);
byte[] firstKey = f.createReader().getFirstKey();
// If firstKey is null means storefile is empty.
if (firstKey == null) return null;
if (f.getReader().getComparator().compareFlatKey(splitKey.getBuffer(),
splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0,
firstKey.length) < 0) {
return null;
}
}
{code}
In some cases when split row should be compared with part of rowkey(in
composite rowkey) mainly for secondary index tables we need to create reference
files even when split row not lies in the storefile range so that they can be
rewritten to it's child regions by some custom half store file reader which
compare the part of row key with split row.
The check of comparing split row with storefile range and returning directly
can be avoided by having special boolean attribute in table descriptor when it
set to true. Or else we can have coprocessor hooks so that in the hooks we can
create the references and bypass.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)