[
https://issues.apache.org/activemq/browse/CAMEL-1019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46789#action_46789
]
Willem Jiang commented on CAMEL-1019:
-------------------------------------
After went through your code, I found you made a great mistake in your
processor.
You can't store the exchange as the object member, which is the critical
variable when you run the processor in the multi-thread environment.
Since more than one thread can change the exchange object in the
IPValidateProcessor, that will explain why your IPValidateProcessor can't set
the right exchange's message header.
You need to keep your processors to use the original process method, which
makes sure your processor's process method is reentrant function(可重入函数).
> unexpected result in pressure testing
> -------------------------------------
>
> Key: CAMEL-1019
> URL: https://issues.apache.org/activemq/browse/CAMEL-1019
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-cxf
> Affects Versions: 1.4.0
> Environment: operating system: Red Hat Enterprise Linux AS release 3
> Hardware:HP PROLIANT BL460c ,4Core CPU, 4G Memory
> software plaform: apache-camel-1.4.0
> Reporter: Sky Wang
> Attachments: processors.rar
>
>
> I develop an application on camel.It's routing logic as follows:
> <route>
> <from uri="cxf:bean:routerEndpoint" />
> <try>
> <process ref="ipValidateProcessor" />
> <choice>
> <when>
> <!-- First predicate -->
> <el>${in.headers.IP_VALIDATE_RESULT ==
> 'true'}</el>
> <to uri="cxf:bean:serviceEndpoint" />
> <process ref="responseProcessor" />
> </when>
> <otherwise>
> <process ref="invalidIPProcessor" />
> </otherwise>
> </choice>
> <catch>
>
> <exception>com.aspire.archtype.camel.exception.AppException</exception>
> <process ref="sreExceptionHandler"></process>
> </catch>
> </try>
> </route>
> I do a pressure testing on this application with LoadRunner.
> My test case is as follows:
> 1. loadrunner send a reqeust
> 2. server receive the request, and then forward it to IPValidateProcessor
> 3. IPValidateProcessor set exchange.getIn().setHeader("IP_VALIDATE_RESULT",
> "true");
> 4. do <to uri="cxf:bean:serviceEndpoint" />
> 5. do <process ref="responseProcessor" />
> 6. end
> I only want to test the <when> clause in the routing logic.
> When only one virtual user runs the test case once, it runs ok.
> But when have 30 virtual users concurrent run for 1 minute, some of the
> transactions run into <otherwise> clause.I found that they run into
> <otherwise> because in.headers.IP_VALIDATE_RESULT is null.
> I don't now why, the same requests, most run into <when> clause, few run
> into <otherwith> clause?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.