Why expired connections in thin pool are force closed?
Hello! Force close of expired connections from pool prevent normal completion and execution of logoff triggers. Why are they force closed instead of normal close?
The main reason is that simply disconnecting the socket is guaranteed whereas sending the LogOff request may result in a hang -- which could impact the pool negatively. What do you mean by "expired connections"? When using a pool the general concept is that which connection is used is immaterial and the pool should be able to substitute connections or rebuild them at will.
"expired connections" are idle connections in pool closed after timeout, set by so named parameter in pool constructor. Our database tracks connections by means of logon/logoff triggers. These connections look like they were killed.
@golubovai what exactly does your app rely on the logoff trigger to do? From the app's point of view, the connection was no longer needed, or usable, when the app released it back to the pool. What do you gain from some, unknown time later running a trigger?
@anthony-tuininga we should revisit Thin/Thick behavior with the OCI team.
This issue has been automatically marked as inactive because it has not been updated recently. It will be closed if no further activity occurs. Thank you for your contributions.
I have pushed a patch that corrects this issue and have initated a build from which you can download pre-built development wheels once it completes. You can also build from source if you prefer. If you can test your scenario and confirm the patch works as expected, that would be appreciated!
This was included in python-oracledb 3.2.0 which was just released.