HRegionServer stops could be 0,5s faster
----------------------------------------

                 Key: HBASE-4833
                 URL: https://issues.apache.org/jira/browse/HBASE-4833
             Project: HBase
          Issue Type: Improvement
          Components: regionserver, test
    Affects Versions: 0.94.0
         Environment: all
            Reporter: nkeywal
            Assignee: nkeywal
            Priority: Minor


The current implementation of HRegionServer#stop is

{noformat}
  public void stop(final String msg) {
    this.stopped = true;
    LOG.info("STOPPED: " + msg);
    synchronized (this) {
      // Wakes run() if it is sleeping
      notifyAll(); // FindBugs NN_NAKED_NOTIFY
    }
  }
{noformat}

The notification is sent on the wrong object and does nothing. As a 
consequence, the region server continues to sleep instead of waking up and 
stopping immediately. A correct implementation is:

{noformat}
  public void stop(final String msg) {
    this.stopped = true;
    LOG.info("STOPPED: " + msg);
    // Wakes run() if it is sleeping
    sleeper.skipSleepCycle();
  }
{noformat}

Then the region server stops immediately. This makes the region server stops 
0,5s faster on average, which is quite useful for unit tests.

However, with this fix, TestRegionServerCoprocessorExceptionWithAbort does not 
work.
It likely because the code does no expect the region server to stop that fast. 
See HBASE-4832



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to