[ https://issues.apache.org/jira/browse/HDFS-1112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12868928#action_12868928 ]
Konstantin Shvachko commented on HDFS-1112: ------------------------------------------- A couple of somments. # {{FSEditLog.isTimeToSync()}} should be {{shouldForceSync()}} with reversed boolean return value, to make it consistent with the EditLogOutputStream method. # Is it possible to reuse the flag {{isSyncRunning}} instead of new {{isAutoSyncScheduled}}? The problem is that we {{waitForSyncToFinish()}} in many operations, which makes sure that {{isSyncRunning == false}}. We should probably do the same with {{isAutoSyncScheduled}} if there is no way to use one flag for both conditions. # This is the main concern. If {{logSync()}} fails, then {{isAutoSyncScheduled}} will remain set. Nobody will be able to unset it, and everybody will be waiting for the sync to finish when nobody is syncing. # I see you had to add throwing IOException in a bunch of methods. The reason is that {{logSync()}} throws IOEception, and therefore now the {{logEdit()}} should do it too. I think we should fix {{logSync()}}, because it should not throw IOException. The only reason {{logSync()}} throws is {{setReadyToFlush()}}. But call to {{setReadyToFlush()}} should be treated the same way as the call to {{flush()}}, that is it should catch the exception and {{processIOError()}}. I think current treatment of {{setReadyToFlush()}} is incorrect. > Edit log buffer should not grow unboundedly > ------------------------------------------- > > Key: HDFS-1112 > URL: https://issues.apache.org/jira/browse/HDFS-1112 > Project: Hadoop HDFS > Issue Type: Bug > Components: name-node > Affects Versions: 0.22.0 > Reporter: Hairong Kuang > Assignee: Hairong Kuang > Fix For: 0.22.0 > > Attachments: editLogBuf.patch, editLogBuf1.patch > > > Currently HDFS does not impose an upper limit on the edit log buffer. In case > there are a large number of open operations coming in with access time update > on, since open does not call sync automatically, there is a possibility that > the buffer grow to a large size, therefore causes memory leak and full GC in > extreme cases as described in HDFS-1104. > The edit log buffer should be automatically flushed when the buffer becomes > full. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.