You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Mark Anderson (JIRA)" <ji...@apache.org> on 2013/10/11 12:50:42 UTC

[jira] [Commented] (CXF-5327) Memory leak if SSLException occurs in FailoverTargetSelector.complete()

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

Mark Anderson commented on CXF-5327:
------------------------------------

Looking further into this it seems that my jaxws:client was not configured correctly. I hadn't set the address attribute so was only using the alternative addresses specified with the failover strategy. Therefore the first connection attempt was to a null address and always failed before moving on to try the alternative addresses.

When I set the address attribute of jaxws:client with the primary address I want to use and then specify the other address for failover I no longer see the memory leak even when there is an SSLException. 

The only remaining issue is whether there is anything that could be done to avoid a memory leak in this situation where the web service may have been misconfigured.

> Memory leak if SSLException occurs in FailoverTargetSelector.complete()
> -----------------------------------------------------------------------
>
>                 Key: CXF-5327
>                 URL: https://issues.apache.org/jira/browse/CXF-5327
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.6.10
>            Reporter: Mark Anderson
>
> When using failover with a sequential strategy and https there is a memory leak if an SSLException is thrown in FailoverTargetSelector.complete(). 
> The exception being thrown results in the key never being removed from the inProgress map.
> An example stack trace is given below:
> org.apache.cxf.interceptor.Fault: Could not send Message.
>      [java] 	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
>      [java] 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
>      [java] 	at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:565)
>      [java] 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474)
>      [java] 	at org.apache.cxf.clustering.FailoverTargetSelector.complete(FailoverTargetSelector.java:150)
>      [java] 	at org.apache.cxf.endpoint.ClientImpl.processResult(ClientImpl.java:626)
>      [java] 	at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:574)
>      [java] 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474)
>      [java] 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:377)
>      [java] 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330)
>      [java] 	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
>      [java] 	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:136)
>      [java] 	at com.sun.proxy.$Proxy159.version(Unknown Source)
>      [java] 	<snip>
>      [java] Caused by: javax.net.ssl.SSLException: SSLException invoking https://localhost:24750/ws-consumer/osc: Unrecognized SSL message, plaintext connection?
>      [java] 	at sun.reflect.GeneratedConstructorAccessor94.newInstance(Unknown Source)
>      [java] 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>      [java] 	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>      [java] 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1474)
>      [java] 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1459)
>      [java] 	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
>      [java] 	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:660)
>      [java] 	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>      [java] 	... 23 more
>      [java] Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
>      [java] 	at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:671)
>      [java] 	at sun.security.ssl.InputRecord.read(InputRecord.java:504)
>      [java] 	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
>      [java] 	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
>      [java] 	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
>      [java] 	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
>      [java] 	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
>      [java] 	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
>      [java] 	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)
>      [java] 	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
>      [java] 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1403)
>      [java] 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1347)
>      [java] 	at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:47)
>      [java] 	at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69)
>      [java] 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1431)
>      [java] 	... 26 more



--
This message was sent by Atlassian JIRA
(v6.1#6144)