Petals ESB Container

After/During component shutdown, reinject the exchanges left in the DeliveryChannel into the NMR

Details

  • Type: Improvement Request Improvement Request
  • Status: Resolved Resolved
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 5.0.0
  • Fix Version/s: 5.0.1
  • Component/s: Router
  • Security Level: Public
  • Description:
    Hide

    Currently, if there is exchanges still in the queue of the DeliveryChannel when a component is shut down, these messages are simply lost.

    For the new exchanges (those that are not answers to previous exchanges), it would make sense to reinject them in the router because:

    • either there is other provider that can answer them.
    • either there is not and the consumer should get an error for its request.

    For the non-new exchange, an error should be sent back to the consumer.

    This goes in the way to improve the reliability of the container for message delivery (PETALSDISTRIB-146).

    Show
    Currently, if there is exchanges still in the queue of the DeliveryChannel when a component is shut down, these messages are simply lost. For the new exchanges (those that are not answers to previous exchanges), it would make sense to reinject them in the router because:
    • either there is other provider that can answer them.
    • either there is not and the consumer should get an error for its request.
    For the non-new exchange, an error should be sent back to the consumer. This goes in the way to improve the reliability of the container for message delivery (PETALSDISTRIB-146).
  • Environment:
    -

Issue Links

Activity

Victor NOËL made changes - Wed, 6 Jan 2016 - 14:28:54 +0100
Field Original Value New Value
Status New [ 10000 ] Open [ 10002 ]
Priority Major [ 3 ]
Assignee Christophe DENEUX [ cdeneux ] Victor NOËL [ vnoel ]
Victor NOËL made changes - Wed, 6 Jan 2016 - 14:28:59 +0100
Status Open [ 10002 ] In Progress [ 10003 ]
Victor NOËL made changes - Wed, 6 Jan 2016 - 14:29:20 +0100
Link This issue blocks PETALSDISTRIB-146 [ PETALSDISTRIB-146 ]
Victor NOËL made changes - Wed, 6 Jan 2016 - 14:50:31 +0100
Component/s Router [ 10070 ]
Component/s Micro-kernel [ 10291 ]
Hide
Victor NOËL added a comment - Thu, 7 Jan 2016 - 15:54:20 +0100

Open question: in case of non-new exchanges, should we send back an error or simply skip them (by logging it of course)?

Show
Victor NOËL added a comment - Thu, 7 Jan 2016 - 15:54:20 +0100 Open question: in case of non-new exchanges, should we send back an error or simply skip them (by logging it of course)?
Hide
Christophe DENEUX added a comment - Thu, 7 Jan 2016 - 16:11:06 +0100

FYI, no more service unit is deployed when shutting down a component.
So, IMO, when shutting down a component, the only messages that should be processed are the messages of new exchanges sent to the native endpoints that was enqueued when the component was stopped. These messages should be redirected to another similar endpoint is it exists, or an error (endpoint not found) should be returned.

Show
Christophe DENEUX added a comment - Thu, 7 Jan 2016 - 16:11:06 +0100 FYI, no more service unit is deployed when shutting down a component. So, IMO, when shutting down a component, the only messages that should be processed are the messages of new exchanges sent to the native endpoints that was enqueued when the component was stopped. These messages should be redirected to another similar endpoint is it exists, or an error (endpoint not found) should be returned.
Hide
Victor NOËL added a comment - Thu, 7 Jan 2016 - 16:16:19 +0100

Yeah I know… that's the whole point of this issue

What is your opinion on my open question?

Show
Victor NOËL added a comment - Thu, 7 Jan 2016 - 16:16:19 +0100 Yeah I know… that's the whole point of this issue What is your opinion on my open question?
Hide
Christophe DENEUX added a comment - Thu, 7 Jan 2016 - 16:35:53 +0100 - edited

If non-new exchanges happen when shutting down a component:

  1. log a message
  2. and, if possible and not too difficult, send back an error according to the current MEP.
Show
Christophe DENEUX added a comment - Thu, 7 Jan 2016 - 16:35:53 +0100 - edited If non-new exchanges happen when shutting down a component:
  1. log a message
  2. and, if possible and not too difficult, send back an error according to the current MEP.
