czeller
07/21/2023, 4:25 PM<http://java.net|java.net>.SocketInputStream.socketRead0(Native Method). This SO article discusses the issue in more detail: https://stackoverflow.com/questions/28785085/how-to-prevent-hangs-on-socketinputstream-socketread0-in-java/28950809#28950809
⢠Once this happens, the originating request/thread is stuck and the only solution is to restart Lucee.
⢠The blocking happens several times a week, but it's out of tens of thousands of requests.
⢠It wasn't a problem until June of this year.
Our environment:
Windows Server 2016
Lucee 5.3.10.97
Java 11.0.13 (Eclipse Adoptium) 64bit
It's a bit of a needle in a haystack, but does anyone have suggestions on how to troubleshoot/resolve this?
We are considering using a different library for making these requests, but that seems heavy-handed.czeller
07/21/2023, 4:29 PMjava.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.socketRead(Unknown Source)
java.net.SocketInputStream.read(Unknown Source)
java.net.SocketInputStream.read(Unknown Source)
sun.security.ssl.SSLSocketInputRecord.read(Unknown Source)
sun.security.ssl.SSLSocketInputRecord.readFully(Unknown Source)
sun.security.ssl.SSLSocketInputRecord.decodeInputRecord(Unknown Source)
sun.security.ssl.SSLSocketInputRecord.decode(Unknown Source)
sun.security.ssl.SSLTransport.decode(Unknown Source)
sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
sun.security.ssl.SSLSocketImpl.readApplicationRecord(Unknown Source)
sun.security.ssl.SSLSocketImpl$AppInputStream.read(Unknown Source)
org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
org.apache.http.impl.io.SessionInputBufferImpl.read(SessionInputBufferImpl.java:205)
org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:176)
org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:135)
java.util.zip.InflaterInputStream.fill(Unknown Source)
java.util.zip.InflaterInputStream.read(Unknown Source)
java.util.zip.GZIPInputStream.read(Unknown Source)
java.io.FilterInputStream.read(Unknown Source)
org.apache.http.client.entity.LazyDecompressingInputStream.read(LazyDecompressingInputStream.java:64)
lucee.commons.io.IOUtil.copy(IOUtil.java:308)
lucee.commons.io.IOUtil.copy(IOUtil.java:75)
lucee.commons.io.IOUtil.toBytes(IOUtil.java:1107)
lucee.commons.io.IOUtil.toBytes(IOUtil.java:1102)
lucee.commons.net.http.httpclient.HTTPResponse4Impl.getContentAsByteArray(HTTPResponse4Impl.java:84)
lucee.runtime.tag.Http.contentAsBinary(Http.java:1373)
lucee.runtime.tag.Http._doEndTag(Http.java:1297)
lucee.runtime.tag.Http.doEndTag(Http.java:696)
dynamics.dynamics_webapi_request_cfc$cf.udfCall(/cfc/dynamics/dynamics_WebApi_Request.cfc:120)
lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
lucee.runtime.type.UDFImpl._call(UDFImpl.java:350)
lucee.runtime.type.UDFImpl.call(UDFImpl.java:223)
lucee.runtime.type.scope.UndefinedImpl.call(UndefinedImpl.java:786)
lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:787)
lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1775)
dynamics.dynamics_webapi_request_cfc$cf.udfCall(/cfc/dynamics/dynamics_WebApi_Request.cfc:48)
lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
lucee.runtime.type.UDFImpl._call(UDFImpl.java:350)
lucee.runtime.type.UDFImpl.call(UDFImpl.java:223)
lucee.runtime.ComponentImpl._call(ComponentImpl.java:696)
lucee.runtime.ComponentImpl._call(ComponentImpl.java:584)
lucee.runtime.ComponentImpl.call(ComponentImpl.java:1931)
lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:787)
lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1775)
dynamics.dynamics_webapi_cfc$cf.udfCall2(/cfc/dynamics/dynamics_WebApi.cfc:201)
dynamics.dynamics_webapi_cfc$cf.udfCall(/cfc/dynamics/dynamics_WebApi.cfc)
lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
lucee.runtime.type.UDFImpl._call(UDFImpl.java:350)
lucee.runtime.type.UDFImpl._callCachedWithin(UDFImpl.java:282)
lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:213)
lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:804)
lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:866)
lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1794)
dynamics.dynamics_webapi_cfc$cf.udfCall1(/cfc/dynamics/dynamics_WebApi.cfc:169)
dynamics.dynamics_webapi_cfc$cf.udfCall(/cfc/dynamics/dynamics_WebApi.cfc)
lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
lucee.runtime.type.UDFImpl._call(UDFImpl.java:350)
lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:213)
lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:804)
lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:866)
lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1794)
dynamics.dynamics_webapi_cfc$cf.udfCall7(/cfc/dynamics/dynamics_WebApi.cfc:1166)
dynamics.dynamics_webapi_cfc$cf.udfCall(/cfc/dynamics/dynamics_WebApi.cfc)
lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
lucee.runtime.type.UDFImpl._call(UDFImpl.java:350)
lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:213)
lucee.runtime.type.scope.UndefinedImpl.callWithNamedValues(UndefinedImpl.java:804)
lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:866)
lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1794)
dynamics.dynamics_webapi_cfc$cf.udfCall4(/cfc/dynamics/dynamics_WebApi.cfc:546)
dynamics.dynamics_webapi_cfc$cf.udfCall(/cfc/dynamics/dynamics_WebApi.cfc)
lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
lucee.runtime.type.UDFImpl._call(UDFImpl.java:350)
lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:213)
lucee.runtime.ComponentImpl._call(ComponentImpl.java:697)
lucee.runtime.ComponentImpl._call(ComponentImpl.java:584)
lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:1950)
lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:866)
lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1794)
dynamics.environment_cfc$cf.udfCall5(/cfc/dynamics/environment.cfc:446)
dynamics.environment_cfc$cf.udfCall(/cfc/dynamics/environment.cfc)
lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
lucee.runtime.type.UDFImpl._call(UDFImpl.java:350)
lucee.runtime.type.UDFImpl.call(UDFImpl.java:223)
lucee.runtime.ComponentImpl._call(ComponentImpl.java:696)
lucee.runtime.ComponentImpl.onMissingMethod(ComponentImpl.java:623)
lucee.runtime.ComponentImpl._call(ComponentImpl.java:586)
lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:1950)
lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:866)
lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1794)ian.hickey
07/21/2023, 4:44 PMalexpixl8
07/21/2023, 4:45 PMalexpixl8
07/21/2023, 4:46 PMczeller
07/21/2023, 4:47 PMcfhttp.
we do have some requests that timeout without doing this hanging/blocking thingalexpixl8
07/21/2023, 4:50 PMalexpixl8
07/21/2023, 4:50 PMalexpixl8
07/21/2023, 4:50 PMczeller
07/21/2023, 4:53 PMalexpixl8
07/21/2023, 5:16 PMalexpixl8
07/21/2023, 5:16 PMalexpixl8
07/21/2023, 5:17 PMalexpixl8
07/21/2023, 5:17 PMalexpixl8
07/21/2023, 5:17 PMjamiejackson
07/21/2023, 6:58 PMjamiejackson
07/21/2023, 6:59 PM<http://sun.net|sun.net>.client.* timeouts may be relevant and you may want to set some appropriate ones explicitly.jamiejackson
07/21/2023, 6:59 PMczeller
07/21/2023, 7:17 PMzackster
07/21/2023, 8:07 PMczeller
07/25/2023, 4:30 PM-Dsun.net.client.defaultConnectTimeout=30000
-Dsun.net.client.defaultReadTimeout=600000
My guess is these timeouts only apply if you don't explicitly define a timeout on cfhttp, which we are already doing.jamiejackson
07/25/2023, 6:45 PMczeller
07/25/2023, 6:54 PMzackster
07/25/2023, 6:55 PM