[
https://issues.apache.org/jira/browse/HDFS-4532?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daryn Sharp updated HDFS-4532:
------------------------------
Attachment: HDFS-4532.patch
HDFS-4532.branch-23.patch
Uses the {{Server.getRemoteUser}} call in place of {{UGI.getCurrentUser}} for
logging edits.
Streamlined the audit logging so the same redundant conditions and parameters
aren't checked in every method. Notably every audit logging call doesn't have
to pass the ugi.
I also found a couple places where the file stat for the audit log was being
done outside the namespace lock - which can lead to race conditions where the
wrong stat is logged because another operation has taken place between lock
release and audit logging.
> RPC call queue may fill due to current user lookup
> --------------------------------------------------
>
> Key: HDFS-4532
> URL: https://issues.apache.org/jira/browse/HDFS-4532
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: namenode
> Affects Versions: 0.23.0, 2.0.0-alpha, 3.0.0
> Reporter: Daryn Sharp
> Assignee: Daryn Sharp
> Priority: Critical
> Attachments: HDFS-4532.branch-23.patch, HDFS-4532.patch
>
>
> Audit logging need to invoke {{UGI.getCurrentUser}} to log the user
> performing an operation. This is a synch'ed method, so audit logging is
> effectively serializing the completion of concurrent read ops. Under very
> heavy load, RPC throughput drops dramatically, the call queue fills with
> thousands of waiting operations, and clients begin timing out. Jstack shows
> all but one call handler blocked on {{UGI.getCurrentUser}}.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira