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

Phabricator commented on HBASE-2312:
------------------------------------

nspiegelberg has commented on the revision "HBASE-2312 [jira] Possible data 
loss when RS goes into GC pause while rolling HLog".

INLINE COMMENTS
  src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java:232 231 
basically resets the interrupt flag so the next blocking call will get an 
InterruptException.  The other acceptable way to handle this scenario is to 
throw an InterruptedIOException, but we don't need the split to finish, so an 
IOE really isn't necessary.
  src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java:254 this 
needs an IOE.  patch porting problem
  src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogSplit.java:831 
from JUnit documentation

    @Ignore takes an optional default parameter if you want to record why a 
test is being ignored

REVISION DETAIL
  https://reviews.facebook.net/D99

                
> Possible data loss when RS goes into GC pause while rolling HLog
> ----------------------------------------------------------------
>
>                 Key: HBASE-2312
>                 URL: https://issues.apache.org/jira/browse/HBASE-2312
>             Project: HBase
>          Issue Type: Bug
>          Components: master, regionserver
>    Affects Versions: 0.90.0
>            Reporter: Karthik Ranganathan
>            Assignee: Nicolas Spiegelberg
>            Priority: Critical
>             Fix For: 0.92.0
>
>         Attachments: D99.1.patch
>
>
> There is a very corner case when bad things could happen(ie data loss):
> 1)    RS #1 is going to roll its HLog - not yet created the new one, old one 
> will get no more writes
> 2)    RS #1 enters GC Pause of Death
> 3)    Master lists HLog files of RS#1 that is has to split as RS#1 is dead, 
> starts splitting
> 4)    RS #1 wakes up, created the new HLog (previous one was rolled) and 
> appends an edit - which is lost
> The following seems like a possible solution:
> 1)    Master detects RS#1 is dead
> 2)    The master renames the /hbase/.logs/<regionserver name>  directory to 
> something else (say /hbase/.logs/<regionserver name>-dead)
> 3)    Add mkdir support (as opposed to mkdirs) to HDFS - so that a file 
> create fails if the directory doesn't exist. Dhruba tells me this is very 
> doable.
> 4)    RS#1 comes back up and is not able create the new hlog. It restarts 
> itself.

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