You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "Ron Gavlin (JIRA)" <ji...@apache.org> on 2008/10/03 07:03:52 UTC

[jira] Updated: (SM-1605) Asynchronous File Poller has problems handling errors (likely regression introduced by SM-1441)

     [ https://issues.apache.org/activemq/browse/SM-1605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ron Gavlin updated SM-1605:
---------------------------

    Description: 
I have an integration process that begins with a smx-file poller endpoint and includes a smx-saxon component. In this flow, smx-saxon throws an exception which is reported back to the smx-file poller as an error. The SMX 3.2.2 file poller handles the error gracefully. The new SMX-3.3-SNAPSHOT file poller reports an error setting the exchange status to ERROR. This appears to be a regression due to SM-1441. 

In order to reproduce the problem, first download and install apache-servicemix-3.3-20080927.213545-1.zip. Then replace the servicemix-saxon 3.3-SNAPSHOT version with the servicemix-saxon 3.2.2 version and update its jbi.xml to reference servicemix-shared-2008.01-SNAPSHOT. Only the servicemix-saxon 3.2.2 version throws the ClassCastException which exposes the smx-file problem. BTW, I have attached my test project in order for you to reproduce the problem.

The console log is reported below.

ERROR - SaxonComponent                 - Error processing exchange InOut[
  id: ID:10.10.10.10-11cc10ecdb8-8:2
  status: Active
  role: provider
  service: {urn:eng:spagic:processes:droolsSaxonTest:v0}droolsSaxonTest.xqueryPipeline_Transformer_v_0
  endpoint: droolsSaxonTest.xqueryPipeline_Transformer_v_0
  in: <?xml version="1.0" encoding="UTF-8"?><videos featuring="Bila"/>
  out: null
]
java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
        at net.sf.saxon.Configuration.buildDocument(Configuration.java:2239)
        at net.sf.saxon.query.StaticQueryContext.buildDocument(StaticQueryContext.java:426)
        at org.apache.servicemix.saxon.XQueryEndpoint.queryContent(XQueryEndpoint.java:126)
        at org.apache.servicemix.saxon.XQueryEndpoint.transform(XQueryEndpoint.java:119)
        at org.apache.servicemix.saxon.SaxonEndpoint.processInOut(SaxonEndpoint.java:220)
        at org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEndpoint.java:111)
        at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:596)
        at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:550)
        at org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:506)
        at org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
        at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
ERROR - FileComponent                  - Error processing exchange InOnly[
  id: ID:10.10.10.10-11cc10ecdb8-4:2
  status: Error
  role: consumer
  service: {urn:eng:spagic:processes:droolsSaxonTest:v0}droolsSaxonTest.router_v_0
  endpoint: droolsSaxonTest.router_v_0
  in: <?xml version="1.0" encoding="UTF-8"?><videos featuring="Bila"/>
  error: java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
]
java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
        at net.sf.saxon.Configuration.buildDocument(Configuration.java:2239)
        at net.sf.saxon.query.StaticQueryContext.buildDocument(StaticQueryContext.java:426)
        at org.apache.servicemix.saxon.XQueryEndpoint.queryContent(XQueryEndpoint.java:126)
        at org.apache.servicemix.saxon.XQueryEndpoint.transform(XQueryEndpoint.java:119)
        at org.apache.servicemix.saxon.SaxonEndpoint.processInOut(SaxonEndpoint.java:220)
        at org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEndpoint.java:111)
        at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:596)
        at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:550)
        at org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:506)
        at org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
        at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
ERROR - FileComponent                  - Error setting exchange status to ERROR
javax.jbi.messaging.MessagingException: illegal call to send / sendSync
        at org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:614)
        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:385)
        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:431)
        at org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:521)
        at org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
        at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)

  was:
I have an integration process that begins with a smx-file poller endpoint and includes a smx-saxon component. In this flow, smx-saxon throws an exception which is reported back to the smx-file poller as an error. The SMX 3.2.2 file poller handles the error gracefully. The new SMX-3.3-SNAPSHOT file poller reports an error setting the exchange status to ERROR. This appears to be a regression due to SM-1441. The console log is reported below.

