Subject Re: [Firebird-Java] Re: socket timeout
Author Mark Rotteveel
On 29-10-2012 11:20, Mark Rotteveel wrote:
> On Mon, 29 Oct 2012 09:20:38 -0000, "hugo.larson" <hugo.larson@...>
> wrote:
>> I'm trying to reduce the timeout time when i connect to a database and
> the
>> database is down, or the server its on is down.
>> Right now it take more than 10 seconds for an exception to be thrown
> which
>> make my GUI unresponsive.
>> Roman suggested:
>> But it does not work for me.
>> I'm using Firebird 1.5.3 with Jbuilder and jaybird 2.1.6
> The so_timeout specifies the amount of time that a read() call on the
> socket will block. This is to detect lost connections that weren't
> explicitly reset or disconnected, or just to limit the amount of time that
> a read() call will block. See the description on Socket.setSoTimeout()
> The problem you are referring to is the connect timeout, you can't
> currently control that in Jaybird (maybe there is a standard Java system
> property for that, but I can't find it right now, I'll see if I can find it
> tonight).

Unfortunately there is no general Java system property that controls the
connect timeout. I created a ticket to have Jaybird use a connect

As to a work around to prevent it from blocking your GUI: don't open the
connection on the GUI thread, but use something that offloads the work
to a separate thread (eg SwingWorker if you are using Swing, or a
general Executor(Service) as obtained from

Also: if you also keep so_timeout: make sure it is big enough, because
if you execute a query that takes very long to prepare or execute, then
setting it to a too low number could actually result in errors if the
prepare or execution time is longer than the so_timeout.

Mark Rotteveel