camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bohdan Zhezlo (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAMEL-9152) Camel streaming component doesn't close a stream when last exchange is not passed to the endpoint
Date Thu, 24 Sep 2015 15:16:04 GMT

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

Bohdan Zhezlo commented on CAMEL-9152:
--------------------------------------

Well, I can't control the position of the message to be filtered out. Is it possible to get
an access to underlying stream and close it manually? Maybe it makes sense to introduce some
property like 'forceCloseOnEnd' to be able to close the stream without relying on the number
of processed messages?

> Camel streaming component doesn't close a stream when last exchange is not passed to
the endpoint
> -------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-9152
>                 URL: https://issues.apache.org/jira/browse/CAMEL-9152
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-stream
>    Affects Versions: 2.14.1
>            Reporter: Bohdan Zhezlo
>            Assignee: Claus Ibsen
>
> Here is sample test which reproduces the problem:
> {code:java}
> route.from("direct:foo")
>     .split().tokenize("\n").streaming()
>     .choice()
>         .when(body().isEqualTo(9))
>         .stop()
>      .otherwise()
>          .to("stream:file?fileName=streaming.txt&closeOnDone=true")
>      .endChoice();
> @Produce(uri = "direct:foo")
> protected ProducerTemplate template;
> StringBuilder builder = new StringBuilder();
> for(int i = 0; i < 10; i++) {
>    builder.append(i);
>    builder.append("\n");
> }
> template.sendBody(builder.toString());
> File file = new File("streaming.txt");
> boolean exists = file.exists();
> boolean deleted = file.delete();
> {code}
> After running sample test 'deleted' will be false and file is present on file system,
which indicates that the file stream was not closed.
> If I modify condition in the route so that no exchanges get skipped (or if I skip any
exchange except the last one) then file is successfully deleted.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message