Thread: Abort() doesn't abort backends which are in WAITING state
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
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
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. Callingabort
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:
Hi Sudalai,
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
>
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