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

Christopher L. Shannon commented on AMQ-5995:
---------------------------------------------

[~awood] - Are you using KahaDB? The KahaDB index contains the Openwire version 
used so there should be no upgrade issue as it will fall back to the old 
version automatically (except this does fail if you remove the index and 
rebuild) This strategy does not work for JDBC however.

Also as Tim pointed out back in 2015 you can set the Store open wire version 
explicitly on the BrokerService and then that version will be used and will 
allow you to read/consume old messages.

> ActiveMQ exits on startup with UTFDataFormatException: bad string
> -----------------------------------------------------------------
>
>                 Key: AMQ-5995
>                 URL: https://issues.apache.org/jira/browse/AMQ-5995
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.12.0
>            Reporter: Gijsbert van den Brink
>            Priority: Major
>
> When upgrading from 5.11.1 to 5.12, ActiveMQ does not start and exits with an 
> error (see full stack trace below). The issue occurs when ActiveMQ reads a 
> message from the store (in my case an Oracle database using 
> JDBCPersistenceAdapter) that was stored in 5.11.1 and tries to read in 
> 5.12.0. 
> Tim Bain sugested on the mailing list that maybe the Openwire format is 
> incompatible between 5.11.1 and 5.12.0. One thing I noticed when debugging 
> this is that 5.11.1 uses v6.MessageIdMarshaller, while 5.12.0 uses v11. Not 
> sure if that has anything to do with this issue though.
> ERROR o.a.activemq.broker.BrokerService - Failed to start Apache ActiveMQ 
> ([eda2e5a4c4d0, null], {}) 
> java.io.UTFDataFormatException: bad string 
>         at 
> org.apache.activemq.util.DataByteArrayInputStream.readUTF(DataByteArrayInputStream.java:315)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.v11.BaseDataStreamMarshaller.looseUnmarshalString(BaseDataStreamMarshaller.java:571)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.v11.MessageIdMarshaller.looseUnmarshal(MessageIdMarshaller.java:122)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.OpenWireFormat.looseUnmarshalNestedObject(OpenWireFormat.java:473)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.v11.BaseDataStreamMarshaller.looseUnmarsalNestedObject(BaseDataStreamMarshaller.java:466)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.v11.MessageMarshaller.looseUnmarshal(MessageMarshaller.java:220)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.v11.ActiveMQMessageMarshaller.looseUnmarshal(ActiveMQMessageMarshaller.java:101)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.v11.ActiveMQObjectMessageMarshaller.looseUnmarshal(ActiveMQObjectMessageMarshaller.java:101)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:366)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:200)
>  ~[activemq-client-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getLastMessageBrokerSequenceId(JDBCPersistenceAdapter.java:266)
>  ~[activemq-jdbc-store-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.region.DestinationFactoryImpl.getLastMessageBrokerSequenceId(DestinationFactoryImpl.java:147)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.region.RegionBroker.<init>(RegionBroker.java:130) 
> ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.jmx.ManagedRegionBroker.<init>(ManagedRegionBroker.java:112)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:2297)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:2290)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:2247)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:981) 
> ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.getAdminConnectionContext(BrokerService.java:2518)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.startVirtualConsumerDestinations(BrokerService.java:2657)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.startDestinations(BrokerService.java:2509)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.doStartBroker(BrokerService.java:692)
>  ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.startBroker(BrokerService.java:684) 
> ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerService.start(BrokerService.java:605) 
> ~[activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:73)
>  [activemq-spring-5.12.0.jar:5.12.0] 
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.7.0_75] 
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
> ~[na:1.7.0_75] 
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[na:1.7.0_75] 
>         at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_75] 
>         at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1640)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1581)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1511)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636)
>  [spring-beans-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934)
>  [spring-context-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
>  [spring-context-3.2.11.RELEASE.jar:3.2.11.RELEASE] 
>         at 
> org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)
>  [xbean-spring-3.18.jar:3.18] 
>         at 
> org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)
>  [xbean-spring-3.18.jar:3.18] 
>         at 
> org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:104)
>  [activemq-spring-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:104)
>  [activemq-spring-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:67)
>  [activemq-spring-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) 
> [activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) 
> [activemq-broker-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87)
>  [activemq-console-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:62)
>  [activemq-console-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:154)
>  [activemq-console-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:62)
>  [activemq-console-5.12.0.jar:5.12.0] 
>         at 
> org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) 
> [activemq-console-5.12.0.jar:5.12.0] 
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.7.0_75] 
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
> ~[na:1.7.0_75] 
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[na:1.7.0_75] 
>         at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_75] 
>         at org.apache.activemq.console.Main.runTaskClass(Main.java:262) 
> [activemq.jar:5.12.0] 
>         at org.apache.activemq.console.Main.main(Main.java:115) 
> [activemq.jar:5.12.0] 
> 2015-09-12 12:05:45,323 INFO  o.a.activemq.broker.BrokerService - Apache 
> ActiveMQ 5.12.0 (eda2e5a4c4d0, null) is shutting down 
> 2015-09-12 12:05:45,324 INFO  o.a.a.broker.TransportConnector - Connector 
> openwire stopped 
> See also: 
> http://activemq.2283324.n4.nabble.com/ActiveMQ-exits-on-startup-with-UTFDataFormatException-bad-string-tc4701955.html



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to