@Claus

Patch seems to work fine, I got my soak test working, Thanks!


Claus Ibsen-2 wrote:
> 
> Hi
> 
> Thanks a lot for your findings.
> 
> I have created a ticket
> https://issues.apache.org/activemq/browse/CAMEL-2215
> 
> And will commit a fix in short time.
> Feel free to try with latest code.
> 
> 
> On Tue, Nov 24, 2009 at 1:54 AM, tide08 <[email protected]> wrote:
>>
>> So looks like CaseInsensitiveMap is not serializable :(
>>
>> Map.Entry is non-serializable and so java.util.HashMap defines those as
>> transient so that serialization of that member does not happen. So
>> CaseInsenstiveMap should also define its member "entrySetView" as
>> transient
>> or if it needs to be serialized CaseInsenstiveMap should implement
>> writeObject()/readObject().
>>
>> Here is the unit test which fails on serialization:
>>
>> @Test
>>    public void testInsensitiveMapSerialization() throws IOException,
>> ClassNotFoundException {
>>        CaseInsensitiveMap testMap = new CaseInsensitiveMap();
>>        testMap.put("key", "value");
>>        testMap.entrySet();
>>
>>        ByteArrayOutputStream bStream = new ByteArrayOutputStream();
>>
>>        ObjectOutputStream objStream = new ObjectOutputStream(bStream);
>>        objStream.writeObject(testMap);
>>
>>        ObjectInputStream inStream = new ObjectInputStream(new
>> ByteArrayInputStream(bStream.toByteArray()));
>>        CaseInsensitiveMap testMapCopy = (CaseInsensitiveMap)
>> inStream.readObject();
>>
>>        Assert.assertTrue(testMapCopy.containsKey("key"));
>>    }
>>
>>
>>
>> tide08 wrote:
>>>
>>> I have soak test with following route and it seems to fail with
>>> following
>>> error. I am using camel 2.1-SNAPSHOT.
>>>
>>> I am not sure why that happens -
>>>
>>> <route>
>>>           <from uri="dataset:messageDataSet?produceDelay=10"/>
>>>           <to uri="proxySender" />
>>> </route>
>>> <route>
>>>           <from uri="activemq:testQueue"/>
>>>           <to uri="dataset:messageDataSet?produceDelay=10"/>
>>> </route>
>>>
>>> ProxySender instead is just a custom processor which uses camelTemplate
>>> and camel-jms to send message to "activemq:testQueue" on a standalone
>>> broker.
>>>
>>> I tried using the proxySender without using DataSet and it seems to work
>>> just fine. But when used with DataSet it seems to fail while storing
>>> message (ActiveMQObjectMessage.storeContent() ) - DataSet header
>>> {CamelDataSetIndex=0}. CaseInsensitiveMap fails to serialize?
>>>
>>> Any ideas on what may be wrong?
>>>
>>> Thread Stack:
>>>
>>> Daemon Thread [Camel thread 0: DataSetComponent] (Suspended)
>>>       ActiveMQObjectMessage.storeContent() line: 104
>>>       ActiveMQObjectMessage.setObject(Serializable) line: 155
>>>       ActiveMQSession.createObjectMessage(Serializable) line: 325
>>>       PooledSession.createObjectMessage(Serializable) line: 149
>>>       JmsBinding.createJmsMessage(Exchange, Object, Map<String,Object>,
>>> Session, CamelContext) line: 489
>>>       JmsBinding.makeJmsMessage(Exchange, Message, Session, Exception)
>>> line:
>>> 277
>>>       JmsProducer$2.createMessage(Session) line: 316
>>>       JmsConfiguration$CamelJmsTemplate.doSendToDestination(Destination,
>>> MessageCreator, JmsConfiguration$MessageSentCallback, Session) line: 221
>>>
>>> JmsConfiguration$CamelJmsTemplate.access$100(JmsConfiguration$CamelJmsTemplate,
>>> Destination, MessageCreator, JmsConfiguration$MessageSentCallback,
>>> Session) line: 164
>>>       JmsConfiguration$CamelJmsTemplate$3.doInJms(Session) line: 198
>>>      
>>> JmsConfiguration$CamelJmsTemplate(JmsTemplate).execute(SessionCallback,
>>> boolean) line: 471
>>>       JmsConfiguration$CamelJmsTemplate.send(String, MessageCreator)
>>> line: 195
>>>       JmsProducer.doSend(boolean, String, Destination, MessageCreator,
>>> DeferredRequestReplyMap$DeferredMessageSentCallback) line: 375
>>>       JmsProducer.processInOnly(Exchange) line: 320
>>>       JmsProducer.process(Exchange) line: 150
>>>       ProducerCache$1.doInProducer(Producer, Exchange, ExchangePattern)
>>> line:
>>> 179
>>>       ProducerCache$1.doInProducer(Producer, Exchange, ExchangePattern)
>>> line:
>>> 161
>>>       ProducerCache.doInProducer(Endpoint, Exchange, ExchangePattern,
>>> ProducerCallback<T>) line: 146
>>>       ProducerCache.sendExchange(Endpoint, ExchangePattern, Processor,
>>> Exchange) line: 160
>>>       ProducerCache.send(Endpoint, Processor) line: 98
>>>       DefaultProducerTemplate.send(Endpoint, Processor) line: 97
>>>       DefaultProducerTemplate.sendBodyAndHeaders(Endpoint, Object,
>>> Map<String,Object>) line: 206
>>>       DefaultProducerTemplate.sendBodyAndHeaders(String, Object,
>>> Map<String,Object>) line: 202
>>>       JmsMessageServiceImpl.send(Message...) line: 60
>>>       ProxySendProcessor.process(Exchange) line: 17
>>>       ProcessorEndpoint.onExchange(Exchange) line: 95
>>>       ProcessorEndpoint$1.process(Exchange) line: 65
>>>       SendProcessor$1.doInProducer(Producer, Exchange, ExchangePattern)
>>> line:
>>> 97
>>>       SendProcessor$1.doInProducer(Producer, Exchange, ExchangePattern)
>>> line:
>>> 95
>>>       ProducerCache.doInProducer(Endpoint, Exchange, ExchangePattern,
>>> ProducerCallback<T>) line: 146
>>>       SendProcessor.doProcess(Exchange) line: 94
>>>       SendProcessor.process(Exchange) line: 82
>>>       InstrumentationProcessor.process(Exchange) line: 67
>>>       TraceInterceptor(DelegateProcessor).processNext(Exchange) line: 53
>>>       TraceInterceptor(DelegateProcessor).proceed(Exchange) line: 82
>>>       TraceInterceptor.process(Exchange) line: 93
>>>       InstrumentationProcessor.process(Exchange) line: 67
>>>      
>>> DefaultErrorHandler(RedeliveryErrorHandler).processExchange(Exchange)
>>> line: 223
>>>      
>>> DefaultErrorHandler(RedeliveryErrorHandler).processErrorHandler(Exchange,
>>> RedeliveryErrorHandler$RedeliveryData) line: 153
>>>       DefaultErrorHandler(RedeliveryErrorHandler).process(Exchange)
>>> line: 91
>>>       DefaultErrorHandler.process(Exchange) line: 49
>>>       DefaultChannel.process(Exchange) line: 206
>>>       UnitOfWorkProcessor.processNext(Exchange) line: 54
>>>       UnitOfWorkProcessor(DelegateProcessor).process(Exchange) line: 48
>>>       InstrumentationProcessor.process(Exchange) line: 67
>>>       DataSetConsumer.sendMessages(long, long) line: 70
>>>       DataSetConsumer$1.run() line: 61
>>>       Executors$RunnableAdapter<T>.call() line: 441
>>>       FutureTask$Sync.innerRun() line: 303
>>>      
>>> ScheduledThreadPoolExecutor$ScheduledFutureTask<V>(FutureTask<V>).run()
>>> line: 138
>>>
>>> ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.access$301(ScheduledThreadPoolExecutor$ScheduledFutureTask)
>>> line: 98
>>>       ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.run() line: 207
>>>       ThreadPoolExecutor$Worker.runTask(Runnable) line: 886
>>>       ThreadPoolExecutor$Worker.run() line: 908
>>>       Thread.run() line: 637
>>>
>>>
>>> Error StackTrace:
>>>
>>> [java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156),
>>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326),
>>> java.util.HashSet.writeObject(HashSet.java:267),
>>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39),
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25),
>>> java.lang.reflect.Method.invoke(Method.java:597),
>>> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945),
>>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461),
>>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392),
>>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150),
>>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509),
>>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474),
>>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392),
>>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150),
>>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509),
>>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474),
>>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392),
>>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150),
>>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326),
>>> org.apache.activemq.command.ActiveMQObjectMessage.storeContent(ActiveMQObjectMessage.java:98),
>>> org.apache.activemq.command.ActiveMQObjectMessage.setObject(ActiveMQObjectMessage.java:155),
>>> org.apache.activemq.ActiveMQSession.createObjectMessage(ActiveMQSession.java:325),
>>> org.apache.activemq.pool.PooledSession.createObjectMessage(PooledSession.java:149),
>>> org.apache.camel.component.jms.JmsBinding.createJmsMessage(JmsBinding.java:489),
>>> org.apache.camel.component.jms.JmsBinding.makeJmsMessage(JmsBinding.java:277),
>>> org.apache.camel.component.jms.JmsProducer$2.createMessage(JmsProducer.java:316),
>>> org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.doSendToDestination(JmsConfiguration.java:221),
>>> org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.access$100(JmsConfiguration.java:164),
>>> org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate$3.doInJms(JmsConfiguration.java:198),
>>> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:471),
>>> org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:195),
>>> org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:375),
>>> org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:320),
>>> org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:150),
>>> org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:179),
>>> org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:161),
>>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146),
>>> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:160),
>>> org.apache.camel.impl.ProducerCache.send(ProducerCache.java:98),
>>> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:97),
>>> org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeaders(DefaultProducerTemplate.java:206),
>>> org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeaders(DefaultProducerTemplate.java:202),
>>> com.citrix.message.service.jms.JmsMessageServiceImpl.send(JmsMessageServiceImpl.java:60),
>>> com.citrix.message.ProxySendProcessor.process(ProxySendProcessor.java:17),
>>> org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:95),
>>> org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:65),
>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97),
>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95),
>>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146),
>>> org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94),
>>> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:82),
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67),
>>> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53),
>>> org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82),
>>> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:93),
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67),
>>> org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:223),
>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:153),
>>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:91),
>>> org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49),
>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206),
>>> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54),
>>> org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48),
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67),
>>> org.apache.camel.component.dataset.DataSetConsumer.sendMessages(DataSetConsumer.java:70),
>>> org.apache.camel.component.dataset.DataSetConsumer$1.run(DataSetConsumer.java:61),
>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441),
>>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303),
>>> java.util.concurrent.FutureTask.run(FutureTask.java:138),
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98),
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207),
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886),
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908),
>>> java.lang.Thread.run(Thread.java:637)]
>>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/DataSet-header-%7BCamelDataSetIndex%3D0%7D-causes-failure-tp26487985p26488848.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> Claus Ibsen
> Apache Camel Committer
> 
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
> 
> 

-- 
View this message in context: 
http://old.nabble.com/DataSet-header-%7BCamelDataSetIndex%3D0%7D-causes-failure-tp26487985p26507672.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to