[
https://issues.apache.org/jira/browse/HBASE-6469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13584743#comment-13584743
]
Ted Yu commented on HBASE-6469:
-------------------------------
Overall, looks quite good.
{code}
+ public class TableStateUpdater extends Chore {
{code}
This class is internal to AssignmentManager and can be declared private.
{code}
+ protected void chore() {
+ if (!tablesInPartialState.isEmpty()) {
{code}
If you write the condition differently, you should be able to save some
indentation.
{code}
+ } catch (KeeperException e) {
+ LOG.error("Error trying to enable the table " +
tableEntry.getKey(), e);
+ }
{code}
With the current position of the catch block, you need some flag so that
'enable' and 'disable' can be selected in the log.
{code}
+ if (tableEntry.getValue() == regionStates.getRegionsOfTable(
+ Bytes.toBytes(tableEntry.getKey())).size()) {
{code}
Is it possible that region count gets bigger than tableEntry.getValue() ? If
not, add PreCondition ?
{code}
+ Map<String, Integer> tablesInPartialState = new TreeMap<String, Integer>();
{code}
nit: if you use byte[] as key (with proper comparator), you can save the
Bytes.toBytes() call.
> Failure on enable/disable table will cause table state in zk to be left as
> enabling/disabling until master is restarted
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-6469
> URL: https://issues.apache.org/jira/browse/HBASE-6469
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.94.2, 0.96.0
> Reporter: Enis Soztutar
> Assignee: rajeshbabu
> Fix For: 0.96.0, 0.94.6
>
> Attachments: 6469-expose-force-r3.patch, HBASE-6469.patch
>
>
> In Enable/DisableTableHandler code, if something goes wrong in handling, the
> table state in zk is left as ENABLING / DISABLING. After that we cannot force
> any more action from the API or CLI, and the only recovery path is restarting
> the master.
> {code}
> if (done) {
> // Flip the table to enabled.
> this.assignmentManager.getZKTable().setEnabledTable(
> this.tableNameStr);
> LOG.info("Table '" + this.tableNameStr
> + "' was successfully enabled. Status: done=" + done);
> } else {
> LOG.warn("Table '" + this.tableNameStr
> + "' wasn't successfully enabled. Status: done=" + done);
> }
> {code}
> Here, if done is false, the table state is not changed. There is also no way
> to set skipTableStateCheck from cli / api.
> We have run into this issue a couple of times before.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira