Обсуждение: Error 08S01 (COMMUNICATION_ERROR)
Hi,
I’m using PostgresSQL 7.4.7, pg74.215.jdbc3.jar in a computer which has Debian GNU/Linux 3.1. Sometimes, when the database’s connection is going to close I get the next PSQLException:
org.postgresql.util.PSQLException: An I/O error has occured while flushing the output - Exception: java.net.SocketException:
Socket closed
Stack Trace:
java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:124)
at org.postgresql.core.PGStream.flush(PGStream.java:411)
at org.postgresql.jdbc1.AbstractJdbc1Connection.closeV3(AbstractJdbc1Connection.java:1147)
at org.postgresql.jdbc1.AbstractJdbc1Connection.close(AbstractJdbc1Connection.java:1133)
………
End of Stack Trace
at org.postgresql.core.PGStream.flush(PGStream.java:415)
at org.postgresql.jdbc1.AbstractJdbc1Connection.closeV3(AbstractJdbc1Connection.java:1147)
at org.postgresql.jdbc1.AbstractJdbc1Connection.close(AbstractJdbc1Connection.java:1133)
at com.seglan.helena.BDConn.close(BDConn.java:112)
at com.seglan.helena.aplicaciones.DownloadDevolD.finalize(DownloadDevolD.java:154)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
I have catch this exception and I have got…
PSQLException's error code: 0
PSQLException's cause: null
PSQLException's sql state: 08S01
The PSQLException’s sql state tell me about COMMUNICATION ERROR but PSQLException’s error code tell me about Successful Completion. I dont know whether there is an error. I am confuse.
Does anyone explain me why happen this?
Thanks in advance.
Jaime Vizán wrote: > java.net.SocketException: Socket closed > at org.postgresql.core.PGStream.flush(PGStream.java:415) > at org.postgresql.jdbc1.AbstractJdbc1Connection.closeV3(AbstractJdbc1Connection.java:1147) > at org.postgresql.jdbc1.AbstractJdbc1Connection.close(AbstractJdbc1Connection.java:1133) > at com.seglan.helena.BDConn.close(BDConn.java:112) > at com.seglan.helena.aplicaciones.DownloadDevolD.finalize(DownloadDevolD.java:154) > at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method) > at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83) > at java.lang.ref.Finalizer.access$100(Finalizer.java:14) > at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.ja Closing connections from a finalizer can be a bit hairy, as the connection itself also has a finalizer that closes it down and it's not defined which one runs first .. If the connection's finalizer is run first, you will see this exception. > The PSQLException’s sql state tell me about COMMUNICATION ERROR but > PSQLException’s error code tell me about Successful Completion. I dont > know whether there is an error. I am confuse. The error code is vendor-specific, and the postgresql driver doesn't assign any meaning to it: it is always 0. Use the SQLState, which is somewhat standardized. -O