You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Andrew Kyle Purtell (Jira)" <ji...@apache.org> on 2022/06/12 19:53:00 UTC
[jira] [Closed] (HBASE-4833) HRegionServer stops could be 0.5s faster
[ https://issues.apache.org/jira/browse/HBASE-4833?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Kyle Purtell closed HBASE-4833.
--------------------------------------
> 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: Nicolas Liochon
> Assignee: Nicolas Liochon
> Priority: Minor
> Attachments: 4833_trunk_hregionserver.patch, 4833_trunk_hregionserver.v2.patch
>
>
> 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 was sent by Atlassian Jira
(v8.20.7#820007)