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

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.
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).
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 - 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: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 - 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)?

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