[ 
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

Reply via email to