Copy link to clipboard
Copied
How can I set the "com.sun.jndi.ldap.read.timeout" value, or otherwise get a CFLDAP call to properly timeout.
I have an Active Directory (AD) server that I'm making CFLDAP calls to. Randomly the calls will hang for approximately 900 seconds. The AD server admins say they don't see any issues on their end, but the 900 seconds does correspond to a default MaxConnIdleTime setting on the AD server. In FusionReactor it will show that it's stuck on "java.net.SocketInputStream.socketRead0"
This page matches with the issue I'm seeing: java.net.socketinputstream.socketread0 Problem patterns
According to the various pages I've found on this issue I need to set the "com.sun.jndi.ldap.read.timeout" value. I've tried setting this in the jvm.config, but I found web pages that say you can't set it there. That it needs to be set in the jndi.properties file. All of the web pages I find for ColdFusion and jndi.properties are from CF9 and older, those paths appear to no longer be valid. I've tried JAVA_HOME\lib and runtime\lib. Neither worked, but I'm not sure how to verify that the jndi.properties file is even being loaded.
I also tried setting it on the calling page with
<cfset system = createObject("java", "java.lang.System")>
<cfset system.setProperty("com.sun.jndi.ldap.read.timeout","1000")>
but that doesn't appear to work, when I do system.getProperties() I can see it set there, but I suspect I'm not setting it right in the first place.
I do have the timeout value set on the cfldap call, and if I set it for a couple milliseconds I can force timeouts. The timeout value is being ignored though for these random hangs. The issue isn't with the specific LDAP call, because the exact same call reran will work fine.
I'm open to any suggestions anyone has for preventing the CFLDAP call getting stuck on "java.net.SocketInputStream.socketRead0"
Copy link to clipboard
Copied
@George____ , thanks for the update. I, too, have voted to get the bug fixed.