Re: [SQL] JDBC Statement.setQueryTimeout : is there plan to implement this? - Mailing list pgsql-jdbc

From Craig Ringer
Subject Re: [SQL] JDBC Statement.setQueryTimeout : is there plan to implement this?
Date
Msg-id 4EE97B85.50909@ringerc.id.au
Whole thread Raw
In response to Re: [SQL] JDBC Statement.setQueryTimeout : is there plan to implement this?  (Craig Ringer <ringerc@ringerc.id.au>)
Responses Re: Re: [SQL] JDBC Statement.setQueryTimeout : is there plan to implement this?
Re: Re: [SQL] JDBC Statement.setQueryTimeout : is there planto implement this?
List pgsql-jdbc

I've popped a question up here:

http://stackoverflow.com/questions/8514725/obtaining-a-java-util-timer-or-equivalent-in-a-javaee-friendly-way-that-works-on

to see if I can get some broader input on the issue of portable timers.

... and boy am I glad I did, thanks to Bauke Scholtz (BalusC) on SO.

It looks like we can probably use a ScheduledThreadPoolExecutor safely from within a Java EE container or servlet container, so long as:

- We never let EE application code that requires EE services - like servlet code, EJBs, etc - run on its thread(s); and

- We use a ServiceLoader in /META-INF/services to destroy it when the JDBC driver is unloaded, the war
  the JDBC driver is bundled in is undeployed or the app server is stopped;

That should provide the JDBC driver with a suitable timer mechanism.

Perhaps more excitingly, a generic ThreadPoolExecutor can be safely used within an EE container the same way, potentially allowing the JDBC driver to use threads for blocking I/O. That'd finally permit a version of PgConnection.getNotifications() that can be safely invoked without blocking when SSL is in use!

A driver thread pool could also help permanently fix those occasional deadlocks that happen due to buffer management issues in the JDBC driver.

I'll try to find time to do some testing and see if I can make this work or at least bash out a proof of concept.

--
Craig Ringer

pgsql-jdbc by date:

Previous
From: Craig Ringer
Date:
Subject: Re: [SQL] JDBC Statement.setQueryTimeout : is there plan to implement this?
Next
From: Віталій Тимчишин
Date:
Subject: Re: Re: [SQL] JDBC Statement.setQueryTimeout : is there plan to implement this?