[ 
https://issues.apache.org/jira/browse/CAMEL-5880?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13646022#comment-13646022
 ] 

Babak Vahdat commented on CAMEL-5880:
-------------------------------------

Regarding your question [@ user 
forum|http://camel.465427.n5.nabble.com/camel-quickfix-RequestReplyExample-java-io-IOException-tp5723769p5728217.html]
 the reason of the behavior you're observing is the following:

Removing {{MarketOrderStatusService}} from the route has the side effect of an 
endless loop because each time the {{QuickfixjConsumer}} fires the out message 
it triggers the {{QuickfixjEngine}} to dispatch this QuickFIX/J message (using 
a new Camel Exchange object) down the hill to it's destination which is again 
the *same* consumer. Then this consumers fires the same QuickFIX/J message out 
again and so on and so on. One can also easily see this behaviour given the 
stack trace when the whole loop ends up with a {{StackOverflowError}}:

{code}
java.lang.StackOverflowError
        at java.lang.ThreadLocal$ThreadLocalMap.getEntry(ThreadLocal.java:357)
        at java.lang.ThreadLocal$ThreadLocalMap.access$000(ThreadLocal.java:242)
        at java.lang.ThreadLocal.get(ThreadLocal.java:127)
        at java.lang.StringCoding.deref(StringCoding.java:46)
        at java.lang.StringCoding.encode(StringCoding.java:258)
        at java.lang.String.getBytes(String.java:946)
        at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
        at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
        at java.io.File.exists(File.java:733)
        at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:999)
        at sun.misc.URLClassPath.getResource(URLClassPath.java:169)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at quickfix.Session.logApplicationException(Session.java:1267)
        at quickfix.Session.sendRaw(Session.java:2422)
        at quickfix.Session.send(Session.java:2473)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.sendOutMessage(QuickfixjConsumer.java:60)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.onExchange(QuickfixjConsumer.java:39)
        at 
org.apache.camel.component.quickfixj.QuickfixjEndpoint.onEvent(QuickfixjEndpoint.java:92)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.dispatch(QuickfixjEngine.java:481)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.toApp(QuickfixjEngine.java:465)
        at quickfix.Session.sendRaw(Session.java:2418)
        at quickfix.Session.send(Session.java:2473)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.sendOutMessage(QuickfixjConsumer.java:60)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.onExchange(QuickfixjConsumer.java:39)
        at 
org.apache.camel.component.quickfixj.QuickfixjEndpoint.onEvent(QuickfixjEndpoint.java:92)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.dispatch(QuickfixjEngine.java:481)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.toApp(QuickfixjEngine.java:465)
        at quickfix.Session.sendRaw(Session.java:2418)
        at quickfix.Session.send(Session.java:2473)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.sendOutMessage(QuickfixjConsumer.java:60)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.onExchange(QuickfixjConsumer.java:39)
        at 
org.apache.camel.component.quickfixj.QuickfixjEndpoint.onEvent(QuickfixjEndpoint.java:92)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.dispatch(QuickfixjEngine.java:481)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.toApp(QuickfixjEngine.java:465)
        at quickfix.Session.sendRaw(Session.java:2418)
        at quickfix.Session.send(Session.java:2473)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.sendOutMessage(QuickfixjConsumer.java:60)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.onExchange(QuickfixjConsumer.java:39)
        at 
org.apache.camel.component.quickfixj.QuickfixjEndpoint.onEvent(QuickfixjEndpoint.java:92)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.dispatch(QuickfixjEngine.java:481)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.toApp(QuickfixjEngine.java:465)
        at quickfix.Session.sendRaw(Session.java:2418)
        at quickfix.Session.send(Session.java:2473)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.sendOutMessage(QuickfixjConsumer.java:60)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.onExchange(QuickfixjConsumer.java:39)
        at 
org.apache.camel.component.quickfixj.QuickfixjEndpoint.onEvent(QuickfixjEndpoint.java:92)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.dispatch(QuickfixjEngine.java:481)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.toApp(QuickfixjEngine.java:465)
        at quickfix.Session.sendRaw(Session.java:2418)
        at quickfix.Session.send(Session.java:2473)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.sendOutMessage(QuickfixjConsumer.java:60)
        at 
org.apache.camel.component.quickfixj.QuickfixjConsumer.onExchange(QuickfixjConsumer.java:39)
        at 
org.apache.camel.component.quickfixj.QuickfixjEndpoint.onEvent(QuickfixjEndpoint.java:92)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.dispatch(QuickfixjEngine.java:481)
        at 
org.apache.camel.component.quickfixj.QuickfixjEngine$Dispatcher.toApp(QuickfixjEngine.java:465)
...
{code}

That's why I will not take over your changes by {{QuickfixjConsumer}} given 
through the second patch of yours.

                
> camel-quickfix: QuickfixjEndpoint should adhere the InOut exchange pattern if 
> you would ask for this MEP
> --------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-5880
>                 URL: https://issues.apache.org/jira/browse/CAMEL-5880
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-quickfix
>    Affects Versions: 2.10.3
>            Reporter: Babak Vahdat
>            Priority: Minor
>         Attachments: requestreply-2.patch, requestreply.patch
>
>
> See 
> http://camel.465427.n5.nabble.com/camel-quickfix-RequestReplyExample-java-io-IOException-td5723769.html

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to