To fix it, I defined the following other properties for all Oracle JDBC connections we have in our I.S:
Original Message:
Sent: 06/03/26 01:36 AM
From: Venkateshan Manickam
Subject: Can't disable JDBC adapter connection
Hi Renan,
This looks like a dead TCP socket rather than a DB or timeout issue. A firewall between IS and the DB is probably dropping idle connections silently, so the pool still thinks they're good. When one of those gets used, the driver does a socket read that never returns and the thread sits in a native read forever.
That's why the rest fails too - Disable waits for that connection to come back (it never does), and kill-thread sends a Java interrupt, which can't break a blocking socket read. So only a restart clears it. If you want to confirm, take a thread dump while it's hung and you'll see SocketInputStream.socketRead0 ... oracle.net...
The timeout ideas won't help here: query timeout fires Statement.cancel(), which goes over the same dead socket and hangs too, and login/connection timeout only covers connecting. Neither touches the socket layer.
What fixes it is a socket-level timeout. Cleanest is to set Network Timeout (msec) on the JDBC connection - try 120000, kept above your longest query. That maps to setNetworkTimeout() and can actually break a stuck read. If that field isn't there, add a driver property in Other Properties instead: Oracle thin → oracle.jdbc.ReadTimeout=120000, oracle.net.CONNECT_TIMEOUT=10000,
oracle.net.keepAlive=true; DataDirect (jdbc:wm:oracle://) → NetworkTimeout=120 (sec). The oracle.* ones don't apply to DataDirect, so check your data source class first.
I'd also lower OS tcp_keepalive_time below the firewall's idle timeout and turn on a pool validation query. But the real fix is getting that firewall idle timeout raised/disabled on the IS↔DB path - the rest is a safety net.
One heads-up: this is preventive. It stops new hangs but won't unfreeze one that's already stuck - for that, reload the package owning the connection to clear the pool without a full restart.
Hope that helps.
------------------------------
Venkateshan Manickam
Sr.Integration Specialist
Giniminds Solutions
Bangalore
------------------------------
Original Message:
Sent: Tue June 02, 2026 09:56 AM
From: Renan Kaic Lopes
Subject: Can't disable JDBC adapter connection
Dear Venkateshan Manickam,
Thank you for all information you added and sorry for my late response.
I understand that we can se the timeout properties in the connection properties. I think we're going to apply on all of them with a timeout limit of 1 hour, just to ensure that the flow service can be executed normally next time.
When you say to reload the user package, you mean to reload the package that contains the JDBC Adapter Service?
Thanks again!
------------------------------
Renan Kaic Lopes
------------------------------
Original Message:
Sent: Mon May 25, 2026 02:04 PM
From: Venkateshan Manickam
Subject: Can't disable JDBC adapter connection
Hi Renan,
Two angles I haven't seen mentioned that match this exactly.
Query timeout on the adapter service only fires if the JDBC connection is still alive. If a firewall between IS and
the DB has silently dropped the TCP socket - very common with idle pooled connections - the thread is stuck in a
native socket read forever and query timeout never kicks in. Fix is driver-level socket timeouts in the connection's
Other Properties: Oracle uses oracle.net.READ_TIMEOUT and oracle.net.CONNECT_TIMEOUT; SQL Server / MySQL / Postgres
all use socketTimeout. Enable TCP keepalive too.
On "click Yes but nothing happens" - IS waits for in-flight connections to return before completing the disable, so
when one is hung the disable just sits there with no UI feedback. Reload the user package that owns the connection
(Packages → Reload); that forces the pool down without restarting IS.
------------------------------
Venkateshan Manickam
------------------------------