You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by tide08 <sa...@yahoo.com> on 2009/11/24 00:26:12 UTC

DataSet header {CamelDataSetIndex=0} causes failure

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-tp26487985p26487985.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: DataSet header {CamelDataSetIndex=0} causes failure

Posted by Claus Ibsen <cl...@gmail.com>.
On Wed, Nov 25, 2009 at 6:16 AM, tide08 <sa...@yahoo.com> wrote:
>
> @Claus
>
> Patch seems to work fine, I got my soak test working, Thanks!
>

Great news and glad we got that fixed before 2.1 is being build.


>
> 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 <sa...@yahoo.com> 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.
>
>



-- 
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

Re: DataSet header {CamelDataSetIndex=0} causes failure

Posted by tide08 <sa...@yahoo.com>.
@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 <sa...@yahoo.com> 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.


Re: DataSet header {CamelDataSetIndex=0} causes failure

Posted by Claus Ibsen <cl...@gmail.com>.
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 <sa...@yahoo.com> 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

Re: DataSet header {CamelDataSetIndex=0} causes failure

Posted by tide08 <sa...@yahoo.com>.
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.


Re: DataSet header {CamelDataSetIndex=0} causes failure

Posted by tide08 <sa...@yahoo.com>.
Exception stack trace shows cause as - 

java.io.NotSerializableException: org.apache.camel.util.CaseInsensitiveMap$1



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-tp26487985p26488048.html
Sent from the Camel - Users mailing list archive at Nabble.com.