01:43:59,742 | ERROR | pool-flow.seda.servicemix-saxon-thread-1 | SaxonComponent           | ervicemix.common.BaseLifeCycle   48 | Error processing exchange InOut[
  id: ID:10.10.10.10-11cb6e8d258-5:0
  status: Active
  role: provider
  service: {urn:eng:spagic:processes:droolsSaxonTest:v0}droolsSaxonTest.xqueryPipeline_Transformer_v_0
  endpoint: droolsSaxonTest.xqueryPipeline_Transformer_v_0
  in: <?xml version="1.0" encoding="UTF-8"?><video id="647599251">
   <studio/>
   <director>Francesco Rosi</director>
   <actorRef>916503211</actorRef>
   <actorRef>916503212</actorRef>
   <title>Carmen</title>
   <dvd>18</dvd>
   <laserdisk/>
   <laserdisk_stock/>
   <genre>musical</genre>
   <rating>PG</rating>
   <runtime>125</runtime>
   <user_rating>4</user_rating>
   <summary>A fine screen adaptation of Bizet's
      popular opera. </summary>
   <details>Placido Domingo does it again, this time
      in Bizet's popular opera.</details>
   <vhs>15</vhs>
   <beta_stock/>
   <year>1984</year>
   <vhs_stock>88</vhs_stock>
   <dvd_stock>22</dvd_stock>
   <beta/>
</video>
  out: null
]
java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
	at net.sf.saxon.Configuration.buildDocument(Configuration.java:2239)
	at net.sf.saxon.query.StaticQueryContext.buildDocument(StaticQueryContext.java:426)
	at org.apache.servicemix.saxon.XQueryEndpoint.queryContent(XQueryEndpoint.java:126)
	at org.apache.servicemix.saxon.XQueryEndpoint.transform(XQueryEndpoint.java:119)
	at org.apache.servicemix.saxon.SaxonEndpoint.processInOut(SaxonEndpoint.java:220)
	at org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEndpoint.java:109)
	at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:540)
	at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:492)
	at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
	at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
	at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
	at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
	at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
	at java.lang.Thread.run(Thread.java:595)
01:44:00,293 | ERROR | pool-flow.seda.servicemix-drools-thread-2 | FileComponent            | icemix.file.FilePollerEndpoint  413 | java.lang.IllegalMonitorStateException
01:44:00,293 | ERROR | pool-flow.seda.servicemix-drools-thread-2 | FileComponent            | ervicemix.common.BaseLifeCycle   48 | Error processing exchange InOnly[
  id: ID:10.10.10.10-11cb6e8d258-6:0
  status: Error
  role: consumer
  service: {urn:eng:spagic:processes:droolsSaxonTest:v0}droolsSaxonTest.router_v_0
  endpoint: droolsSaxonTest.router_v_0
  in: <?xml version="1.0" encoding="UTF-8"?><video id="647599251">
   <studio/>
   <director>Francesco Rosi</director>
   <actorRef>916503211</actorRef>
   <actorRef>916503212</actorRef>
   <title>Carmen</title>
   <dvd>18</dvd>
   <laserdisk/>
   <laserdisk_stock/>
   <genre>musical</genre>
   <rating>PG</rating>
   <runtime>125</runtime>
   <user_rating>4</user_rating>
   <summary>A fine screen adaptation of Bizet's
      popular opera. </summary>
   <details>Placido Domingo does it again, this time
      in Bizet's popular opera.</details>
   <vhs>15</vhs>
   <beta_stock/>
   <year>1984</year>
   <vhs_stock>88</vhs_stock>
   <dvd_stock>22</dvd_stock>
   <beta/>
</video>
  error: java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
]
java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
	at net.sf.saxon.Configuration.buildDocument(Configuration.java:2239)
	at net.sf.saxon.query.StaticQueryContext.buildDocument(StaticQueryContext.java:426)
	at org.apache.servicemix.saxon.XQueryEndpoint.queryContent(XQueryEndpoint.java:126)
	at org.apache.servicemix.saxon.XQueryEndpoint.transform(XQueryEndpoint.java:119)
	at org.apache.servicemix.saxon.SaxonEndpoint.processInOut(SaxonEndpoint.java:220)
	at org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEndpoint.java:109)
	at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:540)
	at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:492)
	at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
	at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
	at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
	at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
	at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
	at java.lang.Thread.run(Thread.java:595)
