The way the new keystone-manage command "token_flush" works right now is quite broken by MySQL and InnoDB's gap locking behavior:
https://bugs.launchpad.net/1188378 Presumably other SQL databases like PostgreSQL will have similar problems with doing massive deletes, but I am less familiar with them. I am trying to solve this in keystone, and my first attempt is here: https://review.openstack.org/#/c/32044/ However, MySQL does not support using "LIMIT" in a sub-query that is feeding an IN() clause, so that approach will not work. Likewise, sqlalchemy does not support the MySQL specific extension to DELETE which allows it to have a LIMIT clause. Now, I can do some hacky things, like just deleting all of the expired tokens from the oldest single second, but that could also potentially be millions of tokens, and thus, millions of gaps to lock. So, there is just not one way to work for all databases, and we have to have a special mode for MySQL. I was wondering if anybody has suggestions and/or examples of how to do that with sqlalchemy. _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev