[ 
https://issues.apache.org/jira/browse/HBASE-13873?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

sunyerui updated HBASE-13873:
-----------------------------
    Description: 
When run IntegrationTestIngestWithACL on distributed clusters with kerberos 
security enabled, the method addAuthInfoToConf() in LoadTestTool will be 
invoked and throws UnsupportedOperationException, stack as follows:
{code}
2015-06-09 22:15:33,605 ERROR [main] util.AbstractHBaseTool: Error running 
command-line tool
java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:148)
        at java.util.AbstractList.add(AbstractList.java:108)
        at 
org.apache.hadoop.hbase.util.LoadTestTool.addAuthInfoToConf(LoadTestTool.java:811)
        at 
org.apache.hadoop.hbase.util.LoadTestTool.loadTable(LoadTestTool.java:516)
        at 
org.apache.hadoop.hbase.util.LoadTestTool.doWork(LoadTestTool.java:479)
        at 
org.apache.hadoop.hbase.util.AbstractHBaseTool.run(AbstractHBaseTool.java:112)
        at 
org.apache.hadoop.hbase.IntegrationTestIngest.runIngestTest(IntegrationTestIngest.java:151)
        at 
org.apache.hadoop.hbase.IntegrationTestIngest.internalRunIngestTest(IntegrationTestIngest.java:114)
        at 
org.apache.hadoop.hbase.IntegrationTestIngest.runTestFromCommandLine(IntegrationTestIngest.java:97)
        at 
org.apache.hadoop.hbase.IntegrationTestBase.doWork(IntegrationTestBase.java:115)
        at 
org.apache.hadoop.hbase.util.AbstractHBaseTool.run(AbstractHBaseTool.java:112)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at 
org.apache.hadoop.hbase.IntegrationTestIngestWithACL.main(IntegrationTestIngestWithACL.java:136)
{code}

The corresponding code is below and the reason is obvious. Arrays.asList return 
a java.util.Arrays$ArrayList but not java.util.ArrayList. Both of them are 
inherited from java.util.AbstractList, but the former didn't override the 
method add(), so the parent method java.util.AbstractList.add() will be invoked 
and the exception threw.
{code}
private void addAuthInfoToConf(Properties authConfig, Configuration conf, 
String owner,
      String userList) throws IOException {
    List<String> users = Arrays.asList(userList.split(","));
    users.add(owner);
    ...
  }
{code}

Does anyone occurred on this? I think it's an obvious bug but no one report it, 
so please tell me if I misunderstanding it. If it's actually a bug here, then 
it can be fixed very easy as below:
{code}
 List<String> users = new ArrayList<String>(Arrays.asList(userList.split(",")));
{code}

  was:
When run IntegrationTestIngestWithACL on distributed clusters with kerberos 
security enabled, the method addAuthInfoToConf() in LoadTestTool will be 
invoked and throws UnsupportedOperationException, stack as follows:
{panel}
2015-06-09 22:15:33,605 ERROR \[main\] util.AbstractHBaseTool: Error running 
command-line tool
java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:148)
        at java.util.AbstractList.add(AbstractList.java:108)
        at 
org.apache.hadoop.hbase.util.LoadTestTool.addAuthInfoToConf(LoadTestTool.java:811)
        at 
org.apache.hadoop.hbase.util.LoadTestTool.loadTable(LoadTestTool.java:516)
        at 
org.apache.hadoop.hbase.util.LoadTestTool.doWork(LoadTestTool.java:479)
        at 
org.apache.hadoop.hbase.util.AbstractHBaseTool.run(AbstractHBaseTool.java:112)
        at 
org.apache.hadoop.hbase.IntegrationTestIngest.runIngestTest(IntegrationTestIngest.java:151)
        at 
org.apache.hadoop.hbase.IntegrationTestIngest.internalRunIngestTest(IntegrationTestIngest.java:114)
        at 
org.apache.hadoop.hbase.IntegrationTestIngest.runTestFromCommandLine(IntegrationTestIngest.java:97)
        at 
org.apache.hadoop.hbase.IntegrationTestBase.doWork(IntegrationTestBase.java:115)
        at 
org.apache.hadoop.hbase.util.AbstractHBaseTool.run(AbstractHBaseTool.java:112)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at 
org.apache.hadoop.hbase.IntegrationTestIngestWithACL.main(IntegrationTestIngestWithACL.java:136)
{panel}

The corresponding code is below and the reason is obvious. Arrays.asList return 
a java.util.Arrays$ArrayList but not java.util.ArrayList. Both of them are 
inherited from java.util.AbstractList, but the former didn't override the 
method add(), so the parent method java.util.AbstractList.add() will be invoked 
and the exception threw.
{code}
private void addAuthInfoToConf(Properties authConfig, Configuration conf, 
String owner,
      String userList) throws IOException {
    List<String> users = Arrays.asList(userList.split(","));
    users.add(owner);
    ...
  }
{code}

Does anyone occurred on this? I think it's an obvious bug but no one report it, 
so please tell me if I misunderstanding it. If it's actually a bug here, then 
it can be fixed very easy as below:
{code}
 List<String> users = new ArrayList<String>(Arrays.asList(userList.split(",")));
{code}


> LoadTestTool addAuthInfoToConf throws UnsupportedOperationException
> -------------------------------------------------------------------
>
>                 Key: HBASE-13873
>                 URL: https://issues.apache.org/jira/browse/HBASE-13873
>             Project: HBase
>          Issue Type: Bug
>          Components: integration tests
>    Affects Versions: 0.98.13
>            Reporter: sunyerui
>             Fix For: 0.98.14
>
>
> When run IntegrationTestIngestWithACL on distributed clusters with kerberos 
> security enabled, the method addAuthInfoToConf() in LoadTestTool will be 
> invoked and throws UnsupportedOperationException, stack as follows:
> {code}
> 2015-06-09 22:15:33,605 ERROR [main] util.AbstractHBaseTool: Error running 
> command-line tool
> java.lang.UnsupportedOperationException
>         at java.util.AbstractList.add(AbstractList.java:148)
>         at java.util.AbstractList.add(AbstractList.java:108)
>         at 
> org.apache.hadoop.hbase.util.LoadTestTool.addAuthInfoToConf(LoadTestTool.java:811)
>         at 
> org.apache.hadoop.hbase.util.LoadTestTool.loadTable(LoadTestTool.java:516)
>         at 
> org.apache.hadoop.hbase.util.LoadTestTool.doWork(LoadTestTool.java:479)
>         at 
> org.apache.hadoop.hbase.util.AbstractHBaseTool.run(AbstractHBaseTool.java:112)
>         at 
> org.apache.hadoop.hbase.IntegrationTestIngest.runIngestTest(IntegrationTestIngest.java:151)
>         at 
> org.apache.hadoop.hbase.IntegrationTestIngest.internalRunIngestTest(IntegrationTestIngest.java:114)
>         at 
> org.apache.hadoop.hbase.IntegrationTestIngest.runTestFromCommandLine(IntegrationTestIngest.java:97)
>         at 
> org.apache.hadoop.hbase.IntegrationTestBase.doWork(IntegrationTestBase.java:115)
>         at 
> org.apache.hadoop.hbase.util.AbstractHBaseTool.run(AbstractHBaseTool.java:112)
>         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
>         at 
> org.apache.hadoop.hbase.IntegrationTestIngestWithACL.main(IntegrationTestIngestWithACL.java:136)
> {code}
> The corresponding code is below and the reason is obvious. Arrays.asList 
> return a java.util.Arrays$ArrayList but not java.util.ArrayList. Both of them 
> are inherited from java.util.AbstractList, but the former didn't override the 
> method add(), so the parent method java.util.AbstractList.add() will be 
> invoked and the exception threw.
> {code}
> private void addAuthInfoToConf(Properties authConfig, Configuration conf, 
> String owner,
>       String userList) throws IOException {
>     List<String> users = Arrays.asList(userList.split(","));
>     users.add(owner);
>     ...
>   }
> {code}
> Does anyone occurred on this? I think it's an obvious bug but no one report 
> it, so please tell me if I misunderstanding it. If it's actually a bug here, 
> then it can be fixed very easy as below:
> {code}
>  List<String> users = new 
> ArrayList<String>(Arrays.asList(userList.split(",")));
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to