Comment 9 for bug 1361378

Revision history for this message
Mike Bayer (zzzeek) wrote :

confirmed in keystone master, keystone is not using transactions and is using the Session in "autocommit" mode for many calls, which is not recommended (see http://docs.sqlalchemy.org/en/rel_0_9/orm/session.html#autocommit-mode):

line 140 of keystone/identity/backends/sql.py:

    def get_user_by_name(self, user_name, domain_id):
        session = sql.get_session() # <-- no transaction
        query = session.query(User)
        query = query.filter_by(name=user_name)
        query = query.filter_by(domain_id=domain_id)
        try:
            user_ref = query.one()
        except sql.NotFound:
            raise exception.UserNotFound(user_id=user_name)
        return identity.filter_user(user_ref.to_dict())

there's no "select 1" emitted if no transaction is begun. I don't know that this was any different in earlier oslo.db versions.