On 9/29/14 2:55 AM, Kasper Sørensen wrote:
> OK thank you for your replies. I will suggest in the Apache MetaModel dev
> mailing list to do it in that layer instead then.
>
> On that subject ... do you know of a way for us to mark a connection
> invalid? I don't see any methods on BasicDataSource to do that - is there a
> way that you know of?

There is no simple way to do this, unfortunately.  I just opened
DBCP-426 to track this.  Patches welcome.

Phil
>
> 2014-09-25 3:04 GMT+02:00 Bernd Eckenfels <e...@zusammenkunft.net>:
>
>> Hello,
>>
>> Replaying statements is hard as You also have to keep session context,
>> understand various error categories and in case of modifying statements,
>> You also need to hook into transaction Management to make it fast, reliable
>> and cobsistent.
>>
>> The JDBC drivers of Oracle together with its universal cinnection pool
>> allow to retry select statements (TAF failover type select) as well as more
>> recently midifying statements with the help of the transaction guard
>> feature (http://docs.oracle.com/database/121/JJDBC/transactionguard.htm).
>>
>> For an ORM or Persistence Layer it might be a bit easier than for a low
>> Level connection pool. on the other hand i always wished for jdbc pools
>> with no fixed direct relation between logical and managed connection
>> objects.
>>
>> --
>> http://bernd.eckenfels.net
>>
>> ----- Ursprüngliche Nachricht -----
>> Von: "woon_san" <woon_...@yahoo.com.INVALID>
>> Gesendet: ‎25.‎09.‎2014 01:38
>> An: "Commons Developers List" <dev@commons.apache.org>
>> Betreff: RE: A reactive way to deal with stale connections
>>
>> Hi Kasper,
>>
>> It's an interesting feature, but I don't think that should belong to
>> commons-dbcp. Commons-dbcp module provides lower level JDBC api such as
>> DataSource and Connection, whereas your use case seems to be proper with a
>> higer level data access module.
>> You might want to take a look at that kind of higher level modules like
>> spring framework jdbc template:
>> -
>> http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/jdbc.html
>>
>> , which provides similar features such as transaction management for
>> instance and extensibility.
>> Probably there are orher data access libraries like this as well.
>>
>> Regards,
>>
>> Woonsan
>> (Sent via my mobile device. Apologies for any typos.)
>>
>> <div>-------- Original message --------</div><div>From: Kasper Sørensen <
>> i.am.kasper.soren...@gmail.com> </div><div>Date:09/24/2014  13:44
>> (GMT-05:00) </div><div>To: dev@commons.apache.org </div><div>Subject: A
>> reactive way to deal with stale connections </div><div>
>> </div>Hi,
>>
>> In many projects I have been working on we're using commons-dbcp, and in
>> particular the BasicDataSource. A common set-up there is to use
>> "testOnBorrow" and a validation query to ensure that borrowed JDBC
>> connections are working when we get them.
>>
>> The downside of this approach is that it's pretty heavy-weight to have to
>> test each borrowed connection when there's a high load on the system.
>>
>> So I wanted to bounce an idea I have for improving the way we validate
>> connections. Maybe it can even become a contribution to commons-dbcp, or
>> maybe it's a application-specific improvement.
>>
>> My idea is inspired by the "let it crash" (and retry) way of thinking.
>> Every time a connection would throw an exception, we would retry the latest
>> command. As such, each querying or updation operation would thus be wrapped
>> in a command, so that there's a central executor object that would manage
>> the retry mechanism etc.
>>
>> Here's a small example:
>>
>> -------
>>
>> Command c = new Command() {
>>   public void doWithConnection(Connection c) {
>>     // do some querying or some updation stuff with the connection
>>   }
>> }
>>
>> CommandExecutor executor = new CommandExecutor(dataSource);
>> executor.execute(c);
>>
>> -------
>>
>> We see issues with the connections very rarely, but we need to be able to
>> overcome it. I think this approach would archieve that. It could even
>> ensure that a transaction is created before executing the command, and
>> committed after the command. That way a failing command would not leave
>> behind side-effects.
>>
>> Or do you guys see reasons why this would not work properly?
>> Would it make sense to put into commons-dbcp you think?
>> (I am working also on Apache MetaModel (incubating) and would consider
>> doing it there, if you don't think it's good for commons-dbcp).
>>
>> Best regards,
>> Kasper Sørensen
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to