[
https://issues.apache.org/jira/browse/HDFS-3059?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14949726#comment-14949726
]
Xiao Chen commented on HDFS-3059:
---------------------------------
I have attached a patch 04 trying to fix the NullPointerException.
* The initial patches looks great. Thanks for the contribution Evert, Aaron and
Ravi!
* Even if all configurations in {{ssl-server.xml}} are right, if the keystores
were not setup/passed in correctly, we would still end up with the NPE. This is
because {{DFSUtil#getPassword}} silently sets the password to null. I added a
warn message here, because throwing exception seems to be too strict, and Java
KeyStore allows passing null when load.
* When starting secondarynamenode from shell with security enabled, it
unnecessarily checks for password and try to setup a web server, which then may
end up in the same NPE. I checked for whether it's called from shell before
firing up the web server.
I have only tested this manually, don't think unit testing is needed as this is
more of a supportability issue.
> ssl-server.xml causes NullPointer
> ---------------------------------
>
> Key: HDFS-3059
> URL: https://issues.apache.org/jira/browse/HDFS-3059
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: datanode, security
> Affects Versions: 2.7.1
> Environment: in core-site.xml:
> {code:xml}
> <property>
> <name>hadoop.security.authentication</name>
> <value>kerberos</value>
> </property>
> <property>
> <name>hadoop.security.authorization</name>
> <value>true</value>
> </property>
> {code}
> in hdfs-site.xml:
> {code:xml}
> <property>
> <name>dfs.https.server.keystore.resource</name>
> <value>/etc/hadoop/conf/ssl-server.xml</value>
> </property>
> <property>
> <name>dfs.https.enable</name>
> <value>true</value>
> </property>
> <property>
> ...other security props
> </property>
> {code}
> Reporter: Evert Lammerts
> Priority: Minor
> Labels: BB2015-05-TBR
> Attachments: HDFS-3059.02.patch, HDFS-3059.03.patch,
> HDFS-3059.04.patch, HDFS-3059.patch, HDFS-3059.patch.2
>
>
> If ssl is enabled (dfs.https.enable) but ssl-server.xml is not available, a
> DN will crash during startup while setting up an SSL socket with a
> NullPointerException:
> {noformat}12/03/07 17:08:36 DEBUG security.Krb5AndCertsSslSocketConnector:
> useKerb = false, useCerts = true
> jetty.ssl.password : jetty.ssl.keypassword : 12/03/07 17:08:36 INFO
> mortbay.log: jetty-6.1.26.cloudera.1
> 12/03/07 17:08:36 INFO mortbay.log: Started
> [email protected]:1006
> 12/03/07 17:08:36 DEBUG security.Krb5AndCertsSslSocketConnector: Creating new
> KrbServerSocket for: 0.0.0.0
> 12/03/07 17:08:36 WARN mortbay.log: java.lang.NullPointerException
> 12/03/07 17:08:36 WARN mortbay.log: failed
> [email protected]:50475: java.io.IOException:
> !JsseListener: java.lang.NullPointerException
> 12/03/07 17:08:36 WARN mortbay.log: failed Server@604788d5:
> java.io.IOException: !JsseListener: java.lang.NullPointerException
> 12/03/07 17:08:36 INFO mortbay.log: Stopped
> [email protected]:50475
> 12/03/07 17:08:36 INFO mortbay.log: Stopped
> [email protected]:1006
> 12/03/07 17:08:37 INFO datanode.DataNode: Waiting for threadgroup to exit,
> active threads is 0{noformat}
> The same happens if I set an absolute path to an existing
> dfs.https.server.keystore.resource - in this case the file cannot be found
> but not even a WARN is given.
> Since in dfs.https.server.keystore.resource we know we need to have 4
> properties specified (ssl.server.truststore.location,
> ssl.server.keystore.location, ssl.server.keystore.password, and
> ssl.server.keystore.keypassword) we should check if they are set and throw an
> IOException if they are not.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)