01:44:00,363 | ERROR | pool-flow.seda.servicemix-drools-thread-2 | FileComponent            | ervicemix.common.BaseLifeCycle   60 | Error setting exchange status to ERROR
javax.jbi.messaging.MessagingException: illegal call to send / sendSync
	at org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:614)
	at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:385)
	at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:431)
	at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:58)
	at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
	at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
	at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
	at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
	at java.lang.Thread.run(Thread.java:595)



> Asynchronous File Poller has problems handling errors (likely regression introduced by SM-1441)
> -----------------------------------------------------------------------------------------------
>
>                 Key: SM-1605
>                 URL: https://issues.apache.org/activemq/browse/SM-1605
>             Project: ServiceMix
>          Issue Type: Bug
>          Components: servicemix-file
>    Affects Versions: 3.3
>            Reporter: Ron Gavlin
>            Priority: Critical
>
> I have an integration process that begins with a smx-file poller endpoint and includes a smx-saxon component. In this flow, smx-saxon throws an exception which is reported back to the smx-file poller as an error. The SMX 3.2.2 file poller handles the error gracefully. The new SMX-3.3-SNAPSHOT file poller reports an error setting the exchange status to ERROR. This appears to be a regression due to SM-1441. 
> In order to reproduce the problem, first download and install apache-servicemix-3.3-20080927.213545-1.zip. Then replace the servicemix-saxon 3.3-SNAPSHOT version with the servicemix-saxon 3.2.2 version and update its jbi.xml to reference servicemix-shared-2008.01-SNAPSHOT. Only the servicemix-saxon 3.2.2 version throws the ClassCastException which exposes the smx-file problem. BTW, I have attached my test project in order for you to reproduce the problem.
> The console log is reported below.
> ERROR - SaxonComponent                 - Error processing exchange InOut[
>   id: ID:10.10.10.10-11cc10ecdb8-8:2
>   status: Active
>   role: provider
>   service: {urn:eng:spagic:processes:droolsSaxonTest:v0}droolsSaxonTest.xqueryPipeline_Transformer_v_0
>   endpoint: droolsSaxonTest.xqueryPipeline_Transformer_v_0
>   in: <?xml version="1.0" encoding="UTF-8"?><videos featuring="Bila"/>
>   out: null
> ]
> java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
>         at net.sf.saxon.Configuration.buildDocument(Configuration.java:2239)
>         at net.sf.saxon.query.StaticQueryContext.buildDocument(StaticQueryContext.java:426)
>         at org.apache.servicemix.saxon.XQueryEndpoint.queryContent(XQueryEndpoint.java:126)
>         at org.apache.servicemix.saxon.XQueryEndpoint.transform(XQueryEndpoint.java:119)
>         at org.apache.servicemix.saxon.SaxonEndpoint.processInOut(SaxonEndpoint.java:220)
>         at org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEndpoint.java:111)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:596)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:550)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:506)
>         at org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>         at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
>         at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> ERROR - FileComponent                  - Error processing exchange InOnly[
>   id: ID:10.10.10.10-11cc10ecdb8-4:2
>   status: Error
>   role: consumer
>   service: {urn:eng:spagic:processes:droolsSaxonTest:v0}droolsSaxonTest.router_v_0
>   endpoint: droolsSaxonTest.router_v_0
>   in: <?xml version="1.0" encoding="UTF-8"?><videos featuring="Bila"/>
>   error: java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
> ]
> java.lang.ClassCastException: net.sf.saxon.tinytree.TinyElementImpl
>         at net.sf.saxon.Configuration.buildDocument(Configuration.java:2239)
>         at net.sf.saxon.query.StaticQueryContext.buildDocument(StaticQueryContext.java:426)
>         at org.apache.servicemix.saxon.XQueryEndpoint.queryContent(XQueryEndpoint.java:126)
>         at org.apache.servicemix.saxon.XQueryEndpoint.transform(XQueryEndpoint.java:119)
>         at org.apache.servicemix.saxon.SaxonEndpoint.processInOut(SaxonEndpoint.java:220)
>         at org.apache.servicemix.common.endpoints.ProviderEndpoint.process(ProviderEndpoint.java:111)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:596)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:550)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:506)
>         at org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>         at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
>         at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> ERROR - FileComponent                  - Error setting exchange status to ERROR
> javax.jbi.messaging.MessagingException: illegal call to send / sendSync
>         at org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:614)
>         at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:385)
>         at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:431)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:521)
>         at org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>         at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
>         at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)

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