activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Tully (JIRA)" <>
Subject [jira] [Resolved] (AMQ-3654) JDBC Master/Slave : Slave cannot acquire lock when the master loose database connection.
Date Wed, 13 Jun 2012 21:57:42 GMT


Gary Tully resolved AMQ-3654.

    Resolution: Fixed

Added a lease based data base locker. Use as follows from xml config with the 5.7-SNAPSHOT{code}

            <jdbcPersistenceAdapter lockKeepAlivePeriod="1000" lockAcquireSleepInterval="2000">
The optional IOExceptionHandler will pause/resume the transport connectors on any IO exception
related to access to the DB.
The lease based lock is acquired by blocking at start and retained by the keepAlivePeriod.
To retain, the lease is extended by the lockAcquireSleepInterval, so in theory the master
is always {code}lockAcquireSleepInterval-lockKeepAlivePeriod{code} ahead of the slave w.r.t
the lease.
The lease is dropped on normal shutdown.
The broker system clock is not in sync with the db, a maxAllowableDiffFromDBTime > 0 will
adjust the lease duration if the skew exceeds the absolute maxAllowableDiffFromDBTime value,
allowing the db to dictate the utc basis for the lease.
> JDBC Master/Slave : Slave cannot acquire lock when the master loose database connection.
> ----------------------------------------------------------------------------------------
>                 Key: AMQ-3654
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.5.0
>         Environment: Unix/Redhat 5.6
> ActiveMQ 5.5.0
> Oracle 10G
>            Reporter: Richard Martin
>            Assignee: Gary Tully
>            Priority: Critical
>             Fix For: 5.7.0
> Our configuration is JDBC Master/Slave with one master and one slave. When the master
is started, he acquire the database lock.
> Then when the slave is started, he wait to acquire the database lock. When the master
loose the network connection to the database, the lock in the database is not removed and
the slave connot acquire the database lock. In this situation, the master is unable to respond
to client (due to network failure)
> and the slave is not started because he can't acquire the database lock.
> When the master is killed, the slave can't acquire the database lock too. After the network
connection is restored, when the master starts, it cannot
> acquire lock to the database (because the lod lock is always present) so now, we have
two slaves and no master.
> Please, refer to this issue which is the same problem : AMQ-1958 

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message