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

Claus Ibsen commented on CAMEL-2692:
------------------------------------

I cannot reproduce the problem you may have
{code}
public class SplitXPathParallelBigFileIssueTest extends ContextTestSupport {

    public void testSplitXPathParallelBigFileIssue() throws Exception {
        getMockEndpoint("mock:result").expectedMessageCount(144);

        assertMockEndpointsSatisfied();
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("file:news/?noop=true")
                        .split(new XPathBuilder("//article"))
                            .parallelProcessing()
                            .process(new Processor() {
                                public void process(Exchange exchange) throws 
Exception {
                                    Document doc = 
exchange.getIn().getBody(Document.class);
                                    assertNotNull(doc);

                                    String id = 
doc.getFirstChild().getAttributes().getNamedItem("id").getTextContent();
                                    System.out.println(id);
                                    //String txt = 
exchange.getContext().getTypeConverter().convertTo(String.class, 
doc.getFirstChild());
                                }
                            }).to("mock:result")
                        .end();
            }
        };
    }

}
{code}

I can always read the 144 articles from the xml file.
{code}

2010-05-06 09:17:44,748 [main           ] INFO  DefaultCamelContext            
- Apache Camel  (CamelContext: camel-1) is starting
2010-05-06 09:17:44,749 [main           ] INFO  DefaultCamelContext            
- JMX is disabled. Using DefaultManagementStrategy.
2010-05-06 09:17:45,112 [main           ] INFO  FileEndpoint                   
- Endpoint is configured with noop=true so forcing endpoint to be idempotent as 
well
2010-05-06 09:17:45,113 [main           ] INFO  FileEndpoint                   
- Using default memory based idempotent repository with cache max size: 1000
2010-05-06 09:17:45,116 [main           ] INFO  DefaultCamelContext            
- Route: route1 started and consuming from: Endpoint[file://news/?noop=true]
2010-05-06 09:17:45,117 [main           ] INFO  DefaultCamelContext            
- Started 1 routes
2010-05-06 09:17:45,118 [main           ] INFO  DefaultCamelContext            
- Apache Camel  (CamelContext: camel-1) started in 371 millis
2010-05-06 09:17:45,121 [main           ] INFO  MockEndpoint                   
- Asserting: Endpoint[mock://result] is satisfied
_2744977482
_2744977610
_2744977541
_2744977483
_2744977566
_2744977496
_2744977557
_2744977581
_2744977585
_2744977661
_2744977576
_2744977632
_2744977675
_2744977612
_2744977682
_2744977685
_2744977833
_2744977734
_2744977760
_2744977707
_2744977798
_2744977791
_2744977840
_2744977677
_2744977887
_2744977842
_2744977906
_2744977913
_2744977737
_2744977876
_2744977930
_2744977901
_2744977869
_2744977681
_2744977938
_2744977962
_2744977986
_2744977987
_2744977895
_2744977977
_2744977997
_2744978016
_2744978026
_2744978048
_2744978065
_2744978057
_2744978064
_2744978076
_2744978068
_2744978088
_2744978084
_2744978090
_2744978097
_2744978091
_2744978103
_2744978112
_2744978114
_2744978122
_2744978130
_2744978131
_2744978160
_2744978161
_2744978170
_2744978172
_2744978139
_2744978196
_2744978211
_2744978205
_2744978222
_2744978195
_2744978245
_2744978326
_2744978318
_2744978340
_2744978223
_2744978335
_2744978355
_2744978368
_2744978369
_2744978384
_2744978401
_2744978382
_2744978408
_2744978411
_2744978415
_2744978452
_2744978458
_2744978462
_2744978440
_2744978471
_2744978439
_2744978460
_2744978485
_2744978497
_2744978510
_2744978511
_2744978512
_2744978536
_2744978517
_2744978552
_2744978569
_2744978577
_2744978579
_2744978583
_2744978592
_2744978635
_2744978609
_2744978642
_2744978611
_2744978621
_2744978598
_2744978606
_2744978647
_2744978694
_2744978679
_2744978692
_2744978719
_2744978732
_2744978759
_2744978730
_2744978763
_2744978886
_2744978838
_2744978895
_2744978900
_2744978903
_2744978911
_2744978918
_2744978810
_2744978800
_2744978963
_2744978968
_2744978972
_2744978765
_2744978982
_2744978948
_2744978997
_2744978883
_2744978801
_2744978782
_2744978821
_2744978989
_2744978950
_2744978985
2010-05-06 09:17:47,316 [main           ] INFO  DefaultCamelContext            
- Apache Camel  (CamelContext:camel-1) is shutting down
2010-05-06 09:17:47,317 [main           ] INFO  DefaultShutdownStrategy        
- Starting to graceful shutdown 1 routes (timeout 10 seconds)
2010-05-06 09:17:47,320 [ - ShutdownTask] INFO  DefaultShutdownStrategy        
- Route: route1 suspended and shutdown deferred, was consuming from: 
Endpoint[file://news/?noop=true]
2010-05-06 09:17:47,320 [ - ShutdownTask] INFO  DefaultShutdownStrategy        
- Route: route1 shutdown complete.
2010-05-06 09:17:47,321 [main           ] INFO  DefaultShutdownStrategy        
- Graceful shutdown of 1 routes completed in 0 seconds
2010-05-06 09:17:47,321 [main           ] INFO  DefaultInflightRepository      
- Shutting down with no inflight exchanges.
2010-05-06 09:17:47,322 [main           ] INFO  DefaultCamelContext            
- Apache Camel  (CamelContext: camel-1) is shutdown in 6 millis
{code}


> Multithreading bug: getBody sporadically returns null
> -----------------------------------------------------
>
>                 Key: CAMEL-2692
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2692
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.3.0
>         Environment: Windows 7 64 bit, JDK 1.6.0_20
>            Reporter: Roland Knight
>         Attachments: news_20100502000001.zip
>
>
> Note that the only workaround for this bug is to remove the 
> parallelProcessing() call in the builder.
> I have a simple route that processes a file by splitting on a tag and 
> processing the DOM of each split message. The problem is that getBody is 
> randomly returning null but ONLY when using the parallelProcessing feature of 
> split. For some runs of the same XML file, the error does not occur at all 
> (the file is about 2MB of data), others it will happen once or twice. I am 
> currently using the latest 2.3-SNAPSHOT. 
> Also note, that after detecting the null, I tried calling 
> getBody(String.class) - this also may return null. Sometimes it does return 
> the proper XML. 
> Route configuration that reproduces the problem (my input XML is about 2MB 
> with about 500 article tags): 
>         public void configure() throws Exception { 
>           from("file:D:/inbox") 
>             .split(new XPathBuilder("//article")) 
>               .parallelProcessing()                     // remove this line 
> getBody below never returns null 
>               .process(new Processor() { 
>                 public void process(Exchange exchange) throws Exception { 
>                   Message inMessage = exchange.getIn(); 
>                   org.w3c.dom.Document domDocument = 
> inMessage.getBody(org.w3c.dom.Document.class); 
>                   if (domDocument == null) { 
>                     log("Null body"); 
>                   } else { 
>                     // process DOM here 
>                   } 
>                 } 
>               }) 
>             .end() 
>         } 
>       }); 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to