Re: An I/O error occured while sending to the backend.

Lists: pgsql-jdbc
From: Stephen McConnell <mcconnell_stephen(at)yahoo(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: An I/O error occured while sending to the backend.
Date: 2005-01-14 21:59:21
Message-ID: 20050114215921.61369.qmail@web41506.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

I am developing using the new PostgreSQL 8.0.0 rc5 under Windoz XP
(sorry).

I am also using Eclipse with the MyEclipseWorkbench and ACCESSING A
DATABASE ON localhost. In the code I make a valid connection and
immediately set up a prepared statement and execute a query.

The code is:

pstmt = connection.prepareStatement(SQL_GET_SEQUENCE);
pstmt.setString(1, this.name);
rs = pstmt.executeQuery();

The query is:

private static final String SQL_GET_SEQUENCE =
"SELECT " +
"seed " +
"FROM " +
"stocks.sequencer " +
"WHERE " +
"name = ?";

or
SELECT seed FROM stocks.sequencer WHEREname = 'test_sequence'

I am using the pg80b1.308jdbc3.jar jdbc driver.

The above query works through pgAdmin III and the MyEclipse Database
Explorer.... But when I run the above java code I receive the infamous

Exception: java.io.IOException: Stream closed
Stack Trace:
java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:38)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:151)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
at org.postgresql.core.PGStream.flush(PGStream.java:485)
at
org.postgresql.core.v3.QueryExecutorImpl.sendSync(QueryExecutorImpl.java:616)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:165)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:363)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:308)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:223)
at com.scawa.stockanalyzer.db.Sequencer.reseed(Sequencer.java:95)
at com.scawa.stockanalyzer.db.Sequencer.next(Sequencer.java:73)
at com.scawa.stockanalyzer.test.Tester.main(Tester.java:46)

Others have said this is a TCP/IP problem with a firewall, but it's
pretty apparent that since I'm accessing "localhost"
(jdbc:postgresql://localhost:5432/test_database) that It's not a
"firewall" problem UNLESS there's a problem with the Windoz XP
firewall.

Any ideas? Suggestions?

Stephen McConnell

=====


From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Stephen McConnell <mcconnell_stephen(at)yahoo(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: An I/O error occured while sending to the backend.
Date: 2005-01-15 07:21:12
Message-ID: 41E8C468.5020301@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Stephen McConnell wrote:

> Exception: java.io.IOException: Stream closed
> Stack Trace:
> java.io.IOException: Stream closed

> Others have said this is a TCP/IP problem with a firewall, but it's
> pretty apparent that since I'm accessing "localhost"
> (jdbc:postgresql://localhost:5432/test_database) that It's not a
> "firewall" problem UNLESS there's a problem with the Windoz XP
> firewall.

No, it doesn't look like a firewall problem -- that usually manifests as
a connection refused or a connection reset by peer. This looks like the
driver is closing the connection itself, but not invalidating the
connection. I'd suspect an earlier error on the connection is causing this.

Do you have a complete testcase I can try?

-O


From: Stephen McConnell <mcconnell_stephen(at)yahoo(dot)com>
To: Oliver Jowett <oliver(at)opencloud(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: An I/O error occured while sending to the backend.
Date: 2005-01-15 19:57:03
Message-ID: 20050115195704.9263.qmail@web41505.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

I'm gonna tell on myself on this one... and it embarrases me more than
I can say.

I had written a DBManager class that manages connections. It was a
first iteration and I was just using the simple
DriverManager.getConnection(....) method before tackling connection
pooling.

In the DBManager class where I had my "getConnection()" method, I had
my standard JDBC try... catch... finally.... block. I got the
connection, but in my finally block... like I ALWAYS do when I write a
try... catch... finally.... block, I closed the resources. One of
which was the "connection".... :(

Hence, the IO error.....

Thanks for the answer.... once I began looking at the code to give you
an example, I found it.

Stephen McConnell
--- Oliver Jowett <oliver(at)opencloud(dot)com> wrote:

> Stephen McConnell wrote:
>
> > Exception: java.io.IOException: Stream closed
> > Stack Trace:
> > java.io.IOException: Stream closed
>
> > Others have said this is a TCP/IP problem with a firewall, but it's
> > pretty apparent that since I'm accessing "localhost"
> > (jdbc:postgresql://localhost:5432/test_database) that It's not a
> > "firewall" problem UNLESS there's a problem with the Windoz XP
> > firewall.
>
> No, it doesn't look like a firewall problem -- that usually manifests
> as
> a connection refused or a connection reset by peer. This looks like
> the
> driver is closing the connection itself, but not invalidating the
> connection. I'd suspect an earlier error on the connection is causing
> this.
>
> Do you have a complete testcase I can try?
>
> -O
>

=====