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)
- How to handle OAuth connections that require manually updating the token
- getConnection Method is not throwing exception even when the key is expired HOT 1
- Throwing NullPointerException when value doesn't exist.
- Hikari CP Connection Recovery Problem After DB Outage HOT 2
- Support environment variables in properties file
- Properties in configuration files: use dataSource prefix ?
- Hikari + Snowflake + Oauth with token refresh HOT 1
- Introduce Extension Point To Force Eviction
- Handle Read-Only Mode After Cluster Failover HOT 1
- The connection adder thread pool is permanently blocked
- Available connections in HikariPool occassionaly drop to zero
- java.sql.SQLFeatureNotSupportedException: Feature not implemented: No details. HOT 1
- Question : IdleTimeOut Best Practice
- Developer experience: allow configuring HikariCP with `java.time.Duration` instead of millisecond / second parameters
- The HikariDataSource.getConnection() method does not implement a fair borrow mechanism HOT 1
- question: how does `prepStmtCacheSize` property work
- A question of source code
- [Question] HikariCP tag metrics
- HikariCP Warning: "Driver does not support get/set network timeout for connections"
- Another instance of dead pool, no new connection can be created
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.