[
https://issues.apache.org/jira/browse/OOZIE-1368?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Kanter updated OOZIE-1368:
---------------------------------
Attachment: OOZIE-1368.patch
The fix is pretty simple:
{{AuthOozieClient.createConnection(...)}} should check to make sure that the
{{currentToken}} is set before trying to write it, or it will try to write a
null token string, which gives the NPE.
I tried to make a unit test for this, but it seems that the way we're running
the servlets in the unit tests makes it behave differently in this scenario it
will give a authentication error even without the fix. From what I can tell,
when run from the tests the following line (line #128) in {{AuthOozieClient}}
throws an {{AuthenticationException}}, which makes Oozie print an
authentication error. When run in tomcat, its not throwing an exception, so
Oozie then tries to write the null auth token and gets the NPE (which the patch
fixes). In any case, I tested it manually and it works correctly now:
{code:java}
new AuthenticatedURL(authenticator).openConnection(url, currentToken);
{code}
> Error message when using an incorrect oozie url with kerberos is misleading
> ---------------------------------------------------------------------------
>
> Key: OOZIE-1368
> URL: https://issues.apache.org/jira/browse/OOZIE-1368
> Project: Oozie
> Issue Type: Bug
> Components: client
> Affects Versions: trunk
> Reporter: Robert Kanter
> Assignee: Robert Kanter
> Fix For: trunk
>
> Attachments: OOZIE-1368.patch
>
>
> If you specify an incorrect oozie url (e.g. its quite common for users to
> type http://localhost:11000 instead of http://localhost:11000/oozie) on a
> secure cluster (kerberos) and oozie hasn't already cached the delegation
> token (in ~/.oozie-auth-token), the oozie client gives a nasty NPE error:
> {noformat}
> $ rm ~/.oozie-auth-token
> $ kinit ...
> $ oozie admin -status -oozie http://localhost:11000
> java.lang.NullPointerException
> at java.io.Writer.write(Writer.java:140)
> at
> org.apache.oozie.client.AuthOozieClient.writeAuthToken(AuthOozieClient.java:182)
> at
> org.apache.oozie.client.AuthOozieClient.createConnection(AuthOozieClient.java:137)
> at
> org.apache.oozie.client.OozieClient.validateWSVersion(OozieClient.java:243)
> at org.apache.oozie.client.OozieClient.createURL(OozieClient.java:344)
> at org.apache.oozie.client.OozieClient.access$000(OozieClient.java:76)
> at
> org.apache.oozie.client.OozieClient$ClientCallable.call(OozieClient.java:410)
> at
> org.apache.oozie.client.OozieClient.getSystemMode(OozieClient.java:1299)
> at org.apache.oozie.cli.OozieCLI.adminCommand(OozieCLI.java:1323)
> at org.apache.oozie.cli.OozieCLI.processCommand(OozieCLI.java:499)
> at org.apache.oozie.cli.OozieCLI.run(OozieCLI.java:466)
> at org.apache.oozie.cli.OozieCLI.main(OozieCLI.java:176)
> null
> {noformat}
> Once Oozie writes the auth token (because you used the correct url), if you
> then give an incorrect url, it will return a more appropriate 404 error:
> {noformat}
> $ sudo -u oozie oozie admin -status -oozie http://localhost:11000/oozie
> $ ls ~/.oozie-auth-token
> /home/rkanter/.oozie-auth-token
> $ sudo -u oozie oozie admin -status -oozie http://localhost:11000
> Error: HTTP error code: 404 : Not Found
> {noformat}
--
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