Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-9152

Camel streaming component doesn't close a stream when last exchange is not passed to the endpoint

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Not A Problem
    • 2.14.1
    • None
    • camel-stream
    • None
    • Unknown

    Description

      Here is sample test which reproduces the problem:

      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();
      

      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.

      Attachments

        Activity

          People

            davsclaus Claus Ibsen
            Bohdan1 Bohdan Zhezlo
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: