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.
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): by(name= user_name) by(domain_ id=domain_ id)
user_ ref = query.one() UserNotFound( user_id= user_name) filter_ user(user_ ref.to_ dict())
session = sql.get_session() # <-- no transaction
query = session.query(User)
query = query.filter_
query = query.filter_
try:
except sql.NotFound:
raise exception.
return identity.
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.