Connections sometimes break, and the question is how to deal with it.
When your app is using a connection and it breaks you pretty much have
to start your unit of work over again. There's no way around this,
and it needs to be part of your app design.
Internally, what is supposed to happen is that the connection pool
detects that the connection is broken when you try to use it and
discards it., so your app will never again get the broken connection.
Depending on how you get connections, there may or may not be a built
in way to be notified by the db-specific driver code when a fatal
error has occurred on a connection. We've upgraded our support for
this a lot in geronimo 2.2 which will hopefully be released very
soon.... although I've been saying this for a long time. However,
your best bet is to upgrade and see if that fixes the problem.
thanks
david jencks
On Dec 5, 2009, at 9:32 AM, ericp56 wrote:
Hello,
I have a problem with the MySQL 3.1.12 connector. I occasionally get
"broken pipe" exceptions, and have to reset the J2EE connector to
resolve
it.
I see that I can set a "autoReconnect" parameter in the JDBC URL to
resolve
this.
1. Since the db pool wizard doesn't offer anything for parameters,
can I
add an "autoReconnect" element to the deployment plan and deploy it
that
way?
2. From the MySQL documentation:
autoReconnect - Should the driver try to re-establish stale and/or
dead
connections? If enabled the driver will throw an exception for a
queries
issued on a stale or dead connection, which belong to the current
transaction, but will attempt reconnect before the next query issued
on the
connection in a new transaction. The use of this feature is not
recommended,
because it has side effects related to session state and data
consistency
when applications don't handle SQLExceptions properly, and is only
designed
to be used when you are unable to configure your application to handle
SQLExceptions resulting from dead and stale connections properly.
Alternatively, investigate setting the MySQL server variable
"wait_timeout"
to some high value rather than the default of 8 hours.
I imagine there is no graceful way to handle this in our
applications, and
resetting the DB pool/connector is the only way to resolve it right
now, so
although they advise against it, #1 is the way to handle it, and not
#2.
Any thoughts?
Thanks,
Eric
The connections occasionally break, and the solution I see in MySQL
forums
is to add a parameter to the JDBC URL:
jdbc:mysql://(host):(port)/(db_name)?autoReconnect=true
The problem is, in the Geronimo DB pool wizard (2.1.4), there is no
way to
set the URL.
Can I modify the wizard's deployment plan and add in an element to
handle
this?
Thanks,
Eric
--
View this message in context:
http://old.nabble.com/MySQL-Broken-Pipe-tp26657535s134p26657535.html
Sent from the Apache Geronimo - Users mailing list archive at
Nabble.com.