[
http://jira.jboss.com/jira/browse/JBMESSAGING-908?page=all ]
Tim Fox updated JBMESSAGING-908:
--------------------------------
Fix Version/s: 1.4.0.CR2
(was: 1.4.0.CR1)
Priority: Major (was: Critical)
As well as adding a FK constraint in the db config we need to make sure the message table
appeara before the message ref table in the default ddl in JDBCPersistenceManager and that
the insert/delete order is correct in JDBCPersistenceManager - this is non trivial.
Especially tricky for 2PC. We should also consider removing the storage of channel count
in the database. Remember the only time a single message is referenced more than once is
with a topic - we never share between nodes so storing in memory should be ok.
MySQL on Linux fails to load server after failover
--------------------------------------------------
Key: JBMESSAGING-908
URL:
http://jira.jboss.com/jira/browse/JBMESSAGING-908
Project: JBoss Messaging
Issue Type: Bug
Reporter: Tim Fox
Assigned To: Tim Fox
Fix For: 1.4.0.CR2
Sometimes, after failover occurs and a server is restarted, the server start fails with:
java.lang.IllegalStateException: Did not load correct number of messages, wanted:1 but
got:0
at
org.jboss.messaging.core.PagingChannelSupport.processReferences(PagingChannelSupport.java:591)
at org.jboss.messaging.core.PagingChannelSupport.doLoad(PagingChannelSupport.java:518)
at
org.jboss.messaging.core.plugin.postoffice.cluster.LocalClusteredQueue.mergeIn(LocalClusteredQueue.java:243)
at
org.jboss.messaging.core.plugin.postoffice.cluster.DefaultClusteredPostOffice.performFailover(DefaultClusteredPostOffice.java:2169)
at
org.jboss.messaging.core.plugin.postoffice.cluster.DefaultClusteredPostOffice.nodeLeft(DefaultClusteredPostOffice.java:2031)
at
org.jboss.messaging.core.plugin.postoffice.cluster.DefaultClusteredPostOffice.access$1800(DefaultClusteredPostOffice.java:98)
at
org.jboss.messaging.core.plugin.postoffice.cluster.DefaultClusteredPostOffice$HandleViewAcceptedRunnable.run(DefaultClusteredPostOffice.java:2400)
at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(QueuedExecutor.java:89)
at java.lang.Thread.run(Thread.java:595
or similar.
Analysing logs it seems this is because when the server crashed previously it did so and
partially committed a transaction, i.e inserted the ref but not the message.
My suspicion is that this is because the MySQL configuration being used is setup to use
the non transaction myISAAM storage which has no transaction support. But this needs to
be verified.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira