[
https://issues.apache.org/jira/browse/HBASE-3229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12931501#action_12931501
]
Kannan Muthukkaruppan commented on HBASE-3229:
----------------------------------------------
Two additional observations:
1) The HBaseAdmin.java:createTableAsync() (this is from 0.89), the function
doesn't actually seem be doing anything async. The master.createTable() appears
to be a blocking call.
{code}
public void createTableAsync(HTableDescriptor desc, byte [][] splitKeys)
throws IOException {
if (this.master == null) {
throw new MasterNotRunningException("master has been shut down");
}
HTableDescriptor.isLegalTableName(desc.getName());
try {
this.master.createTable(desc, splitKeys);
} catch (RemoteException e) {
throw RemoteExceptionHandler.decodeRemoteException(e);
}
}
{code}
2) When creating a table with pre-splits, HBaseAdmin.java:createTable() waits
only for the first region/split to be online.
{code}
public void createTable(HTableDescriptor desc, byte [][] splitKeys)
throws IOException {
...
createTableAsync(desc, splitKeys);
for (int tries = 0; tries < numRetries; tries++) {
try {
// Wait for new table to come on-line
connection.locateRegion(desc.getName(), HConstants.EMPTY_START_ROW);
...
{code}
> Table creation, though using "async" call to master, can actually run for a
> while and cause RPC timeout
> -------------------------------------------------------------------------------------------------------
>
> Key: HBASE-3229
> URL: https://issues.apache.org/jira/browse/HBASE-3229
> Project: HBase
> Issue Type: Bug
> Components: client, master
> Affects Versions: 0.90.0
> Reporter: Jonathan Gray
> Priority: Critical
> Fix For: 0.92.0
>
>
> Our create table methods in HBaseAdmin are synchronous from client POV.
> However, underneath, we're using an "async" create and then looping waiting
> for table availability. Because the create is async and we loop instead of
> block on RPC, we don't expect RPC timeouts.
> However, when creating a table with lots of initial regions, the "async"
> create can actually take a long time (more than 30 seconds in this case)
> which causes the client to timeout and gives impression something failed.
> We should make the create truly async so that this can't happen. And rather
> than doing one-off, inline assignment as it is today, we should reuse the
> fancy enable/disable code stack just added to make this faster and more
> optimal.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.