[
https://issues.apache.org/jira/browse/HDFS-3025?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Todd Lipcon updated HDFS-3025:
------------------------------
Attachment: hdfs-3025.txt
Slightly modified patch. The issue in the previous patch was the following
possible interleaving:
- thread A calls logEdit, pushing it over the size threshold for an automatic
sync
- thread A exits the synchronized section in logEdit and context-switches out
- thread B calls logSync(), which sets the isAutoSyncScheduled flag false
- thread A continues into the code which schedules the automatic sync, and
fails the assert.
I've tested this new patch using testMultiThreadedEditLog with the number of
edits bumped up by a factor of 10. I'll also throw it on the cluster some time
in the next few days, but I think it should be OK to commit in the meantime.
> Automatic log sync shouldn't happen inside logEdit path
> -------------------------------------------------------
>
> Key: HDFS-3025
> URL: https://issues.apache.org/jira/browse/HDFS-3025
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: name-node, performance
> Affects Versions: 0.23.3
> Reporter: Todd Lipcon
> Assignee: Todd Lipcon
> Attachments: hdfs-3025.txt, hdfs-3025.txt
>
>
> HDFS-3020 fixes the "automatic log sync" functionality so that, when logEdits
> is called without log sync, it eventually triggers a sync. That sync ends up
> being inline, though, which means the FSN lock is usually held during it.
> This causes a bunch of threads to pile up.
> Instead, we should have it just set a "syncNeeded" flag and trigger a sync
> from another thread which isn't holding the lock (or from the same thread
> using a "logSyncIfNeeded" call).
> (credit to the FB branch for this idea)
--
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