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