Return-Path: X-Original-To: apmail-activemq-dev-archive@www.apache.org Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5307149A7 for ; Thu, 7 Jul 2011 17:37:40 +0000 (UTC) Received: (qmail 10983 invoked by uid 500); 7 Jul 2011 17:37:40 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 10916 invoked by uid 500); 7 Jul 2011 17:37:39 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Received: (qmail 10898 invoked by uid 99); 7 Jul 2011 17:37:38 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 Jul 2011 17:37:38 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 Jul 2011 17:37:37 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id AB7DE4BB0A for ; Thu, 7 Jul 2011 17:37:16 +0000 (UTC) Date: Thu, 7 Jul 2011 17:37:16 +0000 (UTC) From: "Michael Alford (JIRA)" To: dev@activemq.apache.org Message-ID: <514637240.8231.1310060236683.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Created] (AMQ-3396) ActiveMQ fails to restart when there is a zero broker sequence ID MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 ActiveMQ fails to restart when there is a zero broker sequence ID ----------------------------------------------------------------- Key: AMQ-3396 URL: https://issues.apache.org/jira/browse/AMQ-3396 Project: ActiveMQ Issue Type: Bug Components: Message Store Affects Versions: 5.5.0 Environment: ActiveMQ v5.5.0 on Sun's JDK 1.6.0_23 OS: Windows XP 2002 with sp3 Database: Oracle10g using JDBC driver ojdbc6_g.jar v11.2.0.2 Reporter: Michael Alford Priority: Blocker ActiveMQ broker server fails to start as a Windows Service. A NullPointerException happens during startup and then ActiveMQ shuts down automatically. Only workaround discovered so far is to drop all the database tables before starting up the server. public long getLastMessageBrokerSequenceId() throws IOException { TransactionContext c = getTransactionContext(); try { long seq = getAdapter().doGetLastMessageStoreSequenceId(c); sequenceGenerator.setLastSequenceId(seq); long brokerSeq = 0; if (seq != 0) { byte[] msg = getAdapter().doGetMessageById(c, seq); if (msg != null) { Message last = (Message)wireFormat.unmarshal(new ByteSequence(msg)); brokerSeq = last.getMessageId().getBrokerSequenceId(); } else { LOG.warn("Broker sequence id wasn't recovered properly, possible duplicates!"); } } return brokerSeq; } catch (SQLException e) { JDBCPersistenceAdapter.log("JDBC Failure: ", e); throw IOExceptionSupport.create("Failed to get last broker message id: " + e, e); } finally { c.close(); } } When the byte array "msg" is not null but is populated with zeros, the wireFormat unmarshal call will return null. This then causes a NullPointerException on line 237 of JDBCPersiistenceAdapter. 2011-07-07 11:20:02,618 | DEBUG | Locking Query is SELECT * FROM V550_ACTIVEMQ_LOCK FOR UPDATE | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | WrapperSimpleAppMain 2011-07-07 11:20:02,649 | INFO | Becoming the master on dataSource: oracle.jdbc.pool.OracleDataSource@1557ee8 | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | WrapperSimpleAppMain 2011-07-07 11:20:02,649 | INFO | ActiveMQ 5.5.0-fuse-00-27 JMS Message Broker (FuseActiveMQ-Broker-550) is starting | org.apache.activemq.broker.BrokerService | WrapperSimpleAppMain 2011-07-07 11:20:02,649 | INFO | For help or more information please see: http://activemq.apache.org/ | org.apache.activemq.broker.BrokerService | WrapperSimpleAppMain 2011-07-07 11:20:04,774 | ERROR | Failed to start ActiveMQ JMS Message Broker. Reason: java.lang.NullPointerException | org.apache.activemq.broker.BrokerService | WrapperSimpleAppMain java.lang.NullPointerException at org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getLastMessageBrokerSequenceId(JDBCPersistenceAdapter.java:237) at org.apache.activemq.broker.region.DestinationFactoryImpl.getLastMessageBrokerSequenceId(DestinationFactoryImpl.java:145) at org.apache.activemq.broker.region.RegionBroker.(RegionBroker.java:122) at org.apache.activemq.broker.jmx.ManagedRegionBroker.(ManagedRegionBroker.java:104) at org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:1838) at org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:1832) at org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:1789) at org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:763) at org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.start(JDBCPersistenceAdapter.java:296) at org.apache.activemq.broker.BrokerService.start(BrokerService.java:490) at org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:60) 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:597) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1536) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.apache.xbean.spring.context.ResourceXmlApplicationContext.(ResourceXmlApplicationContext.java:64) at org.apache.xbean.spring.context.ResourceXmlApplicationContext.(ResourceXmlApplicationContext.java:52) at org.apache.activemq.xbean.XBeanBrokerFactory$1.(XBeanBrokerFactory.java:106) at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:106) at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:71) at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) at org.apache.activemq.console.command.StartCommand.startBroker(StartCommand.java:115) at org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:74) at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:143) at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:85) 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:597) at org.apache.activemq.console.Main.runTaskClass(Main.java:251) at org.apache.activemq.console.Main.main(Main.java:107) 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:597) at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) at java.lang.Thread.run(Thread.java:662) 2011-07-07 11:20:04,837 | INFO | ActiveMQ Message Broker (FuseActiveMQ-Broker-550, null) is shutting down | org.apache.activemq.broker.BrokerService | WrapperSimpleAppMain -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira