servicemix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominique De Vito (JIRA)" <>
Subject [jira] Commented: (SM-910) better handling of unavailable external http services
Date Tue, 03 Apr 2007 12:44:34 GMT


Dominique De Vito commented on SM-910:

I have done a simple test using a seda flow with a JCA consumer.
  <sm:sedaFlow />
  <sm:jcaFlow connectionManager="#connectionManager"
    jmsURL="${activemq.url}" />


<sm:activationSpec componentName="inputReceiver_2">
	  	        <amqra:activationSpec destination="queue_2"
    			    destinationType="javax.jms.Queue" />

<sm:activationSpec componentName="ws_2">
  	      <http:endpoint service="foo:ws_2"

The test scenario was the following:
(a) using another pipeline, I have pushed a message into the queue_2
(b) I have run the pipeline defined above WITHOUT running the external web service provider,
than I have got plenty of " Connection refused: connect". 
The traces are full of rollback, no single one commit.

(c) While there was no commit into the traces, and due to rollbackOnError="true", I was expecting
still the message to be into the queue (called queue_2). 
I have re-started ServiceMix and my external web service provider too. I was expecting ServiceMix
to get this message to give it to the external web service provider now running. But ServiceMix
has not treated any message.

I have tested this under servicemix-3.1-incubating et servicemix-3.2-incubating-20070308.121113-12

While traces include no commit, only rollbacks, I expect the message to be stil into the queue
and ServiceMix to treat it again while restarting. This is not the case, i.e. when adding
synchronous="true" rollbackOnError="true", the message is rollbacked, but after a few number
of attempts, it disappears somewhere.

Can you tell me what happens ? 
Where this message goes ? 
Why ServiceMix does not treat it again when restarted ?

Did the message go some component DLQ ? 

I have found these traces after the last rollback:

DEBUG - AbstractRegion                 - Adding destination: queue://ActiveMQ.DLQ
DEBUG - JournalPersistenceAdapter      - Waking for checkpoint to complete.
DEBUG - JournalPersistenceAdapter      - Checkpoint started.
DEBUG - JournalPersistenceAdapter      - Checkpoint done.
DEBUG - JournalMessageStore            - Journalled message add for: ID:p-105825-1398-1175602237242-3:35:1:1:1,
at: 0:10457
DEBUG - DLQ                            - No subscriptions registered, will not dispatch message
at this time.


> better handling of unavailable external http services
> -----------------------------------------------------
>                 Key: SM-910
>                 URL:
>             Project: ServiceMix
>          Issue Type: Improvement
>          Components: servicemix-http
>    Affects Versions: 3.1
>            Reporter: Dominique De Vito
>             Fix For: 3.1.1
>         Attachments: patchfile.txt
>   Original Estimate: 1 hour
>  Remaining Estimate: 1 hour
> The org.apache.servicemix.http.processors.ProviderProcessor calls an external http service.
> When calling an unavailable external http service, the following stack trace appears
after an exception rise:
> Connection refused: connect
>         at Method)
>         at
>         at
>         at
>         at
>         at
>         at
>         at<init>(
>         at<init>(
>         at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(
>         at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(
>         at
>         at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$
>         at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(
>         at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(
>         at org.apache.commons.httpclient.HttpClient.executeMethod(
>         at org.apache.commons.httpclient.HttpClient.executeMethod(
>         at org.apache.servicemix.http.processors.ProviderProcessor.process(
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(
>         at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(
>         at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(
>         at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$
>         at$Worker.runTask(
>         at$
>         at
> I think handling could be improved in case of (exchange instanceof InOnly == false),
so that a response could be returned. 
> See the attached patch.

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

View raw message