[openstack-dev] [oslo][mistral] Saga of process than ack and where can we go from here...

Zane Bitter zbitter at redhat.com
Tue May 10 19:13:46 UTC 2016


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-request at 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-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




More information about the OpenStack-dev mailing list