You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2010/07/26 13:22:51 UTC

[jira] Created: (CAMEL-2994) camel-cxf - CxfClientCallback is invoked twice when only one was expected

camel-cxf - CxfClientCallback is invoked twice when only one was expected
-------------------------------------------------------------------------

                 Key: CAMEL-2994
                 URL: https://issues.apache.org/activemq/browse/CAMEL-2994
             Project: Apache Camel
          Issue Type: Bug
          Components: camel-cxf
    Affects Versions: 2.5.0
            Reporter: Claus Ibsen
             Fix For: 2.5.0


Run the test CXFWsdlOnlyTest

Because CXF invokes the CxfClientCallback 2 times there is a race condition with 2 threads wanting to complete routing the Exchange.

You can then end up with errors such as
{code}
>>>>>>>>>
2010-07-26 13:22:13,305 [default-workqueue-1                ] INFO  Logger                         - Exchange[Message: [Body is instance of java.io.InputStream]]
Exception in thread "default-workqueue-1" java.util.NoSuchElementException
	at java.util.AbstractList$Itr.next(AbstractList.java:350)
	at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:153)
	at org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:262)
	at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:302)
	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
	at org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:77)
	at org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:55)
	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2144)
	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:253)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:637)
2010-07-26 13:22:13,305 [default-workqueue-2                ] INFO  Logger                         - Exchange[Message: [Body is instance of java.io.InputStream]]
Exception in thread "default-workqueue-2" java.util.NoSuchElementException
	at java.util.AbstractList$Itr.next(AbstractList.java:350)
	at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:153)
	at org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:262)
	at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:302)
	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
	at org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:77)
	at org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:55)
	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2144)
	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:253)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:637)
{code}

CXF should only invoke the {{org.apache.cxf.endpoint.ClientCallback}} one time as we have only registered this once.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CAMEL-2994) camel-cxf - CxfClientCallback is invoked twice when only one was expected

Posted by "Willem Jiang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-2994?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Willem Jiang resolved CAMEL-2994.
---------------------------------

    Resolution: Fixed


RawMessageContentRedirectInterceptor should not close the OutputStream as it will be closed by the interceptor chain.
I just committed a patch for it.

> camel-cxf - CxfClientCallback is invoked twice when only one was expected
> -------------------------------------------------------------------------
>
>                 Key: CAMEL-2994
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2994
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-cxf
>    Affects Versions: 2.5.0
>            Reporter: Claus Ibsen
>            Assignee: Willem Jiang
>             Fix For: 2.5.0
>
>
> Run the test CXFWsdlOnlyTest
> Because CXF invokes the CxfClientCallback 2 times there is a race condition with 2 threads wanting to complete routing the Exchange.
> You can then end up with errors such as
> {code}
> >>>>>>>>>
> 2010-07-26 13:22:13,305 [default-workqueue-1                ] INFO  Logger                         - Exchange[Message: [Body is instance of java.io.InputStream]]
> Exception in thread "default-workqueue-1" java.util.NoSuchElementException
> 	at java.util.AbstractList$Itr.next(AbstractList.java:350)
> 	at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:153)
> 	at org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:262)
> 	at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:302)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:77)
> 	at org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:55)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2144)
> 	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:253)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:637)
> 2010-07-26 13:22:13,305 [default-workqueue-2                ] INFO  Logger                         - Exchange[Message: [Body is instance of java.io.InputStream]]
> Exception in thread "default-workqueue-2" java.util.NoSuchElementException
> 	at java.util.AbstractList$Itr.next(AbstractList.java:350)
> 	at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:153)
> 	at org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:262)
> 	at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:302)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:77)
> 	at org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:55)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2144)
> 	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:253)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:637)
> {code}
> CXF should only invoke the {{org.apache.cxf.endpoint.ClientCallback}} one time as we have only registered this once.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (CAMEL-2994) camel-cxf - CxfClientCallback is invoked twice when only one was expected

Posted by "Willem Jiang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-2994?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Willem Jiang reassigned CAMEL-2994:
-----------------------------------

    Assignee: Willem Jiang

> camel-cxf - CxfClientCallback is invoked twice when only one was expected
> -------------------------------------------------------------------------
>
>                 Key: CAMEL-2994
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2994
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-cxf
>    Affects Versions: 2.5.0
>            Reporter: Claus Ibsen
>            Assignee: Willem Jiang
>             Fix For: 2.5.0
>
>
> Run the test CXFWsdlOnlyTest
> Because CXF invokes the CxfClientCallback 2 times there is a race condition with 2 threads wanting to complete routing the Exchange.
> You can then end up with errors such as
> {code}
> >>>>>>>>>
> 2010-07-26 13:22:13,305 [default-workqueue-1                ] INFO  Logger                         - Exchange[Message: [Body is instance of java.io.InputStream]]
> Exception in thread "default-workqueue-1" java.util.NoSuchElementException
> 	at java.util.AbstractList$Itr.next(AbstractList.java:350)
> 	at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:153)
> 	at org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:262)
> 	at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:302)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:77)
> 	at org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:55)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2144)
> 	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:253)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:637)
> 2010-07-26 13:22:13,305 [default-workqueue-2                ] INFO  Logger                         - Exchange[Message: [Body is instance of java.io.InputStream]]
> Exception in thread "default-workqueue-2" java.util.NoSuchElementException
> 	at java.util.AbstractList$Itr.next(AbstractList.java:350)
> 	at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:153)
> 	at org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:262)
> 	at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:302)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:77)
> 	at org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:55)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2144)
> 	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:253)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:637)
> {code}
> CXF should only invoke the {{org.apache.cxf.endpoint.ClientCallback}} one time as we have only registered this once.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-2994) camel-cxf - CxfClientCallback is invoked twice when only one was expected

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-2994?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=60908#action_60908 ] 

Claus Ibsen commented on CAMEL-2994:
------------------------------------

In the log above there is race with 2 threads
- "default-workqueue-1"
- "default-workqueue-2"


> camel-cxf - CxfClientCallback is invoked twice when only one was expected
> -------------------------------------------------------------------------
>
>                 Key: CAMEL-2994
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2994
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-cxf
>    Affects Versions: 2.5.0
>            Reporter: Claus Ibsen
>             Fix For: 2.5.0
>
>
> Run the test CXFWsdlOnlyTest
> Because CXF invokes the CxfClientCallback 2 times there is a race condition with 2 threads wanting to complete routing the Exchange.
> You can then end up with errors such as
> {code}
> >>>>>>>>>
> 2010-07-26 13:22:13,305 [default-workqueue-1                ] INFO  Logger                         - Exchange[Message: [Body is instance of java.io.InputStream]]
> Exception in thread "default-workqueue-1" java.util.NoSuchElementException
> 	at java.util.AbstractList$Itr.next(AbstractList.java:350)
> 	at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:153)
> 	at org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:262)
> 	at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:302)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:77)
> 	at org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:55)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2144)
> 	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:253)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:637)
> 2010-07-26 13:22:13,305 [default-workqueue-2                ] INFO  Logger                         - Exchange[Message: [Body is instance of java.io.InputStream]]
> Exception in thread "default-workqueue-2" java.util.NoSuchElementException
> 	at java.util.AbstractList$Itr.next(AbstractList.java:350)
> 	at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:153)
> 	at org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:262)
> 	at org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:302)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:78)
> 	at org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:77)
> 	at org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:55)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2144)
> 	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:253)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:637)
> {code}
> CXF should only invoke the {{org.apache.cxf.endpoint.ClientCallback}} one time as we have only registered this once.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.