Right, so I've tried to reproduce the issue again, but now the process does
indeed stop... perhaps I was imagining things :P 

However it still does not restart as I'd like. But if I'm interpreting your
previous comment correctly I could achieve this by creating a custom Locker
which wraps and delegates to the /DataBaseLeaseLocker/ and throws an
/IOException/ if /DataBaseLeaseLocker#keepAlive()/ returns false. And if I
have the following config in activemq.xml then it should then restart the
broker:

<bean id="ioExceptionHandler"
class="org.apache.activemq.util.DefaultIOExceptionHandler">
        <property name="stopStartConnectors"><value>true</value></property>
</bean>

Does this seem like a reasonable approach?



gtully wrote
> the idea is that it will stop and restart and on a restart become a slave
> again.
> 
> What is keeping the java process up? Can you post a stack trace.
> 
> We have the logic in the jdbcIoExceptionHandler to stopConnectors and
> restart when the lock can be required, but this kicks in when
> keepAlive gets an exception, because the db has been restarted for
> example.
> It may make sense to have this sort of failure option on keepAlive as
> an option. So rather than fail with false (shutdown)
> it can fail with an exception so that the IOException handler kicks in.
> 
> But for now, the question is  what is keeping the java process alive?
> 
> 
> 
> On 4 July 2013 17:51, hbakkum &lt;

> hayden.bakkum@

> &gt; wrote:
>> Thanks for this. I've managed to configure the database lease locker such
>> that the master will reclaim the lock if it is held by a slave. However,
>> I've encountered another issue while testing failover scenarios, that is,
>> if
>> a slave yields the lock due to the master starting then the slave broker
>> shuts down. What's odd here is that while the broker shuts down the java
>> process is still running. In this situation I would have expected (well,
>> at
>> least preferred :P) the slave to yield the lock, stop its transport
>> connectors and then continue its polling task to obtain the lock in the
>> event of another master failure.
>>
>> I've taken a look at the /Locker/ interface, in particular the
>> /keepAlive()/
>> method. The javadoc states that if this method returns false, then the
>> broker will indeed terminate, so unfortunately, it looks like a custom
>> /Locker/ implementation won't help me here either.
>>
>> Is there something I'm missing or any way of changing the broker
>> behaviour
>> when the lock is lost?
>>
>> Thanks,
>> Hayden.
>>
>>
>>
>> --
>> View this message in context:
>> http://activemq.2283324.n4.nabble.com/Setting-a-Master-broker-in-a-MasterSlave-configuration-tp4668815p4668884.html
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
> 
> 
> 
> -- 
> http://redhat.com
> http://blog.garytully.com





--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Setting-a-Master-broker-in-a-MasterSlave-configuration-tp4668815p4668928.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to