[ 
https://issues.apache.org/jira/browse/HBASE-2447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12860437#action_12860437
 ] 

Todd Lipcon commented on HBASE-2447:
------------------------------------

bq. happens if the thread is instead set closing the moment after the check is 
done

This can't happen, since the boolean is modified inside the lock, and it 
acquires the lock before checking the boolean.

bq.  It's a shame that we can't timeout that method.

We could spin and call await() with a timeout, but it just seems like more of a 
pain.

bq. would it be possible to use HLog.closed

I don't think so, because we need to set this from within the finally clause of 
the log syncer thread itself - we can't call close() from within logsyncer, 
because it would wait for itself.

> LogSyncer.addToSyncQueue doesn't check if syncer is still running before 
> waiting
> --------------------------------------------------------------------------------
>
>                 Key: HBASE-2447
>                 URL: https://issues.apache.org/jira/browse/HBASE-2447
>             Project: Hadoop HBase
>          Issue Type: Bug
>          Components: regionserver
>            Reporter: Todd Lipcon
>            Assignee: Todd Lipcon
>            Priority: Critical
>         Attachments: hbase-2447.txt
>
>
> In testing GC pause scenarios with kill -STOP, I got the regionserver into a 
> situation where it was blocked forever while shutting down (also blocking 
> clients, since the RPCs were still pinging). The root issue is that, if the 
> log syncer has an error just as more edits are being done, addToSyncQueue() 
> can go to sleep waiting on a syncer which has just died.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to