hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Todd Lipcon (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-2447) LogSyncer.addToSyncQueue doesn't check if syncer is still running before waiting
Date Sat, 24 Apr 2010 00:52:50 GMT

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

Todd Lipcon commented on HBASE-2447:

bq. hasWaiters(queueEmpty) before queueEmpty.signal

That seems really dirty to me... what's the problem you see with the flag? It's an extremely
common practice to set a condition before signalling and check the condition before waiting.

(your proposed solution also doesn't work if we call addToSyncQueue before the syncer thread
has started, probably not possible in current code, but still worth avoiding the problem)

> 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.

View raw message