You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by Narayanan <V....@Sun.COM> on 2008/02/18 07:37:40 UTC
using the EmbedConnection#handleExceptions method in failover
Hi,
While working on the failover issue in replication, I have a requirement
that I need to shutdown
the master database when a failover is successful. I use the logic that
throwing an exception
with Database severity should shutdown the database.
For this to happen from going through the EmbedConnection class I
concluded that I need to
parse the exception that is thrown with the handleExceptions method that
is part of this class.
The handleExceptions method basically tests the severity of the
exception thrown and performs
appropriate action.
Can a person who knows about this method better please tell me if I have
concluded correctly and
if what I think the handleExceptions method does is correct?
Narayanan
Re: using the EmbedConnection#handleExceptions method in failover
Posted by Jørgen Løland <Jo...@Sun.COM>.
Narayanan wrote:
> Hi,
>
> While working on the failover issue in replication, I have a requirement
> that I need to shutdown
> the master database when a failover is successful. I use the logic that
> throwing an exception
> with Database severity should shutdown the database.
>
> For this to happen from going through the EmbedConnection class I
> concluded that I need to
> parse the exception that is thrown with the handleExceptions method that
> is part of this class.
> The handleExceptions method basically tests the severity of the
> exception thrown and performs
> appropriate action.
>
> Can a person who knows about this method better please tell me if I have
> concluded correctly and
> if what I think the handleExceptions method does is correct?
>
> Narayanan
>
Hi Narayanan,
To make an exception shut down a database, there are a few requirements:
1) The exception must be database severity (SQLState xxxxx.D)
2) The thread that caused the exception must have the database context.
You get this for free as long as the client connection attempt has
called tr.startTransaction in EmbedConnection#creator
3) The exception must be a StandardException
I had a look at the master side failover code, and you have 1) and 2)
covered. However, the StandardException thrown from MasterController is
wrapped in an SQLException in BasicDatabase. I think DERBY-3428 can be
solved by not wrapping the exception.
--
Jørgen Løland