Comments (7)
I am committing a fix for the former. The trouble with the later is that the user can alter the isolation level of the connection, just like auto-commit, and therefore it needs to be reset.
from hikaricp.
Fix committed to dev
.
from hikaricp.
Thanks.
Regarding the caching thing, I thought of this:
Make getTransactionIsolation really cheap by caching the isolation level in a field in the wrapping Connection.
setTransactionIsolation does its thing and also writes to this field.
getConnection on the pool then can call the now cheap getTransactionIsolation and only call setTransactionIsolation if the default pool level is different, thus saving the roundtrip to the database.
But if that really is worth the added complexity is up to you.
from hikaricp.
It's not necessarily the complexity I worry about, I'm more concerned that there is a reason that PostgreSQL is required to make the roundtrip. Otherwise, why would they have implemented the driver that way?
from hikaricp.
That's a good point. Seems more like an optimization the driver should do if possible. I will check with the pgjdbc team.
from hikaricp.
You may be interested in this thread:
https://groups.google.com/forum/#!topic/hikari-cp/7hgIWvE7DiY
Basically, like PostgreSQL, this user found that SQL Server performs a roundtrip on setTransactionIsolation()
. I have checked in an optimization to the dev
branch that will only reset the transaction isolation level if it is detected that the user actually altered it. In the base case, this completely avoids the call.
from hikaricp.
Thanks for the info.
Just as a follow up:
The pgjdbc drivers setTransactionIsolation sets the isolation level through SQL. So nothing is preventing a user from altering the isolation level without the setTransactionIsolation-API.
I guess that's the reason why getTransactionIsolation has to roundtrip to the database to be certain. If one wants 100% equally configured connections to be handed out from the pool, I'm not sure if the setTransactionIsolation call can be avoided.
from hikaricp.
Related Issues (20)
- HikariCP Warning: "Driver does not support get/set network timeout for connections" HOT 1
- Another instance of dead pool, no new connection can be created
- `HikariProxyConnection` directly calls `delegate.getTransactionIsolation()`, causing a network call every time. HOT 1
- Why do Session Settings get reset on a connection?
- Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
- connectionTimeout property is not propagated to Postgres driver creating the connection
- Max-life-time expire cause application latency HOT 1
- Postgres Client thread getting stuck HOT 1
- dynamic pool growth
- From c3p0 to HikariCP: connection error
- DB connections in the pool are getting closed with `08S01` error on high load HOT 1
- [Question] recovery after Oracle database outage - properties to use?
- In the Android project environment, the connection fails and the message Socket closed is displayed HOT 1
- isConnectionDead logs warnings when the connection should simply be closed HOT 1
- Internal error in Java Runtime Environment
- Unit Test Case always reports error during execution
- Try-with-Resources Not Closing Database Connections for One Select Query HOT 1
- Make queue for Hikari instead Of throw SQL Exception when reached max active Connection HOT 1
- Idle connections are not getting released when used with Try-with-resources HOT 7
- Critical CVE-2024-1597 in dependencies HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hikaricp.