[ 
https://issues.apache.org/activemq/browse/AMQ-678?page=comments#action_36000 ] 

Jack Humphrey commented on AMQ-678:
-----------------------------------

I have written a JDBC adapter for ActiveMQ 3.2.2 that replaces this statement 
with a two-step temp table process in order to work with MySQL 4.0. Not sure if 
they have changed the JDBC adapter framework for ActiveMQ 4.0 or not, but I'm 
happy to share a howto if you want it.

> MessageCleanup fails with mysql 4.1.x
> -------------------------------------
>
>          Key: AMQ-678
>          URL: https://issues.apache.org/activemq/browse/AMQ-678
>      Project: ActiveMQ
>         Type: Bug

>   Components: Message Store
>     Versions: 4.0 M4
>     Reporter: Paul Focke
>     Priority: Minor

>
>
> When ActiveMQ does a message cleanup using mysql-4.1 for jdbc persistence an 
> error occurs.  ActiveMQ complains that the connection is already closed.  The 
> nested exception however is an EOFException.  The exception is thrown by 
> DefaultJDBCAdapter.doDeleteOldMessages(DefaultJDBCAdapter.java:544).  I poked 
> around I found that the sql statement it produces causes mysql to crash.  It 
> even causes mysqld to crash when entered in the mysql client console, so this 
> is not a Connector/J issue.  Here is the statement
> DELETE FROM ACTIVEMQ_MSGS WHERE ( EXPIRATION<>0 AND EXPIRATION<1144326387433) 
> OR ID <= ( SELECT min(ACTIVEMQ_ACKS.LAST_ACKED_ID) FROM ACTIVEMQ_ACKS WHERE 
> ACTIVEMQ_ACKS.CONTAINER=ACTIVEMQ_MSGS.CONTAINER)
> It can be found in Statements.java:220.
> I have tested this under mysql 4.1.12, 4.1.13 & 5.0.18.  The exceptions were 
> only thrown in mysql 4.1.  5.0 behaved as would be expected.
> Possible solutions would be : 
>  - rewrite the delete statement so that it doesn't kill mysqld : 
>     - I had a quick look into rewriting the statement but I haven't found how
>     - change the current delete into a select id from ... (this works) and 
> delete records 1 by 1 using the resultSet ( which really sucks when there are 
> lots of messages to be deleted )
>  - not use mysql-4.1

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to