[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Management removing all messages on shutdown

clebert.suconic@jboss.com do-not-reply at jboss.com
Thu Aug 14 13:13:13 EDT 2008


I just found a bug recently introduced. Looking at the SVN Logs it was introduced by the recent work on management.

If you cleanly shutdown the server, Shutdown hooks are undeploying the queues, and all the messages are being be deleted on a regular shutdown.

I have locally changed the journal to throw an exception if delete was called, and this is the place it is happening:


java.lang.Exception: trace
  |         at org.jboss.messaging.core.journal.impl.JournalImpl.appendDeleteRecordTransactional(JournalImpl.java:611)
  |         at org.jboss.messaging.core.persistence.impl.journal.JournalStorageManager.storeDeleteTransactional(JournalStorageManager.java:231)
  |         at org.jboss.messaging.core.transaction.impl.TransactionImpl.addAcknowledgement(TransactionImpl.java:149)
  |         at org.jboss.messaging.core.server.impl.QueueImpl.deleteAllReferences(QueueImpl.java:481)
  |         at org.jboss.messaging.core.management.impl.MessagingServerControl.destroyQueue(MessagingServerControl.java:362)
  |         at org.jboss.messaging.jms.server.impl.JMSServerManagerImpl.destroyQueue(JMSServerManagerImpl.java:164)
  |         at org.jboss.messaging.jms.server.impl.JMSServerDeployer.undeploy(JMSServerDeployer.java:221)
  |         at org.jboss.messaging.core.deployers.impl.XmlDeployer.stop(XmlDeployer.java:230)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:56)
  |         at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:110)
  |         at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
  |         at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:97)
  |         at org.jboss.kernel.plugins.dependency.LifecycleAction.uninstallActionInternal(LifecycleAction.java:249)
  |         at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.uninstallAction(KernelControllerContextAction.java:169)
  |         at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.uninstallAction(KernelControllerContextAction.java:47)
  |         at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleUninstallAction(SimpleControllerContextAction.java:79)
  |         at org.jboss.dependency.plugins.action.AccessControllerContextAction.uninstall(AccessControllerContextAction.java:131)
  |         at org.jboss.dependency.plugins.AbstractControllerContextActions.uninstall(AbstractControllerContextActions.java:58)
  |         at org.jboss.dependency.plugins.AbstractControllerContext.uninstall(AbstractControllerContext.java:333)
  |         at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:1323)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:1009)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:936)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:986)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:936)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:986)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:936)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:986)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:936)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:986)
  |         at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:936)
  |         at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:463)
  |         at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:426)
  |         at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.undeployBean(AbstractKernelDeployer.java:384)
  |         at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.undeployBeans(AbstractKernelDeployer.java:363)
  |         at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.undeploy(AbstractKernelDeployer.java:162)
  |         at org.jboss.messaging.microcontainer.JBMBootstrapServer.undeploy(JBMBootstrapServer.java:127)
  |         at org.jboss.messaging.microcontainer.JBMBootstrapServer.shutDown(JBMBootstrapServer.java:199)
  |         at org.jboss.messaging.microcontainer.JBMBootstrapServer$Shutdown.run(JBMBootstrapServer.java:218)
  | 

We need to distinguish a real Queue being dropped to a shutdown event. On the latest you're not supposed to delete messages.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4170624#4170624

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4170624



More information about the jboss-dev-forums mailing list