[openstack-dev] RPC duplicate message bug fix.

Eric Windisch eric at cloudscaling.com
Thu Feb 21 18:24:13 UTC 2013


>  
> I'm curious. How do you propose to implement a toggle (a check) say for AMQP mirroring in common code? Putting implementation specific checks in common code is what concerns me. We either require all implementations to do duplicate message checking (even future ones) or we move it to implementation specific code. That is my opinion.
>  
I meant through a configuration variable, set by the administrator. However, this isn't too pretty as one would need to know that with AMQP mirroring, they'd need to also enable this other option. That isn't very pretty… one alternative is as you suggest, to just do this everywhere, all the time. Doing it for all implementations is what you and I seemed to agree upon (amongst each other), for a lack of a better idea.

> It seems better for the implementation specific code (e.g. AMQP) to check whether some common feature like message singing is enabled and not do duplicate message checking if it were.
>  
> > I have nothing against the AMQP-specific patch
> > directly, except that I foresee a need to do this in rpc-common for
> > Havana, and we'll be making a mess for backwards compatibility.
>  
>  
> One of my points about duplicate message checking in general is that it is backward and forward compatible. If a unique ID exists in the message then it is used for duplicate checking. If a unique ID does not exist, then duplicate checking simply isn't done. That doesn't sound messy.
If we introduced an rpc/common.py check in Havana, then we'd need to keep the AMQP-specific code working for compatibility with Grizzly. Then, we'd be checking messages twice.  Only in the I release could the AMQP-specific solution be removed, and I do think it should then be removed, because there would be no value in twice checking for duplicates. Unless, of course, we decide a way to simplify this.

The more I think about this, the more I think the solution might be:

1. (Grizzly)  Merge an AMQP-specific check
2. (Havana) Merge a message-signing oriented check which will:
  a) refactor the AMQP-specific check for DYI purposes, without significantly affecting its behavior or functionality except as otherwise noted below.
  b) make the AMQP-specific check disable itself if message-signing is enabled.
  c) enable a duplicate-check in rpc-common if message-signing is enabled.

I think this will eliminate both my own concerns for the long-term, the concerns regarding ease-of-configuration, as well as the immediate concerns for Grizzly.

We'd be eliminating any significant duplication of code through reusing the implementation, preventing concerns of forward/backward compatibility or double-checking by simply disabling the AMQP-specific code-path when the not-backwards-compatible message-signing feature is enabled.

Regards,
Eric Windisch






More information about the OpenStack-dev mailing list