Implementation of query timeout

Поиск
Список
Период
Сортировка
Искать
От
Radosław Smogura
Тема
Implementation of query timeout
Дата
Msg-id
200910291519.58180.rsmogura@softperience.eu
Список
Дерево обсуждения
Re: Implementation of query timeout Radosław Smogura <rsmogura@softperience.eu>
Hello,

I send this message again, because there were problems with my email address, 
so it didn't reach mailinglist.

I read a TODO list, and I decided to help a bit. So I've tried to implement 
queryTimeout, currently ony for non-batch statements. You can see code, at
http://rsmogura.net/pgsql/pgsql_jdbc_querytimeout.tar.bz2
and analyze, chceck and test it.

Small description how it works.

1. When the query is executed it checks if timeout > 0.
2. If yes it creates TimerTask and add it to the queue, then sends the query 
to server.
3. On timeout and if statement hasn't ended cancelStatement is called().

I've used Timer to don't create multiple threads with each statement. The 
AbstractJdbc2 have setQueryTimeout method, so DataSources and 
PolledConnections can utilze it to set Timer shared for all connections.

The QueryExecutor has new method executeSynchronized (description in API). To 
prevent termination on next statement & run statements in current thread, the 
lock on QueryExecutor is needed (so no other thread will send other query 
until cancelStatement is fully called). This method can be more usefull then 
synchronized(...) block and can be used later.

Some new utilities class has been added.

The test code creates non tempolary tables to simulate long-run by creating 
data lock on two transactions.

If the JDBC will go to Java 5, some of this code can use new 
java.util.concurent API.

Kind regards,
Radek Smogura
В списке pgsql-jdbc по дате отправления
От: Kris Jurka
Дата:
Сообщение: Re: Explain with jdbc
От: Viktor Rosenfeld
Дата:
FAQ