[openstack-dev] [nova][neutron][mysql] IMPORTANT: MySQL Galera does *not* support SELECT ... FOR UPDATE

Robert Collins robertc at robertcollins.net
Thu May 29 18:31:05 UTC 2014


On 20 May 2014 20:53, Julien Danjou <julien at danjou.info> wrote:
> On Mon, May 19 2014, Jay Pipes wrote:
>
>> I think at that point I mentioned that there were a number of places that
>> were using the SELECT ... FOR UPDATE construct in Nova (in SQLAlchemy, it's
>> the with_lockmode('update') modification of the query object). Peter
>> promptly said that was a problem. MySQL Galera does not support SELECT ...
>> FOR UPDATE, since it has no concept of cross-node locking of records and
>> results are non-deterministic.
>
> So you send a command that's not supported and the whole software
> deadlocks? Is there a bug number about that or something? I cannot
> understand how this can be possible and considered as something normal
> (that's the feeling I have reading your mail, I may be wrong).

No, Galera keeps right on running, and signals a transaction rollback
to the client.


> 5) Stop leveling down our development, and rely and leverage a powerful
> RDBMS that provides interesting feature, such as PostgreSQL.
>
> Sorry, had to say it, but it's pissing me off to see the low quality of
> the work that is done around SQL in OpenStack.

I'm a huge PostgreSQL fan, but last I heard PostgreSQL-XC was still
fairly raw (and PostgreSQL replication + failover is a PITA to
operate, so please don't suggest that as equivalent :)).

I do have huge sympathy for the idea of picking a single specific
implementation of common layers and then deriving advantage from, but
thats not how our community has grown so far:
 - we support many RDBMS
 - we support many MQs
 - we support many dogpile cache backends

If we're going to change this we need to have a fairly broad
discussion about the impact - the pros *and cons*. There's a certain
amount of hybrid vigour we get from supporting multiple backends - we
can scale in ways that a single backend might not; we can deploy in
environments that have hard corporate policies about 'the one true $X
is $Y'.

-Rob

-- 
Robert Collins <rbtcollins at hp.com>
Distinguished Technologist
HP Converged Cloud



More information about the OpenStack-dev mailing list