Activity log for bug #1669449

Date Who What changed Old value New value Message
2017-03-02 14:17:39 TommyLike bug added bug
2017-03-02 14:20:38 TommyLike description Currently we don't raise exception if the reservation.commit operation failed, such as size exceed the max value of integer, what's more, these dirty reservation could obstuct the future requests. ``` File "/opt/stack/manila/manila/api/middleware/fault.py", line 72, in __call__ return req.get_response(self.application) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send application, catch_exc_info=False) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application app_iter = application(self.environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__ resp = self.call_func(req, *args, **self.kwargs) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func return self.func(req, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/oslo_middleware/base.py", line 126, in __call__ response = req.get_response(self.application) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send application, catch_exc_info=False) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application app_iter = application(self.environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ return resp(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__ resp = self.call_func(req, *args, **self.kwargs) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func return self.func(req, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 335, in __call__ response = req.get_response(self._app) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send application, catch_exc_info=False) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application app_iter = application(self.environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ return resp(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ return resp(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 141, in __call__ response = self.app(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ return resp(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__ resp = self.call_func(req, *args, **self.kwargs) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func return self.func(req, *args, **kwargs) File "/opt/stack/manila/manila/api/openstack/wsgi.py", line 761, in __call__ content_type, body, accept) File "/opt/stack/manila/manila/api/openstack/wsgi.py", line 819, in _process_stack action_result = self.dispatch(meth, request, action_args) File "/opt/stack/manila/manila/api/openstack/wsgi.py", line 909, in dispatch return method(req=request, **action_args) File "/opt/stack/manila/manila/api/openstack/wsgi.py", line 1051, in version_select return func.func(self, *args, **kwargs) File "/opt/stack/manila/manila/api/v2/shares.py", line 183, in create req, body, check_create_share_from_snapshot_support=True) File "/opt/stack/manila/manila/api/v1/shares.py", line 329, in _create **kwargs) File "/opt/stack/manila/manila/share/api.py", line 141, in create reservations = QUOTAS.reserve(context, shares=1, gigabytes=size) File "/opt/stack/manila/manila/quota.py", line 966, in reserve user_id=user_id) File "/opt/stack/manila/manila/quota.py", line 469, in reserve project_id=project_id, user_id=user_id) File "/opt/stack/manila/manila/db/api.py", line 239, in quota_reserve project_id=project_id, user_id=user_id) File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 164, in wrapper return f(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 144, in wrapper ectxt.reraise = not expected File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__ self.force_reraise() File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise six.reraise(self.type_, self.value, self.tb) File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 139, in wrapper return f(*args, **kwargs) File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 955, in quota_reserve session=session) File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 751, in _reservation_create reservation_ref.save(session=session) File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/models.py", line 50, in save session.flush() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2080, in flush self._flush(objects) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2198, in _flush transaction.rollback(_capture_exception=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2162, in _flush flush_context.execute() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 373, in execute rec.execute(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 532, in execute uow File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 178, in save_obj mapper, table, insert) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 804, in _emit_insert_statement execute(statement, params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute return meth(self, multiparams, params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement compiled_sql, distilled_params File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, in _handle_dbapi_exception util.raise_from_cause(newraise, exc_info) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, in do_execute cursor.execute(statement, parameters) File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute result = self._query(query) File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query conn.query(q) File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 852, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1053, in _read_query_result result.read() File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1336, in read first_packet = self.connection._read_packet() File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1010, in _read_packet packet.check_error() File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error err.raise_mysql_exception(self._data) File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception raise errorclass(errno, errval) DBDataError: (pymysql.err.DataError) (1264, u"Out of range value for column 'delta' at row 1") [SQL: u'INSERT INTO reservations (created_at, updated_at, deleted_at, deleted, uuid, usage_id, project_id, user_id, resource, delta, expire) VALUES (%(created_at)s, %(updated_at)s, %(deleted_at)s, %(deleted)s, %(uuid)s, %(usage_id)s, %(project_id)s, %(user_id)s, %(resource)s, %(delta)s, %(expire)s)'] [parameters: {'deleted_at': None, 'resource': 'gigabytes', 'uuid': 'a0000d0a-d247-4754-9c18-f73dce3e3c18', 'deleted': 0, 'created_at': datetime.datetime(2017, 3, 2, 6, 31, 26, 476109), 'updated_at': None, 'expire': datetime.datetime(2017, 3, 3, 6, 31, 25, 850753), 'delta': 2247483646, 'user_id': u'2f8d19caf32b4a8981f1689b0a3e1cd4', 'project_id': u'c73b285fec9e47af951732804a3d0a3a', 'usage_id': 21}] ``` Currently we don't raise exception if the reservation.commit operation failed, such as size exceed the max value of integer, what's more, these dirty reservation could obstuct the future requests. ``` File "/opt/stack/manila/manila/api/middleware/fault.py", line 72, in __call__   return req.get_response(self.application) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send   application, catch_exc_info=False) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application   app_iter = application(self.environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__   resp = self.call_func(req, *args, **self.kwargs) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func   return self.func(req, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/oslo_middleware/base.py", line 126, in __call__   response = req.get_response(self.application) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send   application, catch_exc_info=False) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application   app_iter = application(self.environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__   return resp(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__   resp = self.call_func(req, *args, **self.kwargs) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func   return self.func(req, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 335, in __call__   response = req.get_response(self._app) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send   application, catch_exc_info=False) File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application   app_iter = application(self.environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__   return resp(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__   return resp(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 141, in __call__   response = self.app(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__   return resp(environ, start_response) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__   resp = self.call_func(req, *args, **self.kwargs) File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func   return self.func(req, *args, **kwargs) File "/opt/stack/manila/manila/api/openstack/wsgi.py", line 761, in __call__   content_type, body, accept) File "/opt/stack/manila/manila/api/openstack/wsgi.py", line 819, in _process_stack   action_result = self.dispatch(meth, request, action_args) File "/opt/stack/manila/manila/api/openstack/wsgi.py", line 909, in dispatch   return method(req=request, **action_args) File "/opt/stack/manila/manila/api/openstack/wsgi.py", line 1051, in version_select   return func.func(self, *args, **kwargs) File "/opt/stack/manila/manila/api/v2/shares.py", line 183, in create   req, body, check_create_share_from_snapshot_support=True) File "/opt/stack/manila/manila/api/v1/shares.py", line 329, in _create   **kwargs) File "/opt/stack/manila/manila/share/api.py", line 141, in create   reservations = QUOTAS.reserve(context, shares=1, gigabytes=size) File "/opt/stack/manila/manila/quota.py", line 966, in reserve   user_id=user_id) File "/opt/stack/manila/manila/quota.py", line 469, in reserve   project_id=project_id, user_id=user_id) File "/opt/stack/manila/manila/db/api.py", line 239, in quota_reserve   project_id=project_id, user_id=user_id) File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 164, in wrapper   return f(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 144, in wrapper   ectxt.reraise = not expected File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__   self.force_reraise() File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise   six.reraise(self.type_, self.value, self.tb) File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 139, in wrapper   return f(*args, **kwargs) File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 955, in quota_reserve   session=session) File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 751, in _reservation_create   reservation_ref.save(session=session) File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/models.py", line 50, in save   session.flush() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2080, in flush   self._flush(objects) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2198, in _flush   transaction.rollback(_capture_exception=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__   compat.reraise(exc_type, exc_value, exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2162, in _flush   flush_context.execute() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 373, in execute   rec.execute(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 532, in execute   uow File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 178, in save_obj   mapper, table, insert) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 804, in _emit_insert_statement   execute(statement, params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute   return meth(self, multiparams, params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection   return connection._execute_clauseelement(self, multiparams, params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement   compiled_sql, distilled_params File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context   context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, in _handle_dbapi_exception   util.raise_from_cause(newraise, exc_info) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause   reraise(type(exception), exception, tb=exc_tb, cause=cause) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context   context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, in do_execute   cursor.execute(statement, parameters) File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute   result = self._query(query) File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query   conn.query(q) File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 852, in query   self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1053, in _read_query_result   result.read() File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1336, in read   first_packet = self.connection._read_packet() File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1010, in _read_packet   packet.check_error() File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error   err.raise_mysql_exception(self._data) File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception   raise errorclass(errno, errval) DBDataError: (pymysql.err.DataError) (1264, u"Out of range value for column 'delta' at row 1") [SQL: u'INSERT INTO reservations (created_at, updated_at, deleted_at, deleted, uuid, usage_id, project_id, user_id, resource, delta, expire) VALUES (%(created_at)s, %(updated_at)s, %(deleted_at)s, %(deleted)s, %(uuid)s, %(usage_id)s, %(project_id)s, %(user_id)s, %(resource)s, %(delta)s, %(expire)s)'] [parameters: {'deleted_at': None, 'resource': 'gigabytes', 'uuid': 'a0000d0a-d247-4754-9c18-f73dce3e3c18', 'deleted': 0, 'created_at': datetime.datetime(2017, 3, 2, 6, 31, 26, 476109), 'updated_at': None, 'expire': datetime.datetime(2017, 3, 3, 6, 31, 25, 850753), 'delta': 2247483646, 'user_id': u'2f8d19caf32b4a8981f1689b0a3e1cd4', 'project_id': u'c73b285fec9e47af951732804a3d0a3a', 'usage_id': 21}] ```
2017-03-02 14:37:10 OpenStack Infra manila: status New In Progress
2017-03-02 14:37:10 OpenStack Infra manila: assignee TommyLike (hu-husheng)
2017-03-02 21:10:08 OpenStack Infra manila: assignee TommyLike (hu-husheng) Tom Barron (tpb)
2017-04-07 00:57:22 OpenStack Infra manila: assignee Tom Barron (tpb) TommyLike (hu-husheng)
2017-04-18 12:53:27 OpenStack Infra manila: assignee TommyLike (hu-husheng) Valeriy Ponomaryov (vponomaryov)
2017-04-22 19:21:13 OpenStack Infra manila: status In Progress Fix Released