camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Willem Jiang (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CAMEL-1019) unexpected result in pressure testing
Date Thu, 23 Oct 2008 14:26:52 GMT

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


Mime
View raw message