You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2018/07/30 17:50:00 UTC

[jira] [Created] (HBASE-20981) Rollback stateCount accounting thrown-off when exception out of rollbackState

stack created HBASE-20981:
-----------------------------

             Summary: Rollback stateCount accounting thrown-off when exception out of rollbackState
                 Key: HBASE-20981
                 URL: https://issues.apache.org/jira/browse/HBASE-20981
             Project: HBase
          Issue Type: Bug
          Components: amv2
    Affects Versions: 2.0.1
            Reporter: stack
             Fix For: 2.0.2


Found by might [~allan163] over in HBASE-20893. Quoting Allan:

{code}
But, there is truly a bug here,

  @Override
  protected void rollback(final TEnvironment env)
      throws IOException, InterruptedException {
    if (isEofState()) stateCount--;
    try {
      updateTimestamp();
      rollbackState(env, getCurrentState());
      stateCount--;
    } finally {
      updateTimestamp();
    }
  }
We need to decrease the stateCount when rolling back, so we can rollback for the previous state correctly. But. since a exception is thrown, the decrease for stateCount never happen. So ProcedureExecutor will continue to rollback for only one state(the one throw a exception) until the end of the execution stack.
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)