Kaha store can not retrieve messages with non ASCII charcaters
--------------------------------------------------------------
Key: AMQ-1911
URL: https://issues.apache.org/activemq/browse/AMQ-1911
Project: ActiveMQ
Issue Type: Bug
Components: Message Store
Affects Versions: 5.2.0
Environment: Producer: Windows XP , Broker: Windows 2003 Server,
Consumer Windows 2003 Server, all activemq-5.2-20080803.231633-26
Reporter: Kai Pruente
Priority: Critical
Scenario:
A client with the host name "meißen" (German special character ß aka sz) sends
an ObjectMessage to a persistent queue.
This message goes from the client to the broker and from the broker to the kaha
store without problems.
After that, the broker cannot read it from the kaha store. Error message:
ERROR 2008-08-21 12:14:10.906 AbstractStoreCursor - Failed to fill batch
java.io.IOException: Failed to read to journal for: offset = 4770274, file = 9,
size = 2317, type = 0. Reason: java.io.UTFDataFormatException: bad string
at
org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
at
org.apache.activemq.store.amq.AMQPersistenceAdapter.createReadException(AMQPersistenceAdapter.java:637)
at
org.apache.activemq.store.amq.AMQPersistenceAdapter.readCommand(AMQPersistenceAdapter.java:523)
at
org.apache.activemq.store.amq.AMQMessageStore.getMessage(AMQMessageStore.java:432)
at
org.apache.activemq.store.amq.RecoveryListenerAdapter.recoverMessageReference(RecoveryListenerAdapter.java:54)
at
org.apache.activemq.store.kahadaptor.KahaReferenceStore.recoverReference(KahaReferenceStore.java:82)
at
org.apache.activemq.store.kahadaptor.KahaReferenceStore.recoverNextMessages(KahaReferenceStore.java:120)
at
org.apache.activemq.store.amq.AMQMessageStore.recoverNextMessages(AMQMessageStore.java:533)
at
org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(QueueStorePrefetch.java:75)
at
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:188)
at
org.apache.activemq.broker.region.cursors.AbstractStoreCursor.hasNext(AbstractStoreCursor.java:104)
at
org.apache.activemq.broker.region.cursors.StoreQueueCursor.hasNext(StoreQueueCursor.java:136)
at org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1108)
at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1196)
at org.apache.activemq.broker.region.Queue.iterate(Queue.java:951)
at
org.apache.activemq.thread.DeterministicTaskRunner.runTask(DeterministicTaskRunner.java:84)
at
org.apache.activemq.thread.DeterministicTaskRunner$1.run(DeterministicTaskRunner.java:41)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.UTFDataFormatException: bad string
at
org.apache.activemq.util.DataByteArrayInputStream.readUTF(DataByteArrayInputStream.java:286)
at
org.apache.activemq.openwire.v3.BaseDataStreamMarshaller.looseUnmarshalString(BaseDataStreamMarshaller.java:572)
at
org.apache.activemq.openwire.v3.ProducerIdMarshaller.looseUnmarshal(ProducerIdMarshaller.java:115)
at
org.apache.activemq.openwire.OpenWireFormat.looseUnmarshalNestedObject(OpenWireFormat.java:471)
at
org.apache.activemq.openwire.v3.BaseDataStreamMarshaller.looseUnmarsalCachedObject(BaseDataStreamMarshaller.java:488)
at
org.apache.activemq.openwire.v3.MessageIdMarshaller.looseUnmarshal(MessageIdMarshaller.java:115)
at
org.apache.activemq.openwire.OpenWireFormat.looseUnmarshalNestedObject(OpenWireFormat.java:471)
at
org.apache.activemq.openwire.v3.BaseDataStreamMarshaller.looseUnmarsalNestedObject(BaseDataStreamMarshaller.java:467)
at
org.apache.activemq.openwire.v3.MessageMarshaller.looseUnmarshal(MessageMarshaller.java:210)
at
org.apache.activemq.openwire.v3.ActiveMQMessageMarshaller.looseUnmarshal(ActiveMQMessageMarshaller.java:102)
at
org.apache.activemq.openwire.v3.ActiveMQObjectMessageMarshaller.looseUnmarshal(ActiveMQObjectMessageMarshaller.java:102)
at
org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:364)
at
org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:204)
at
org.apache.activemq.store.amq.AMQPersistenceAdapter.readCommand(AMQPersistenceAdapter.java:521)
... 17 more
ERROR 2008-08-21 12:14:10.906 AbstractStoreCursor - Failed to fill batch
Unfortunately the problem occurs first in the broker. This makes it very
difficult to find out the real cause of the problem, the host name with a
special character.
Further on it is not possible to recover from this problem and even worse all
new messages which are put into this kaha store will be also lost.
Special characters within the message (TextMessage, MappedMessage and
ObjectMessage seems to be ok.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.