Public bug reported:

Hello,

keystone fails to generate the catalog when there is an entry in 
project_endpoint table with no corresponding project id in project table and 
responds with a 400/Bad request status, instead of cleaning the incorrect entry 
(cf 
https://opendev.org/openstack/keystone/src/branch/master/keystone/catalog/core.py#L308)
 Here is the traceback :
Traceback (most recent call last):
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/wsgi.py", line 
228, in __call__
    result = method(req, **params)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/auth/controllers.py", 
line 144, in authenticate_for_token
    parent_audit_id=token_audit_id)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/manager.py", 
line 123, in wrapped
    __ret_val = __f(*args, **kwargs)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/provider.py", 
line 221, in issue_token
    auth_context, trust, include_catalog, parent_audit_id)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/providers/fernet/core.py",
 line 55, in issue_token
    *args, **kwargs)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/providers/common.py",
 line 481, in issue_token
    audit_info=parent_audit_id)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/providers/common.py",
 line 410, in get_token_data
    project_id, trust)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/providers/common.py",
 line 354, in _populate_service_catalog
    user_id, project_id, domain_id)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/manager.py", 
line 123, in wrapped
    __ret_val = __f(*args, **kwargs)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/dogpile/cache/region.py", line 
1220, in decorate
    should_cache_fn)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/dogpile/cache/region.py", line 
825, in get_or_create
    async_creator) as value:
  File "/opt/keystone/local/lib/python2.7/site-packages/dogpile/lock.py", line 
154, in __enter__
    return self._enter()
  File "/opt/keystone/local/lib/python2.7/site-packages/dogpile/lock.py", line 
94, in _enter
    generated = self._enter_create(createdtime)
  File "/opt/keystone/local/lib/python2.7/site-packages/dogpile/lock.py", line 
145, in _enter_create
    created = self.creator()
  File 
"/opt/keystone/local/lib/python2.7/site-packages/dogpile/cache/region.py", line 
792, in gen_value
    created_value = creator()
  File 
"/opt/keystone/local/lib/python2.7/site-packages/dogpile/cache/region.py", line 
1216, in creator
    return fn(*arg, **kw)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/core.py", 
line 227, in get_v3_catalog
    return self.driver.get_v3_catalog(user_id, project_id, domain_id)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/backends/sql.py",
 line 421, in get_v3_catalog
    self.catalog_api.list_endpoints_for_project(project_id))
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/manager.py", 
line 123, in wrapped
    __ret_val = __f(*args, **kwargs)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/core.py", 
line 300, in list_endpoints_for_project
    project_id)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/manager.py", 
line 123, in wrapped
    __ret_val = __f(*args, **kwargs)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/core.py", 
line 234, in remove_endpoint_from_project
    self.driver.remove_endpoint_from_project(endpoint_id, project_id)
  File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/backends/sql.py",
 line 484, in remove_endpoint_from_project
    with sql.session_for_write() as session:
  File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
    return self.gen.next()
  File 
"/opt/keystone/local/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py",
 line 944, in _transaction_scope
    allow_async=self._allow_async) as resource:
  File 
"/opt/keystone/local/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py",
 line 600, in _produce_block
    self._writer()
  File 
"/opt/keystone/local/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py",
 line 615, in _writer
    "Can't upgrade a READER transaction "
TypeError: Can't upgrade a READER transaction to a WRITER mid-transaction

This bug raised on our old v11.0.3 but has been reproduced with version
20.0.0.0rc2.dev3 (using devstack) by adding an entry in project_endpoint
table without a corresponding project id in project table.

** Affects: keystone
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Identity (keystone).
https://bugs.launchpad.net/bugs/1946974

Title:
  TypeError: Can't upgrade a READER transaction to a WRITER mid-
  transaction

Status in OpenStack Identity (keystone):
  New

Bug description:
  Hello,

  keystone fails to generate the catalog when there is an entry in 
project_endpoint table with no corresponding project id in project table and 
responds with a 400/Bad request status, instead of cleaning the incorrect entry 
(cf 
https://opendev.org/openstack/keystone/src/branch/master/keystone/catalog/core.py#L308)
 Here is the traceback :
  Traceback (most recent call last):
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/wsgi.py", line 
228, in __call__
      result = method(req, **params)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/auth/controllers.py", 
line 144, in authenticate_for_token
      parent_audit_id=token_audit_id)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/manager.py", 
line 123, in wrapped
      __ret_val = __f(*args, **kwargs)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/provider.py", 
line 221, in issue_token
      auth_context, trust, include_catalog, parent_audit_id)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/providers/fernet/core.py",
 line 55, in issue_token
      *args, **kwargs)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/providers/common.py",
 line 481, in issue_token
      audit_info=parent_audit_id)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/providers/common.py",
 line 410, in get_token_data
      project_id, trust)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/token/providers/common.py",
 line 354, in _populate_service_catalog
      user_id, project_id, domain_id)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/manager.py", 
line 123, in wrapped
      __ret_val = __f(*args, **kwargs)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/dogpile/cache/region.py", line 
1220, in decorate
      should_cache_fn)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/dogpile/cache/region.py", line 
825, in get_or_create
      async_creator) as value:
    File "/opt/keystone/local/lib/python2.7/site-packages/dogpile/lock.py", 
line 154, in __enter__
      return self._enter()
    File "/opt/keystone/local/lib/python2.7/site-packages/dogpile/lock.py", 
line 94, in _enter
      generated = self._enter_create(createdtime)
    File "/opt/keystone/local/lib/python2.7/site-packages/dogpile/lock.py", 
line 145, in _enter_create
      created = self.creator()
    File 
"/opt/keystone/local/lib/python2.7/site-packages/dogpile/cache/region.py", line 
792, in gen_value
      created_value = creator()
    File 
"/opt/keystone/local/lib/python2.7/site-packages/dogpile/cache/region.py", line 
1216, in creator
      return fn(*arg, **kw)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/core.py", 
line 227, in get_v3_catalog
      return self.driver.get_v3_catalog(user_id, project_id, domain_id)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/backends/sql.py",
 line 421, in get_v3_catalog
      self.catalog_api.list_endpoints_for_project(project_id))
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/manager.py", 
line 123, in wrapped
      __ret_val = __f(*args, **kwargs)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/core.py", 
line 300, in list_endpoints_for_project
      project_id)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/common/manager.py", 
line 123, in wrapped
      __ret_val = __f(*args, **kwargs)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/core.py", 
line 234, in remove_endpoint_from_project
      self.driver.remove_endpoint_from_project(endpoint_id, project_id)
    File 
"/opt/keystone/local/lib/python2.7/site-packages/keystone/catalog/backends/sql.py",
 line 484, in remove_endpoint_from_project
      with sql.session_for_write() as session:
    File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
      return self.gen.next()
    File 
"/opt/keystone/local/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py",
 line 944, in _transaction_scope
      allow_async=self._allow_async) as resource:
    File 
"/opt/keystone/local/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py",
 line 600, in _produce_block
      self._writer()
    File 
"/opt/keystone/local/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py",
 line 615, in _writer
      "Can't upgrade a READER transaction "
  TypeError: Can't upgrade a READER transaction to a WRITER mid-transaction

  This bug raised on our old v11.0.3 but has been reproduced with
  version 20.0.0.0rc2.dev3 (using devstack) by adding an entry in
  project_endpoint table without a corresponding project id in project
  table.

To manage notifications about this bug go to:
https://bugs.launchpad.net/keystone/+bug/1946974/+subscriptions


-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to