[Openstack] RPC Semantics

Johannes Erdfelt johannes at erdfelt.com
Tue Jun 12 16:55:01 UTC 2012


As part of a patch to add idempotency to the xenapi driver, I've
modified impl_kombu driver to implement delayed ACKs. This is so RPC
messages are retried after nova-compute restarts.

https://review.openstack.org/#/c/7323/

However, this only works with impl_kombu.

impl_qpid does not ACK anything, although since it's AMQP based there
should be an ACK somewhere, I just don't see it in impl_qpid or the Qpid
module so I must be missing something.

0MQ does not have any concept of ACKing messages, which makes sense
since there is no message persistence.

I'm not aware of any formal discussion on what the RPC layer semantics
are, but a set of implied semantics have developed. In particular, that
messages in Openstack cannot reliably be persistent at the RPC layer.

My changes to impl_kombu are obviously not the path forward since they
cannot be implemented in the other RPC drivers, but it's not clear what
the best path forward is.

Is it a custom layer on top of RPC?

Is it an orchestration layer?

Something else?

Related, should queue persistence be disabled in impl_kombu?

JE





More information about the Openstack mailing list