Indeed I was referring to the tomcat jdbc-pool code, not mine :-).

Now, I would suggest to consider that this problem is more common than you
could imagine at first sight. First because this is randomly occuring, but
frequently enough so that it shows up in quite a few areas.
A few examples where this problem occurred and was filed (but not analyzed
down to the root cause):

Spring DataSource Txn Mgr :
https://jira.springsource.org/browse/SPR-8870?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel

Hyperic :
https://jira.hyperic.com/browse/HHQ-5054

If I'm correct, then I suggest that the behavior is corrected by default,
not requiring additional configuration. Especially so that most people use
the provided sample and documentation, which enables the validation
mechanism. Or maybe do it the other way round, have a configuration key
which allows to disable the rollback after validation... One last way would
have been to test against the auto commit state of the connection to decide
whether a rollback was necessary, but I believe that the pool does not
maintain the connection state for performance reasons (unless an
interceptor is configured to do it) and therefore would be an even more
detrimental hit on performance since would require a round-trip to the db
server...

In any case, let me know if you need me to provide more details or to file
this problem into the bug tracking system!

Regards

Pascal

2013/1/4 Christopher Schultz <ch...@christopherschultz.net>

> > I think Pascal is saying that the above snippet is in the Tomcat
> > JDBC code, not his.
>
> Whoops, I think you're right. That's a minor bug, but definitely one
> that should be fixed IMO.
>
> Also, if the validation query succeeds and the connection is in
> auto-commit mode, we may want to issue a rollback. I wouldn't want to
> do that without any additional configuration, though, because it would
> needlessly send ROLLBACK queries in many cases (such as other
> databases - MySQL doesn't get upset when I tried a simple, similar
> test - or when you don't intend to change the transaction isolation
> level, etc.).
>
> Perhaps a configuration directive like rollBackAfterValidationQuery or
> something?
>
> - -chris
>

Reply via email to