[ 
https://issues.apache.org/jira/browse/HDFS-988?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835403#action_12835403
 ] 

dhruba borthakur commented on HDFS-988:
---------------------------------------

My proposal is to make the enterSafeMode method wait for all pending 
transactions to get flushed.

{code}
  synchronized void FSNamesystem.enterSafeMode() throws IOException {
    if (!isInSafeMode()) {
      safeMode = new SafeModeInfo();
      return;
    }
    safeMode.setManual();
    getEditLog().logSyncAll();          <======= new code here
    NameNode.stateChangeLog.info("STATE* Safe mode is ON. "
                                + safeMode.getTurnOffTip());
  }

  synchronized void FSEditLog.logSyncAll() throws IOException {
    TransactionId id = myTransactionId.get();
    id.txid = txid;
    logSync();
  } 

{code}






> saveNamespace can corrupt edits log
> -----------------------------------
>
>                 Key: HDFS-988
>                 URL: https://issues.apache.org/jira/browse/HDFS-988
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: name-node
>            Reporter: dhruba borthakur
>
> The adminstrator puts the namenode is safemode and then issues the 
> savenamespace command. This can corrupt the edits log. The problem is that  
> when the NN enters safemode, there could still be pending logSycs occuring 
> from other threads. Now, the saveNamespace command, when executed, would save 
> a edits log with partial writes. I have seen this happen on 0.20.
> https://issues.apache.org/jira/browse/HDFS-909?focusedCommentId=12828853&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12828853

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