Uploaded image for project: 'ServiceMix Components'
  1. ServiceMix Components
  2. SMXCOMP-715

Properties of NormalizedMessage can be lost

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Not A Problem
    • servicemix-cxf-bc-2009.02
    • None
    • servicemix-cxf-bc
    • None

    Description

      There is strange problem with copying properties in SMX/Flows/JBI components - properties can be lost in the way between two endpoints. The problem does not depends on endpoints/jbi components and can happens anywhere (see below). For example if we lost special property for eip: resequencer/eip:asyncbridge and it will not work properly. In attachment you can find reproducer based on servicemix-itests sub-project. If test will passed for first time, please run it again (and change amount of messages), it is non stable problem, but it is possible to catch.

      <cxf-bc> -> <pipeline> -> trace
                                |
                           <saxon>
      
      
      Property lost in exchange number (18) between pipeline and trace
      ------------------------------------------------------------------------------
      Test set: org.apache.servicemix.itests.deadlock.DeadlockTest
      -------------------------------------------------------------------------------
      Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 8 sec <<< FAILURE!
      test(org.apache.servicemix.itests.deadlock.DeadlockTest)  Time elapsed: 7.86 sec  <<< FAILURE!
      junit.framework.AssertionFailedError: DefaultComparator.SEQUENCE_NUMBER_KEY must be here: 
       Index:18 
       Exchange: InOnly[
        id: ID:16.52.178.165-126b7f9136b-5:16
        status: Done
        role: consumer
        service: {http://example.com/performancetest}trace
        endpoint: receiver
        in: <?xml version="1.0" encoding="UTF-8"?><mtosiNotification xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><id/></mtosiNotification>
      ]
       Exchange Properties: org.apache.servicemix.flow = Seda
      Pipeline.Transformer.{http://example.com/performancetest}pipeline.endpoint = ID:16.52.178.165-126b7f9136b-5:6
      Pipeline.Consumer.{http://example.com/performancetest}pipeline.endpoint = ID:16.52.178.165-126b7f9136b-4:6
      org.apache.servicemix.correlationId = ID:16.52.178.165-126b7f9136b-4:6
      org.apache.servicemix.datestamp = 2/10/10 4:02 PM
      org.apache.servicemix.senderEndpoint = {http://example.com/performancetest}pipeline:endpoint
              at junit.framework.Assert.fail(Assert.java:47)
              at junit.framework.Assert.assertTrue(Assert.java:20)
              at junit.framework.Assert.assertNotNull(Assert.java:220)
              at org.apache.servicemix.itests.deadlock.DeadlockTest.test(DeadlockTest.java:85)
      
      Property lost in exchange number (1604) between pipeline and xslt
      -------------------------------------------------------------------------------
      Test set: org.apache.servicemix.itests.deadlock.DeadlockTest
      -------------------------------------------------------------------------------
      Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 66.97 sec <<< FAILURE!
      test(org.apache.servicemix.itests.deadlock.DeadlockTest)  Time elapsed: 66.017 sec  <<< FAILURE!
      junit.framework.AssertionFailedError: DefaultComparator.SEQUENCE_NUMBER_KEY must be here: 
       Index:1604 
       Exchange: InOut[
        id: ID:16.52.178.165-126b7fc2e5f-5:1541
        status: Done
        role: consumer
        service: {http://example.com/performancetest}xslt
        endpoint: endpoint
        in: <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:notify xmlns:ns2="tmf854.v1">
                      <ns2:topic>topic/Fault</ns2:topic>
                      <ns2:message>
                          <ns2:Alarm>
                              <ns2:eventInfo>
                                  <ns2:notificationId>0001</ns2:notificationId>
                                  <ns2:objectName>
                                      <ns2:mdNm>mdsim</ns2:mdNm>
                                      <ns2:meNm>ne1inessim</ns2:meNm>
                                  </ns2:objectName>
                                  <ns2:objectType>OT_MANAGED_ELEMENT</ns2:objectType>
                                  <ns2:osTime>20070528042211.11Z</ns2:osTime>
                                  <ns2:neTime>20061130110029.00Z</ns2:neTime>
                                  <ns2:edgePointRelated>false</ns2:edgePointRelated>
                              </ns2:eventInfo>
                              <ns2:isClearable>true</ns2:isClearable>
                              <ns2:aliasNameList>
                                  <ns2:alias>
                                      <ns2:aliasName>LAEU:ne1inessim</ns2:aliasName>
                                      <ns2:aliasValue>LAEU:ne1inessim</ns2:aliasValue>
                                  </ns2:alias>
                              </ns2:aliasNameList>
                              <ns2:layerRate/>
                              <ns2:probableCause>
                                  <ns2:ru>false</ns2:ru>
            ...
        out: <?xml version="1.0" encoding="UTF-8"?><mtosiNotification xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><id/></mtosiNotification>
      ]
       Exchange Properties: org.apache.servicemix.flow = Seda
      Pipeline.Consumer.{http://example.com/performancetest}pipeline.endpoint = ID:16.52.178.165-126b7fc2e5f-4:772
      org.apache.servicemix.correlationId = ID:16.52.178.165-126b7fc2e5f-4:772
      Pipeline.Transformer = true
      org.apache.servicemix.datestamp = 2/10/10 4:06 PM
      Pipeline.ConsumerMEP = http://www.w3.org/2004/08/wsdl/in-only
      org.apache.servicemix.senderEndpoint = {http://example.com/performancetest}pipeline:endpoint
              at junit.framework.Assert.fail(Assert.java:47)
              at junit.framework.Assert.assertTrue(Assert.java:20)
              at junit.framework.Assert.assertNotNull(Assert.java:220)
              at org.apache.servicemix.itests.deadlock.DeadlockTest.test(DeadlockTest.java:85)
      
      Property lost in exchange number (1112) between pipeline and xslt
      -------------------------------------------------------------------------------
      Test set: org.apache.servicemix.itests.deadlock.DeadlockTest
      -------------------------------------------------------------------------------
      Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 64.644 sec <<< FAILURE!
      test(org.apache.servicemix.itests.deadlock.DeadlockTest)  Time elapsed: 64.019 sec  <<< FAILURE!
      junit.framework.AssertionFailedError: DefaultComparator.SEQUENCE_NUMBER_KEY must be here: 
       Index:1112 
       Exchange: InOut[
        id: ID:16.52.178.165-126b80da3a3-5:1099
        status: Done
        role: consumer
        service: {http://example.com/performancetest}xslt
        endpoint: endpoint
        in: <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:notify xmlns:ns2="tmf854.v1">
                      <ns2:topic>topic/Fault</ns2:topic>
                      <ns2:message>
                          <ns2:Alarm>
                              <ns2:eventInfo>
                                  <ns2:notificationId>0001</ns2:notificationId>
                                  <ns2:objectName>
                                      <ns2:mdNm>mdsim</ns2:mdNm>
                                      <ns2:meNm>ne1inessim</ns2:meNm>
                                  </ns2:objectName>
                                  <ns2:objectType>OT_MANAGED_ELEMENT</ns2:objectType>
                                  <ns2:osTime>20070528042211.11Z</ns2:osTime>
                                  <ns2:neTime>20061130110029.00Z</ns2:neTime>
                                  <ns2:edgePointRelated>false</ns2:edgePointRelated>
                              </ns2:eventInfo>
                              <ns2:isClearable>true</ns2:isClearable>
                              <ns2:aliasNameList>
                                  <ns2:alias>
                                      <ns2:aliasName>LAEU:ne1inessim</ns2:aliasName>
                                      <ns2:aliasValue>LAEU:ne1inessim</ns2:aliasValue>
                                  </ns2:alias>
                              </ns2:aliasNameList>
                              <ns2:layerRate/>
                              <ns2:probableCause>
                                  <ns2:ru>false</ns2:ru>
            ...
        out: <?xml version="1.0" encoding="UTF-8"?><mtosiNotification xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><id/></mtosiNotification>
      ]
       Exchange Properties: org.apache.servicemix.flow = Seda
      Pipeline.Consumer.{http://example.com/performancetest}pipeline.endpoint = ID:16.52.178.165-126b80da3a3-4:551
      org.apache.servicemix.correlationId = ID:16.52.178.165-126b80da3a3-4:551
      Pipeline.Transformer = true
      org.apache.servicemix.datestamp = 2/10/10 4:25 PM
      Pipeline.ConsumerMEP = http://www.w3.org/2004/08/wsdl/in-only
      org.apache.servicemix.senderEndpoint = {http://example.com/performancetest}pipeline:endpoint
              at junit.framework.Assert.fail(Assert.java:47)
              at junit.framework.Assert.assertTrue(Assert.java:20)
              at junit.framework.Assert.assertNotNull(Assert.java:220)
              at org.apache.servicemix.itests.deadlock.DeadlockTest.test(DeadlockTest.java:85)
      

      Attachments

        1. servicemix-itests.zip
          48 kB
          Alexander Zobkov

        Activity

          People

            ffang Freeman Yue Fang
            alexanderz Alexander Zobkov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: