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.

Reply via email to