[
https://issues.apache.org/jira/browse/HBASE-13327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14380165#comment-14380165
]
Solomon Duskis commented on HBASE-13327:
----------------------------------------
So I have a question to the group at large. I essentially copied the default
behavior from HBaseAdmin compact/majorCompact(byte[]) which is not replicated
in the complementary methods that take TableName as a parameter.
Those methods in HBaseAdmin rely on IllegalArgumentException to differentiate
between tableName and region.
{code}
@Deprecated
public void majorCompact(final byte[] tableNameOrRegionName, final byte[]
columnFamily)
throws IOException {
try {
compactRegion(tableNameOrRegionName, columnFamily, true);
} catch (IllegalArgumentException e) {
// Invalid region, try table
compact(TableName.valueOf(tableNameOrRegionName), columnFamily, true);
}
}
{code}
That's a bit unpleasant in HBaseAdmin and quite a bit worse from the
perspective of the thrift server, since it relies on internal details. I need
a nested try in order to
1) inner try - capture the HBaseAdmin logic to differentiate between region and
table and
2) outer try - uniformly handle IOExceptions from either compactRegion or
compact table
[~tedyu] suggested the following logic:
{code}
try {
if (TableName.isLegalTableQualifierName(tableNameOrRegionNameArray) {
getAdmin().compact(TableName.valueOf(tableNameOrRegionNameArray));
} else {
getAdmin().compactRegion(tableNameOrRegionNameArray);
}
} catch (IOException e) {
LOG.warn(e.getMessage(), e);
throw new IOError(e.getMessage());
}
{code}
If that makes sense, I'll supply an addendum with that logic.
> Use Admin in ConnectionCache
> ----------------------------
>
> Key: HBASE-13327
> URL: https://issues.apache.org/jira/browse/HBASE-13327
> Project: HBase
> Issue Type: Sub-task
> Affects Versions: 2.0.0, 1.0.1, 1.1.0
> Reporter: Solomon Duskis
> Assignee: Solomon Duskis
> Fix For: 2.0.0, 1.0.1, 1.1.0
>
> Attachments: HBASE-13327.patch
>
>
> Replace HBaseAdmin usage with Admin in ConnectionCache and users of
> ConnectionCache.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)