Jerry Lampi created DERBY-7174:
----------------------------------

             Summary: Print a stack trace in 
org\apache\derby\impl\drda\NetworkServerControlImpl.blockingStart(PrintWriter 
consoleWriter)
                 Key: DERBY-7174
                 URL: https://issues.apache.org/jira/browse/DERBY-7174
             Project: Derby
          Issue Type: Bug
          Components: Network Server
    Affects Versions: 10.14.2.0
            Reporter: Jerry Lampi
             Fix For: 10.14.2.0


NetworkServerControlImpl.blockingStart() currently swallows the stack trace 
when it catches an exception.  This results in lost diagnostics.

Here is an example.  We run Derby on the z/OS mainframe using a SafRing 
keystore, which uses a special protocol handler.

Initially, when Derby failed to run, we saw this message: 
{noformat}
java.net.SocketException: java.security.NoSuchAlgorithmException: Error 
constructing implementation (algorithm: Default, provider: SunJSSE, class: 
sun.security.ssl.SSLContextImpl$DefaultSSLContext) {noformat}
Since there was no stack trace, this was difficult to diagnose.  I modified 
NetworkServerControlImpl.blockingStart() to print the stack trace and the 
following was logged: 
{noformat}
java.security.PrivilegedActionException: java.net.SocketException: 
java.security.NoSuchAlgorithmException: Error constructing implementation 
(algorithm: Default, provider: SunJSSE, class: 
sun.security.ssl.SSLContextImpl$DefaultSSLContext) 
java.security.PrivilegedActionException: java.net.SocketException: 
java.security.NoSuchAlgorithmException: Error constructing implementation 
(algorithm: Default, provider: SunJSSE, class: 
sun.security.ssl.SSLContextImpl$DefaultSSLContext) 
    at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:750)
 
    at 
org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(NetworkServerControlImpl.java:804)
 
    at 
org.apache.derby.impl.drda.NetworkServerControlImpl.executeWork(NetworkServerControlImpl.java:2352)
 
    at 
org.apache.derby.drda.NetworkServerControl.main(NetworkServerControl.java:353) 
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: 
Error constructing implementation (algorithm: Default, provider: SunJSSE, 
class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) 
    at 
java.base/javax.net.ssl.DefaultSSLServerSocketFactory.throwException(SSLServerSocketFactory.java:175)
 
    at 
java.base/javax.net.ssl.DefaultSSLServerSocketFactory.createServerSocket(SSLServerSocketFactory.java:203)
 
    at 
org.apache.derby.impl.drda.NetworkServerControlImpl.createServerSocket(NetworkServerControlImpl.java:730)
 
    at 
org.apache.derby.impl.drda.NetworkServerControlImpl.access$000(NetworkServerControlImpl.java:94)
 
    at 
org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(NetworkServerControlImpl.java:808)
 
    at 
org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(NetworkServerControlImpl.java:805)
 
    at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:746)
 
    ... 3 more 
Caused by: java.security.NoSuchAlgorithmException: Error constructing 
implementation (algorithm: Default, provider: SunJSSE, class: 
sun.security.ssl.SSLContextImpl$DefaultSSLContext) 
    at java.base/java.security.Provider$Service.newInstance(Provider.java:1925) 
    at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236) 
    at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:164) 
    at java.base/javax.net.ssl.SSLContext.getInstance(SSLContext.java:168) 
    at java.base/javax.net.ssl.SSLContext.getDefault(SSLContext.java:99) 
    at 
java.base/javax.net.ssl.SSLServerSocketFactory.getDefault(SSLServerSocketFactory.java:114)
 
    at 
org.apache.derby.impl.drda.NetworkServerControlImpl.createServerSocket(NetworkServerControlImpl.java:727)
 
    ... 7 more 
Caused by: java.lang.UnsatisfiedLinkError: 
com/ibm/crypto/zsecurity/provider/RACF.getRecords(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
 
    at 
ibm.crypto.zsecurity/com.ibm.crypto.zsecurity.provider.RACFInputStream.a(RACFInputStream.java:315)
 
    at 
ibm.crypto.zsecurity/com.ibm.crypto.zsecurity.provider.RACFInputStream.<init>(RACFInputStream.java:66)
 
    at 
ibm.crypto.zsecurity/com.ibm.crypto.zsecurity.provider.safkeyring.a.getInputStream(a.java:11)
 
    at java.base/java.net.URL.openStream(URL.java:1165) 
    at 
java.base/sun.security.ssl.SSLContextImpl$DefaultManagersHolder$2.run(SSLContextImpl.java:1103)
 
    at 
java.base/sun.security.ssl.SSLContextImpl$DefaultManagersHolder$2.run(SSLContextImpl.java:1100)
 
    at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:746)
 
    at 
java.base/sun.security.ssl.SSLContextImpl$DefaultManagersHolder.getKeyManagers(SSLContextImpl.java:1099)
 
    at 
java.base/sun.security.ssl.SSLContextImpl$DefaultManagersHolder.<clinit>(SSLContextImpl.java:1022)
 
    at 
java.base/sun.security.ssl.SSLContextImpl$DefaultSSLContext.<init>(SSLContextImpl.java:1200)
 
    at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
 Method) 
    at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 
    at 
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 
    at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 
    at java.base/java.security.Provider.newInstanceUtil(Provider.java:164) 
    at java.base/java.security.Provider$Service.newInstance(Provider.java:1918) 
    ... 13 more{noformat}
The stack trace revealed the root cause to be: java.lang.UnsatisfiedLinkError: 
com/ibm/crypto/zsecurity/provider/RACF.getRecords(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I

This enhancement requests that caught exceptions have their stack traces 
printed in NetworkServerControlImpl.blockingStart(). 

 

The change I made was straightforward. Wherever an exception was caught, I 
simply printed its stack trace; e.g.: e.printStackTrace(); 

Although we use 10.14.2.0, I downloaded 10.17.1.0 source and didn't see this 
enhancement implemented yet. 



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

Reply via email to