Details
Description
The INodeAttributeProvider and AccessControlEnforcer features degrade performance and generate excessive garbage even when neither is used. Main issues:
- A byte[][] of components is unnecessarily created. Each path component lookup converts a subrange of the byte[][] to a new String[] - then not used by default attribute provider.
- Subaccess checks are insanely expensive. The full path of every subdir is created by walking up the inode tree, creating a INode[], building a string by converting each inode's byte[] name to a string, etc. Which will only be used if there's an exception.
The expensive of #1 should only be incurred when using the provider/enforcer feature. For #2, paths should be created on-demand for exceptions.
Attachments
Attachments
Issue Links
- is related to
-
HDFS-12614 FSPermissionChecker#getINodeAttrs() throws NPE when INodeAttributesProvider configured
- Resolved
-
HDFS-6826 Plugin interface to enable delegation of HDFS authorization assertions
- Closed
- is required by
-
HDFS-10711 Optimize FSPermissionChecker group membership check
- Resolved