Hide
Victor NOËL added a comment - Mon, 11 Jan 2016 - 15:39:02 +0100

Fixed in trunk.

An error is sent back if an exchange is still active but is not a new one (the MEP was already started).

Show
Victor NOËL added a comment - Mon, 11 Jan 2016 - 15:39:02 +0100 Fixed in trunk. An error is sent back if an exchange is still active but is not a new one (the MEP was already started).
Victor NOËL made changes - Mon, 11 Jan 2016 - 15:39:02 +0100
Status In Progress [ 10003 ] Resolved [ 10004 ]
Fix Version/s 5.0.1 [ 10579 ]
Resolution Fixed [ 1 ]
Hide
Victor NOËL added a comment - Mon, 11 Jan 2016 - 17:11:25 +0100

Reopen: I forgot to handle the case when the component is in shutdown state and other exchanges arrive after. They must be reinjected too if possible.

Show
Victor NOËL added a comment - Mon, 11 Jan 2016 - 17:11:25 +0100 Reopen: I forgot to handle the case when the component is in shutdown state and other exchanges arrive after. They must be reinjected too if possible.
Victor NOËL made changes - Mon, 11 Jan 2016 - 17:11:25 +0100
Status Resolved [ 10004 ] Open [ 10002 ]
Resolution Fixed [ 1 ]
Victor NOËL made changes - Tue, 12 Jan 2016 - 11:19:00 +0100
Status Open [ 10002 ] In Progress [ 10003 ]
Victor NOËL made changes - Tue, 12 Jan 2016 - 11:40:55 +0100
Status In Progress [ 10003 ] Resolved [ 10004 ]
Resolution Fixed [ 1 ]
Victor NOËL made changes - Fri, 22 Jan 2016 - 15:38:51 +0100
Description Currently, if there is exchanges still in the queue of the DeliveryChannel when a component is shut down, these messages are simply lost.

For the new exchanges (those that are not answers to previous exchanges), it would make sense to reinject them in the router because:
 - either there is other provider that can answer them.
 - either there is not and the consumer should get an error for its request.

This goes in the way to improve the reliability of the container for message delivery (PETALSDISTRIB-146).
Currently, if there is exchanges still in the queue of the DeliveryChannel when a component is shut down, these messages are simply lost.

For the new exchanges (those that are not answers to previous exchanges), it would make sense to reinject them in the router because:
 - either there is other provider that can answer them.
 - either there is not and the consumer should get an error for its request.

For the non-new exchange, an error should be sent back to the consumer.

This goes in the way to improve the reliability of the container for message delivery (PETALSDISTRIB-146).
Victor NOËL made changes - Fri, 22 Jan 2016 - 15:39:14 +0100
Summary During component shutdown, reinject the exchanges left in the DeliveryChannel into the router After/During component shutdown, reinject the exchanges left in the DeliveryChannel into the NMR
Transition Status Change Time Execution Times Last Executer Last Execution Date
New New Open Open
7s
1
Victor NOËL
Wed, 6 Jan 2016 - 14:28:54 +0100
Open Open In Progress In Progress
5s
1
Victor NOËL
Wed, 6 Jan 2016 - 14:28:59 +0100
In Progress In Progress Resolved Resolved
5d 1h 10m
1
Victor NOËL
Mon, 11 Jan 2016 - 15:39:02 +0100
Resolved Resolved Open Open
1h 32m
1
Victor NOËL
Mon, 11 Jan 2016 - 17:11:25 +0100
Open Open In Progress In Progress
18h 7m
1
Victor NOËL
Tue, 12 Jan 2016 - 11:19:00 +0100
In Progress In Progress Resolved Resolved
21m 55s
1
Victor NOËL
Tue, 12 Jan 2016 - 11:40:55 +0100



People

Dates

  • Created:
    Wed, 6 Jan 2016 - 14:28:47 +0100
    Updated:
    Fri, 22 Jan 2016 - 15:39:14 +0100
    Resolved:
    Tue, 12 Jan 2016 - 11:40:55 +0100