From: | Craig Ringer <craig(at)postnewspapers(dot)com(dot)au> |
---|---|
To: | Rod <cckramer(at)gmail(dot)com> |
Cc: | pgsql-jdbc <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: After server restart I get - An I/O error occured while sending to the backend. |
Date: | 2010-05-18 11:42:09 |
Message-ID: | 4BF27D11.8020001@postnewspapers.com.au |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
On 18/05/2010 6:41 PM, Rod wrote:
> Hi,
>
> I have simple JDBC client app running on Jetty.
> Using 8.3 JDBC3 driver and PostgreSQL8.3 server running on localhost.
>
> Any time I restart the PostgresQL server I get SQL error:
> An I/O error occured while sending to the backend.
>
> It appears that my application's connection to the server is not
> re-established by some reason?
Pooled connections usually don't get cleaned up until they're discovered
to be dead. That happens when you try to use them and they break.
Just be prepared for this to happen. If you get a bad connection, grab a
new one and re-try your work.
Yes, you can "test" the connection first ... but something might go
wrong with it between testing it and starting to use it. You need to be
prepared to handle failure at any point and re-try your work. Make sure
to keep your work separated into clear units of work (wrapped as
transactions) so you have a clear idea of what you're up to.
>
> I am no expert in JDBC.
> First I was using plan JDBC. I thought that using DB connection pool
> will automagically reconnect and solve this problem.
> Switching to Apache commons DBCP did not change anything.
>
> What am I supposed to do to make it survive PostgreSQL server restart?
It can't, just as it can't survive connection loss for other reasons.
Your code must be prepared to deal with that.
--
Craig Ringer
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Jowett | 2010-05-18 12:37:39 | Re: JDBC Driver and timezones |
Previous Message | Rod | 2010-05-18 10:41:05 | After server restart I get - An I/O error occured while sending to the backend. |