[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] [Commented] (AMQ-4841)  lease-database-locker does not use the configured tablePrefix in UPDA
From:       "Pat Fox (JIRA)" <jira () apache ! org>
Date:       2013-10-31 19:39:20
Message-ID: JIRA.12676937.1383248030270.2673.1383248360639 () arcas
[Download RAW message or body]


    [ https://issues.apache.org/jira/browse/AMQ-4841?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13810608#comment-13810608 \
] 

Pat Fox commented on AMQ-4841:
------------------------------

WORKAROUND
============
A simple workaround to this is to reorder the configured elements within  \
"jdbcPersistenceAdapter" element so "locker" is after the "statement" element.

{code}

<persistenceAdapter>
    <jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#mysql-ds" \
lockKeepAlivePeriod="5000">  <statements>
	  <statements tablePrefix="TTT_" messageTableName="AMQ_MSGS" \
durableSubAcksTableName="AMQ_ACKS" lockTableName="AMQ_LOCK"/>  </statements>
        <adapter>
	  <mysql-jdbc-adapter/>
	</adapter>
	<locker>
	  <lease-database-locker lockAcquireSleepInterval="10000"/>
	</locker>
  </jdbcPersistenceAdapter>
</persistenceAdapter>

{code}

The above config results in the locker using the prefix table name in the UPDATE \
statement

{code}
...
2013-10-30 14:36:01,041 | DEBUG | jdbcBroker, lease keepAlive Query is UPDATE \
TTT_AMQ_LOCK SET BROKER_NAME=?, TIME=? WHERE BROKER_NAME=? AND ID = 1 | \
                org.apache.activemq.store.jdbc.LeaseDatabaseLocker | ActiveMQ JDBC PA \
                Scheduled Task
...
{code}


> lease-database-locker does not use the configured tablePrefix in UPDATE statement
> ----------------------------------------------------------------------------------
> 
> Key: AMQ-4841
> URL: https://issues.apache.org/jira/browse/AMQ-4841
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.9.0
> Environment: - tested on latest trunk
> Reporter: Pat Fox
> Attachments: JDBCLockTablePrefixTest.java
> 
> 
> Using the configuration
> {code}
> <persistenceAdapter>
> <jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#mysql-ds" \
> lockKeepAlivePeriod="5000">  <locker>
> 					<lease-database-locker lockAcquireSleepInterval="10000"/>
> 				</locker>
> 				<statements>
> 					<statements tablePrefix="TTT_" messageTableName="AMQ_MSGS" \
> durableSubAcksTableName="AMQ_ACKS" lockTableName="AMQ_LOCK"/>  </statements>
> 		      <adapter>
> 					<mysql-jdbc-adapter/>
> 				</adapter>
> 			</jdbcPersistenceAdapter>
> 		</persistenceAdapter>
> {code}
> The logging show the Lock table was created WITH the configured prefix but the \
> lease locker UPDATE statement does not use that prefix {code}
> 2013-10-30 14:33:03,245 | DEBUG | Executing SQL: CREATE TABLE TTT_AMQ_LOCK( ID \
> BIGINT NOT NULL, TIME BIGINT, BROKER_NAME VARCHAR(250), PRIMARY KEY (ID) ) \
>                 ENGINE=INNODB | \
>                 org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter | main
> ...
> 2013-10-30 14:33:10,889 | DEBUG | jdbcBroker, lease keepAlive Query is UPDATE \
> ACTIVEMQ_LOCK SET BROKER_NAME=?, TIME=? WHERE BROKER_NAME=? AND ID = 1 | \
> org.apache.activemq.store.jdbc.LeaseDatabaseLocker | ActiveMQ JDBC PA Scheduled \
> Task {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic