activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From SuoNayi <suonayi2...@163.com>
Subject Re:lease-database-locker allowing multiple brokers to become master
Date Fri, 08 Feb 2013 11:45:26 GMT
Hi, lockAcquireSleepInterval should be greater than lockKeepAlivePeriod always.
My guess is that misconfiguration will case that the role of master broker would 
be switched once one of slaves requires the lease database lock.
You may have a look at https://issues.apache.org/jira/browse/AMQ-3654.



At 2013-02-06 03:44:39,"Travis Klotz" <travis.klotz@gmail.com> wrote:
>Ok,  i'm working with 5.7 and am trying out the lease-database-locker
>and am having issues with both of my test instances becoming master.
>I assume I must be doing something very obviously wrong but I can't
>figure it out.
>
>I'm starting with a base 5.7 windows zip setup run from the command
>line (no services).  I add my oracle database driver to the lib/extra
>directory.  I modify activemq.xml, change the broker name to "svr1",
>modify the persistenceAdapter to look like this:
>
><persistenceAdapter>
>   <jdbcPersistenceAdapter dataSource="#oracle-ds" lockKeepAlivePeriod="10000">
>      <locker>
>          <lease-database-locker lockAcquireSleepInterval="5000" />
>      </locker>
>   </jdbcPersistenceAdapter>
></persistenceAdapter>
>
>Remove the jetty include,  change the openwire port number (to avoid
>conflicting with my current 5.6 instance) like so:
>
><transportConnectors>
>   <!-- DOS protection, limit concurrent connections to 1000 and frame
>size to 100MB -->
>   <transportConnector name="openwire"
>uri="tcp://0.0.0.0:51616?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>
></transportConnectors>
>
>And then add my database datasource after the broker definition:
>
><bean id="oracle-cpds"
>class="org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS">
>   <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
>   <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
>   <property name="user" value="activemq"/>
>   <property name="password" value="activemq"/>
></bean>
>
><bean id="oracle-ds"
>class="org.apache.commons.dbcp.datasources.SharedPoolDataSource"
>destroy-method="close">
>   <property name="connectionPoolDataSource" ref="oracle-cpds"/>
>   <property name="testOnBorrow" value="true" />
>   <property name="testWhileIdle" value="true" />
>   <property name="validationQuery" value="select * from dual" />
>   <property name="maxActive" value="10" />
>   <property name="timeBetweenEvictionRunsMillis" value="300000" />
></bean>
>
>I then fire up the server and everything seems to be working properly.
> The lock table says "svr1" and the timestap is updated every few
>seconds.
>
>I shutdown the server,  copy the entire install directory to another
>location on the same machine and modify the copied activemq.xml file.
>I change the broker name to "svr2" and update the port number "41616".
>  Next I start up SVR1,  everything goes as expected, database is
>updated, JMX reports this instance is not a slave.   Next I start up
>SVR2,  it loads says it is attempting to acquire the lease and then
>says that it is becoming master, the database is updated with SVR2 and
>JMX reports that SVR2 is not the slave.   However nothing seems to
>have changed on SVR1,  nothing new in the logs,  JMX still reports
>that it is still not the save instance.
>
>About 10% of the time when I start SVR2,  it tries to get the lease
>and fails,  waits its 5 seconds and tries again,  succeeds and once
>again leaveing SVR1 in some kind of limbo state.
>
>Any ideas what I'm doing wrong?
>
>Travis

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message