camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAMEL-5282) Strange race condition in for SEDA, when shutting down in Camel 2.9.1
Date Sun, 20 May 2012 14:25:45 GMT

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

Claus Ibsen commented on CAMEL-5282:
------------------------------------

Yeah you really need to use a separate thread for stopping/shutting down. This is also how
you do eg when you stop the JVM etc.
If you do in the same thread as processing the message, then its much harder and causes blocking
issues and whatnot. Hence why the FAQ and the Camel in Action source code has been updated.
                
> Strange race condition in for SEDA, when shutting down in Camel 2.9.1
> ---------------------------------------------------------------------
>
>                 Key: CAMEL-5282
>                 URL: https://issues.apache.org/jira/browse/CAMEL-5282
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.9.1
>         Environment: Windows XP, jdk1.6.0_29
>            Reporter: David Cifer
>            Assignee: Claus Ibsen
>             Fix For: 2.9.3, 2.10.0
>
>         Attachments: SedaTimeoutTest.java, TimeoutSetToDefault30SecSedaTimeoutTest.java
>
>
> We have file endpoints, with idemptotent file repository feeds into a SEDA chanel.
> Behind the SEDA is a solution, which can only deal one file at a time.
> If the system some reason shutdowns, than on restart we shouldn't consume already consumed
files.
> If exception occurs, we shutdown our application.
> This behaviour assured by a unit test, which begin to fail when we introduce timeout=0
configuration.
> Here is the pseudo code:
> onException(RuntimeException.class).process(new ShutDown());
>         
> from("file:/tempfolder/files/?idempotent=true&noop=true&idempotentRepository=#repo&delay=1000")
>             .inOut("seda:process?timeout=0");
>         
> from("seda:process").delay(1000).throwException(new RuntimeException("Testing with exception"));
> I use inOut so the file thread, waits for SEDA to acomplish. This serves as there is
an exception happens behind seda side, by using DefaultErrorHandler strategy it propagates
back to file endpoint and the sent file, won't be marked consumed.
> With 2.9.1 the files marked as consumed (meaning recorded in the idempotent repository)
90% of the times. I say % because sometimes the test passes without any issue. On 2.9.0 I
wasn't able to reproduce the error.
> NOTE: When you remove the timeout, than behaviour will be fine
> So on 2.9.0 and 2.9.1 with positive timeout there is no issue.
> In 2.9.1 timeout < 1 there is issue.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message