[ 
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
Sequoia@lists.forge.continuent.org
https://forge.continuent.org/mailman/listinfo/sequoia

Reply via email to