[ 
https://issues.apache.org/jira/browse/ACCUMULO-4444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15496761#comment-15496761
 ] 

Michael Miller commented on ACCUMULO-4444:
------------------------------------------

Yeah I thought of that as well yesterday when looking at how to get ClientOpts 
to prompt for a password. The ChangeSecret tool does it by passing empty "--" 
parameters to JCommander and lets JCommander prompt for the password. 

I don't know the history but the way the tools are written now is pretty clunky 
and not very accessible. Like if the tool isn't mentioned specifically in the 
User guide or printed by accumulo script, how will they find it? It would be 
nice to have a way for CLI to list available tools.

> NullPointerException when password not given to TraceTableStats
> ---------------------------------------------------------------
>
>                 Key: ACCUMULO-4444
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-4444
>             Project: Accumulo
>          Issue Type: Bug
>          Components: trace
>    Affects Versions: 1.7.2, 1.8.0
>         Environment: 1.7.2 cluster
>            Reporter: Sean Busbey
>            Assignee: Michael Miller
>            Priority: Critical
>             Fix For: 1.7.3, 1.8.1, 2.0.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> I'm trying to follow the [admin guide on 
> tracing|https://accumulo.apache.org/1.7/accumulo_user_manual#_viewing_collected_traces],
>  specifically with the {{TraceTableStats}} command.
> In attempting to get prompted for the password, I provided a username and no 
> password, which resulted in a NullPointerException.
> {code}
> $ accumulo org.apache.accumulo.tracer.TraceTableStats -i accumulo -u foobar
> 2016-09-01 11:05:47,420 [conf.ConfigSanityCheck] WARN : Use of 
> instance.dfs.uri and instance.dfs.dir are deprecated. Consider using 
> instance.volumes instead.
> 2016-09-01 11:05:47,564 [client.ClientConfiguration] WARN : Found no 
> client.conf in default paths. Using default client configuration values.
> 2016-09-01 11:05:47,567 [client.ClientConfiguration] WARN : Found no 
> client.conf in default paths. Using default client configuration values.
> 2016-09-01 11:05:47,720 [start.Main] ERROR: Thread 
> 'org.apache.accumulo.tracer.TraceTableStats' died.
> java.lang.NullPointerException
>         at 
> org.apache.accumulo.core.client.impl.ConnectorImpl.<init>(ConnectorImpl.java:59)
>         at 
> org.apache.accumulo.core.client.ZooKeeperInstance.getConnector(ZooKeeperInstance.java:248)
>         at 
> org.apache.accumulo.core.cli.ClientOpts.getConnector(ClientOpts.java:315)
>         at 
> org.apache.accumulo.tracer.TraceTableStats.count(TraceTableStats.java:75)
>         at 
> org.apache.accumulo.tracer.TraceTableStats.main(TraceTableStats.java:71)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at org.apache.accumulo.start.Main$2.run(Main.java:157)
>         at java.lang.Thread.run(Thread.java:745)
> {code}
> The impacted line is checking to see if the credential has expired, without 
> checking to see if there is a credential in the first place, I think?
> {code}
> 57  public ConnectorImpl(final ClientContext context) throws 
> AccumuloException, AccumuloSecurityException {
> 58    checkArgument(context != null, "context is null");
> 59    if (context.getCredentials().getToken().isDestroyed())
> 60      throw new 
> AccumuloSecurityException(context.getCredentials().getPrincipal(), 
> SecurityErrorCode.TOKEN_EXPIRED);
> {code}



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

Reply via email to