You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2008/08/29 11:16:52 UTC

[jira] Resolved: (AMQ-1911) Kaha store can not retrieve messages with non ASCII charcaters

     [ https://issues.apache.org/activemq/browse/AMQ-1911?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully resolved AMQ-1911.
-----------------------------

    Fix Version/s: 5.2.0
       Resolution: Fixed

fixed in rev 690155.

> 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
>            Assignee: Gary Tully
>            Priority: Critical
>             Fix For: 5.2.0
>
>
> 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.