[
https://issues.apache.org/jira/browse/HDFS-5064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13969046#comment-13969046
]
Andrew Wang commented on HDFS-5064:
-----------------------------------
Hi Daryn,
It's an unfair RW lock with a slight twist. Rather than just having readers and
writers, we have short reads, long reads, and writes. During a long read, we
let short reads jump ahead of waiting writers and enter the critical section.
This lets us get read concurrency during these long read ops when otherwise a
single waiting writer would block all readers from entering.
> Standby checkpoints should not block concurrent readers
> -------------------------------------------------------
>
> Key: HDFS-5064
> URL: https://issues.apache.org/jira/browse/HDFS-5064
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: ha, namenode
> Affects Versions: 2.3.0
> Reporter: Aaron T. Myers
> Assignee: Aaron T. Myers
> Fix For: 2.4.0
>
> Attachments: HDFS-5064.patch, HDFS-5064.patch
>
>
> We've observed an issue which causes fetches of the {{/jmx}} page of the NN
> to take a long time to load when the standby is in the process of creating a
> checkpoint.
> Even though both creating the checkpoint and gathering the statistics for
> {{/jmx}} take only the FSNS read lock, the issue is that since the FSNS uses
> a _fair_ RW lock, a single writer attempting to get the lock will block all
> threads attempting to get only the read lock for the duration of the
> checkpoint. This will cause {{/jmx}}, and really any thread only attempting
> to get the read lock, to block for the duration of the checkpoint, even
> though they should be able to proceed concurrently with the checkpointing
> thread.
--
This message was sent by Atlassian JIRA
(v6.2#6252)