and glance-api rasie an error:
2016-01-18 09:19:43.529 ERROR glance.common.wsgi [req-42da22da-fc07-4fff-a6b3-e7df2a587e5d 3679e374793d474b9a4938a269896f4b 51d3c5e987d64e1881e176ab607f4445] Caught error: Multiple rows were found for one() 2016-01-18 09:19:43.529 TRACE glance.common.wsgi Traceback (most recent call last): 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/common/wsgi.py", line 882, in __call__ 2016-01-18 09:19:43.529 TRACE glance.common.wsgi request, **action_args) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/common/wsgi.py", line 911, in dispatch 2016-01-18 09:19:43.529 TRACE glance.common.wsgi return method(*args, **kwargs) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/common/utils.py", line 423, in wrapped 2016-01-18 09:19:43.529 TRACE glance.common.wsgi return func(self, req, *args, **kwargs) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/api/v2/image_tags.py", line 78, in delete 2016-01-18 09:19:43.529 TRACE glance.common.wsgi image_repo.save(image) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/domain/proxy.py", line 99, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.save(base_item, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/notifier.py", line 458, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi super(ImageRepoProxy, self).save(image, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/domain/proxy.py", line 99, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.save(base_item, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/api/policy.py", line 125, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi return super(ImageRepoProxy, self).save(image, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/domain/proxy.py", line 99, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.save(base_item, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/quota/__init__.py", line 112, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi return super(ImageRepoProxy, self).save(image, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/domain/proxy.py", line 99, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.save(base_item, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/location.py", line 65, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = super(ImageRepoProxy, self).save(image, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/domain/proxy.py", line 99, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.save(base_item, from_state=from_state) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/db/__init__.py", line 281, in save 2016-01-18 09:19:43.529 TRACE glance.common.wsgi image.tags) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/db/sqlalchemy/api.py", line 1186, in image_tag_set_all 2016-01-18 09:19:43.529 TRACE glance.common.wsgi image_tag_delete(context, image_id, tag, session) 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/glance/glance/db/sqlalchemy/api.py", line 1206, in image_tag_delete 2016-01-18 09:19:43.529 TRACE glance.common.wsgi tag_ref = query.one() 2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2698, in one 2016-01-18 09:19:43.529 TRACE glance.common.wsgi "Multiple rows were found for one()") 2016-01-18 09:19:43.529 TRACE glance.common.wsgi MultipleResultsFound: Multiple rows were found for one()
So I guess this is a sqlalchemy lib error? or is there a way to let sqlalchemy(or oslo.db) know the case-sensitive.
I found a bug similar: https://bugs.launchpad.net/oslo.db/+bug/1435265
and glance-api rasie an error:
2016-01-18 09:19:43.529 ERROR glance.common.wsgi [req-42da22da- fc07-4fff- a6b3-e7df2a587e 5d 3679e374793d474 b9a4938a269896f 4b 51d3c5e987d64e1 881e176ab607f44 45] Caught error: Multiple rows were found for one() glance/ glance/ common/ wsgi.py" , line 882, in __call__ glance/ glance/ common/ wsgi.py" , line 911, in dispatch glance/ glance/ common/ utils.py" , line 423, in wrapped glance/ glance/ api/v2/ image_tags. py", line 78, in delete save(image) glance/ glance/ domain/ proxy.py" , line 99, in save save(base_ item, from_state= from_state) glance/ glance/ notifier. py", line 458, in save Proxy, self).save(image, from_state= from_state) glance/ glance/ domain/ proxy.py" , line 99, in save save(base_ item, from_state= from_state) glance/ glance/ api/policy. py", line 125, in save Proxy, self).save(image, from_state= from_state) glance/ glance/ domain/ proxy.py" , line 99, in save save(base_ item, from_state= from_state) glance/ glance/ quota/_ _init__ .py", line 112, in save Proxy, self).save(image, from_state= from_state) glance/ glance/ domain/ proxy.py" , line 99, in save save(base_ item, from_state= from_state) glance/ glance/ location. py", line 65, in save Proxy, self).save(image, from_state= from_state) glance/ glance/ domain/ proxy.py" , line 99, in save save(base_ item, from_state= from_state) glance/ glance/ db/__init_ _.py", line 281, in save glance/ glance/ db/sqlalchemy/ api.py" , line 1186, in image_tag_set_all delete( context, image_id, tag, session) glance/ glance/ db/sqlalchemy/ api.py" , line 1206, in image_tag_delete lib/python2. 7/dist- packages/ sqlalchemy/ orm/query. py", line 2698, in one Found: Multiple rows were found for one()
2016-01-18 09:19:43.529 TRACE glance.common.wsgi Traceback (most recent call last):
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi request, **action_args)
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi return method(*args, **kwargs)
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi return func(self, req, *args, **kwargs)
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi image_repo.
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi super(ImageRepo
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi return super(ImageRepo
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi return super(ImageRepo
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = super(ImageRepo
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi result = self.base.
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi image.tags)
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi image_tag_
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/opt/stack/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi tag_ref = query.one()
2016-01-18 09:19:43.529 TRACE glance.common.wsgi File "/usr/local/
2016-01-18 09:19:43.529 TRACE glance.common.wsgi "Multiple rows were found for one()")
2016-01-18 09:19:43.529 TRACE glance.common.wsgi MultipleResults
So I guess this is a sqlalchemy lib error? or is there a way to let sqlalchemy(or oslo.db) know the case-sensitive.
I found a bug similar: /bugs.launchpad .net/oslo. db/+bug/ 1435265
https:/