Обсуждение: Abort() doesn't abort backends which are in WAITING state

Поиск
Список
Период
Сортировка

Abort() doesn't abort backends which are in WAITING state

От
Sudalai
Дата:
Dear geeks,

When we try to abort backend process which are in "WAITING STATE" via
java.sql.Connection.abort(), socket in application server was closed, but
backend process doesn't get aborted. 
Backends get aborted only after it resources for which it waited.

Is there anyway we can abort those backend immediately?

We are using database version : 9.5.1, 9.4.0.  Driver version : 42.1.4 JDBC
42.

Thanks in advance. 

-
Sudalai



-----
sudalai
--
Sent from: http://www.postgresql-archive.org/PostgreSQL-jdbc-f2168246.html


Re: Abort() doesn't abort backends which are in WAITING state

От
rob stone
Дата:

On Mon, 2017-11-20 at 08:05 -0700, Sudalai wrote:
> Dear geeks,
> 
> When we try to abort backend process which are in "WAITING STATE" via
> java.sql.Connection.abort(), socket in application server was closed,
> but
> backend process doesn't get aborted. 
> Backends get aborted only after it resources for which it waited.
> 
> Is there anyway we can abort those backend immediately?
> 
> We are using database version : 9.5.1, 9.4.0.  Driver version :
> 42.1.4 JDBC
> 42.
> 
> Thanks in advance. 
> 
> -
> Sudalai
> 
> 
> 
> -----
> sudalai
> --
> Sent from: http://www.postgresql-archive.org/PostgreSQL-jdbc-f2168246
> .html
> 



Hi Sudalai,

I'm not a "geek" -- just giving my two cents worth.

java.sql.Connection.abort(Executor executor) may throw a SQLException
or a SecurityException.
Are either of these exceptions being thrown?

Are you closing the connection prior to trying the abort?

HTH,
Robert



Re: Abort() doesn't abort backends which are in WAITING state

От
Jorge Solórzano
Дата:
Hi Sudalai,

It looks that is a bug, or actually an incomplete implementation.

The java.sql.Connection.abort(Executor) should do this:

Terminates an open connection. Calling abort results in:
  • The connection marked as closed
  • Closes any physical connection to the database
  • Releases resources used by the connection
  • Insures that any thread that is currently accessing the connection will either progress to completion or throw an SQLException.

​But the ​current implementation looks that only mark the connection as closed at network level:
https://github.com/pgjdbc/pgjdbc/blob/279fb435b392114c45266ecef901bfd59470842a/pgjdbc/src/main/java/org/postgresql/core/QueryExecutor.java#L325



Jorge Solórzano


On Mon, Nov 20, 2017 at 12:11 PM, rob stone <floriparob@gmail.com> wrote:


On Mon, 2017-11-20 at 08:05 -0700, Sudalai wrote:
> Dear geeks,
>
> When we try to abort backend process which are in "WAITING STATE" via
> java.sql.Connection.abort(), socket in application server was closed,
> but
> backend process doesn't get aborted.
> Backends get aborted only after it resources for which it waited.
>
> Is there anyway we can abort those backend immediately?
>
> We are using database version : 9.5.1, 9.4.0.  Driver version :
> 42.1.4 JDBC
> 42.
>
> Thanks in advance.
>
> -
> Sudalai
>
>
>
> -----
> sudalai
> --
> Sent from: http://www.postgresql-archive.org/PostgreSQL-jdbc-f2168246
> .html
>



Hi Sudalai,

I'm not a "geek" -- just giving my two cents worth.

java.sql.Connection.abort(Executor executor) may throw a SQLException
or a SecurityException.
Are either of these exceptions being thrown?

Are you closing the connection prior to trying the abort?

HTH,
Robert