Another data point: at this summit session we discussed delivering to users notifications about events in the cloud: https://etherpad.openstack.org/p/newton-alternatives-to-polling

It's pretty critical that this have at-least-once delivery semantics, because in future people will be using this to do things like triggering automated recovery when e.g. an instance dies.

The sane way to accomplish this would be to have all services accept a list of Zaqar queues in which to dump notifications (Zaqar already has at-least-once delivery semantics). Unfortunately this means changing a lot of APIs, and this was pre-empted at the session by Nova cores indicating that they would never ever accept such a change.

The alternative proposed was to create some sort of proxy that listens for notifications, sanitises them and drops them into the appropriate Zaqar queues. So this would be an example that:

* Requires at-least-once delivery semantics
* Is fundamentally a message queue (not a job queue, and not RPC)
* Receives notifications sent from oslo.messaging

For those reasons I think it makes sense to have some sort of abstraction in oslo.messaging to permit this.

I am sympathetic to the idea that we should try to make clear that this is for occasions when you are absolutely sure that these are the semantics you want, as in the case of Mistral. Everyone just turning this option on because it sounds safer would be bad. And the risk is high, because the default "at-most-once delivery with no recovery from lost messages" sounds mad when you first hear it. Actually it _is_ mad. But "at-least-once delivery with no handling for duplicate messages" is worse. So +1 for a separate messaging type in addition to call and cast if that will help make clear who this is and is not for.

cheers,
Zane.

On 06/05/16 18:56, Joshua Harlow wrote:
So then let's all get onboard https://review.openstack.org/#/c/260246/?

I've yet to see what all these things called 'process-than-ack' not
seemingly fit into that API in that review. IMHO most of what people are
trying to fit into oslo.messaging here isn't really messages but are
jobs to be completed that should *only* be acked when they are actually
complete.

Which is in part what that review adds/does (extracts the job[1] part
from taskflow so others can use it, without say taking in the rest of
taskflow).

[1] http://docs.openstack.org/developer/taskflow/jobs.html

Dmitry Tantsur wrote:
On 05/04/2016 08:21 AM, Mehdi Abaakouk wrote:

Hi,

That said, I agree with Mehdi that *most* RPC calls throughout
OpenStack,
not being idempotent, should not use process-then-ack.

That why I think we must not call this RPC. And the new API should be
clear the expected idempotent of the application callbacks.

Thoughts from folks (mistral and oslo)?

Also, I was not at the Summit, should I conclude the Tooz+taskflow
approach (that ensure the idempotent of the application within the
library API) have not been accepted by mistral folks ?


Taskflow is pretty opinionated about the whole application design. We
can't use it in ironic-inspector, but we also need process-then-ack
semantics for our HA work.

__________________________________________________________________________

OpenStack Development Mailing List (not for usage questions)
Unsubscribe:
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to