[ https://issues.apache.org/jira/browse/HDFS-1073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12930023#action_12930023 ]
Konstantin Shvachko commented on HDFS-1073: ------------------------------------------- Rob, I seems we cannot have the "I'm quitting!" record just because there is no "quit" or "shutdown" command. I agree the "rolled" transaction can be useful for a sanity check for the edits files that are not in-progress. Todd, based on the design doc (I should have read first thing) I don't see much difference between the current and your new implementation ascept that you don't need a side file to write the edits while spooling. Currently BN.startCheckpoint() causes NN.rollEdits(), which in turn sends back to BN the SPOOL_START record. This is when BN starts spooling. You seem to be trying to call the process of spooling (writing into edits file but not applying to memory) by journal. That is how the state is called in your design, right? Which may be confusing as BN continues journaling (writing to edits file) whether it is in synchronized or in spooling mode. Also I don't see how you can get by with only 2 states for BN you need 3. While spooling there are 2 active threads: one (writer) is writing edits from NN directly to the edits_K, another (reader) is reading formerly written records from edits_K. At the end we need to switch the writer thread from writing to applying the records to in memory state and shut down the second thread. This is where you need the third state, currently called WAIT. When the reader thread reaches the end of file it sets the WAIT state. The writer may still be writing before it sees the WAIT state. After seeing WAIT it blocks and waits until spooling is OFF. The reader read the remaining records and turns the spooling OFF. Let me summarize the current journal spool states meaning - JSpoolState.OFF - spooling is off, apply edits to memory state and write into journal (edits file) - JSpoolState.INPROGRESS - spooling in progress, do not apply to memory, just journal - JSpoolState.WAIT - stop, do nothing wait until spooling is OFF Does that make sense? > Simpler model for Namenode's fs Image and edit Logs > ---------------------------------------------------- > > Key: HDFS-1073 > URL: https://issues.apache.org/jira/browse/HDFS-1073 > Project: Hadoop HDFS > Issue Type: Improvement > Reporter: Sanjay Radia > Assignee: Todd Lipcon > Attachments: hdfs-1073.txt, hdfs1073.pdf > > > The naming and handling of NN's fsImage and edit logs can be significantly > improved resulting simpler and more robust code. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.