ConfX created HDFS-17100:
----------------------------

             Summary: Group.GroupCacheLoader does not properly throw Exception 
with message
                 Key: HDFS-17100
                 URL: https://issues.apache.org/jira/browse/HDFS-17100
             Project: Hadoop HDFS
          Issue Type: Bug
            Reporter: ConfX
         Attachments: reproduce.sh

h2. What happened?

Got an {{IllegalArgumentException}} without message enclosed in 
{{ExceptionInInitializerError}} when trying to
h2. Where's the bug?

In the constructor of {{Group.GroupCacheLoader}} it attempts to instantiate a 
{{{}ThreadPoolExecutor{}}}:
{noformat}
ThreadPoolExecutor parentExecutor =  new ThreadPoolExecutor(
        reloadGroupsThreadCount,
        reloadGroupsThreadCount,
        60,
        TimeUnit.SECONDS,
        new LinkedBlockingQueue<>(),
        threadFactory);{noformat}
The parameters here can be invalid, e.g., {{{}reloadGroupsthreadCount < 0{}}}. 
However, {{ThreadPoolExecutor}} does not throw any exception with debugging 
information and {{GroupCacheLoader}} also does not handle the exception 
properly by adding instructions.
h2. How to reproduce?

(1) set {{hadoop.security.groups.cache.background.reload}} to {{true}} and 
{{hadoop.security.groups.cache.background.reload.threads}} to {{-781297741}}
(2) run 
{{org.apache.hadoop.hdfs.TestDataTransferProtocol#testDataTransferProtocol}}
h2. Stacktrace
{noformat}
java.lang.ExceptionInInitializerError
    at 
org.apache.hadoop.hdfs.MiniDFSCluster.initNameNodeConf(MiniDFSCluster.java:1268)
    at 
org.apache.hadoop.hdfs.MiniDFSCluster.configureNameService(MiniDFSCluster.java:1089)
    at 
org.apache.hadoop.hdfs.MiniDFSCluster.createNameNodesAndSetConf(MiniDFSCluster.java:1016)
    at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:948)
    at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:576)
    at 
org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:518)
    at 
org.apache.hadoop.hdfs.TestDataTransferProtocol.testDataTransferProtocol(TestDataTransferProtocol.java:346)
...
Caused by: java.lang.IllegalArgumentException
    at 
java.base/java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1293)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1215)
    at 
org.apache.hadoop.security.Groups$GroupCacheLoader.<init>(Groups.java:285)
    at org.apache.hadoop.security.Groups.<init>(Groups.java:139)
    at org.apache.hadoop.security.Groups.<init>(Groups.java:102)
    at 
org.apache.hadoop.security.Groups.getUserToGroupsMappingService(Groups.java:451)
    at 
org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:338)
    at 
org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:300)
    at 
org.apache.hadoop.security.UserGroupInformation.isAuthenticationMethodEnabled(UserGroupInformation.java:395)
    at 
org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled(UserGroupInformation.java:389)
    at org.apache.hadoop.hdfs.server.common.Util.<clinit>(Util.java:77)
...{noformat}
For an easy reproduction, run the reproduce.sh in the attachment. We are happy 
to provide a patch if this issue is confirmed.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to