[
https://forge.continuent.org/jira/browse/SEQUOIA-910?page=comments#action_13675
]
Guillaume Smet commented on SEQUOIA-910:
----------------------------------------
Gérard is using ConnectorJ 5.0.4.
Driver.connect() effectively always throws a SQLException. The problem is not
there.
I dig a bit further and it seems that the problem is in
getTransactionIsolation() which is used by Sequoia to "ping" the recovery log
connection (see RecoveryLog.checkDatabaseConnection()). There's a try but no
catch to wrap the eventual exception into a SQLException.
The code in mysql-connector-java-5.0.4/src/com/mysql/jdbc/Connection.java looks
like:
public int getTransactionIsolation() throws SQLException {
try {
blabla
if no valid resultset throws a SQLException
}
finally {
blabla
}
so if the connection is dead, the ConnectException is not catched.
This is obviously wrong so I suppose we should open a bug in MySQL's tracker.
Comments?
That said, I still think that we should find a way to fix this problem directly
in Sequoia.
> Undetected recovery log failure causes a major problem in replication
> ---------------------------------------------------------------------
>
> Key: SEQUOIA-910
> URL: https://forge.continuent.org/jira/browse/SEQUOIA-910
> Project: Sequoia
> Type: Bug
> Components: Core
> Versions: Sequoia 3.0
> Reporter: Guillaume Smet
>
>
> This is a followup of the thread
> https://forge.continuent.org/pipermail/sequoia/2007-February/004683.html on
> sequoia list.
> In RecoveryLog.getDatabaseConnection(), Sequoia catches RuntimeException and
> SQLException but not others. In the case of RuntimeException and
> SQLException, a problem to establish the connection is correctly handled
> (inserts in the recovery log are postponed) but not in the case of a
> ConnectException for instance.
> In the case reported by Gérard Bunel, the MySQL server hosting the recovery
> log is shutdown and it throws a java.net.ConnectException. Write queries are
> not logged in this recovery log and the failure of the recovery log is not
> detected by Sequoia. This leads to a synchronisation problem when restarting
> the recovery log and enabling the backend as the recovery logs of both
> controllers are not identical.
> IMHO we should catch every Exception instead of just SQLException in the last
> catch of getDatabaseConnection().
> Thoughts?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://forge.continuent.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia