share metadata will not be deleted when deleting shares

Bug #1657033 reported by TommyLike
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Shared File Systems Service (Manila)
Fix Released
Undecided
TommyLike

Bug Description

Found by db purge command, the foreign key between share and share metadata should not exist(they should all marked soft-deleted when deleting shares), but the fact is that the metadata will not been marked soft-deleted even the share does:

Applied https://review.openstack.org/#/c/308212/19 on https://github.com/openstack/manila/tree/ba747463

$ manila-manage db purge 5
2017-01-16 18:11:17.361 DEBUG oslo_db.api [req-590ed115-8578-4dd6-b67c-70c6a4bde3ae None None] Loading backend 'sqlalchemy' from 'manila.db.sqlalchemy.api' from (pid=23490) _load_backend /usr/local/lib/python2.7/dist-packages/oslo_db/api.py:238
2017-01-16 18:11:17.732 DEBUG oslo_db.sqlalchemy.engines [req-590ed115-8578-4dd6-b67c-70c6a4bde3ae None None] MySQL server mode set to STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION from (pid=23490) _check_effective_sql_mode /usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py:261
2017-01-16 18:11:20.777 ERROR oslo_db.sqlalchemy.exc_filters [req-590ed115-8578-4dd6-b67c-70c6a4bde3ae None None] DBAPIError exception wrapped from (pymysql.err.IntegrityError) (1048, u"Column 'share_id' cannot be null") [SQL: u'UPDATE share_metadata SET updated_at=%(updated_at)s, share_id=%(share_id)s WHERE share_metadata.id = %(share_metadata_id)s'] [parameters: ({'share_id': None, 'share_metadata_id': 6, 'updated_at': datetime.datetime(2017, 1, 16, 16, 11, 20, 776508)}, {'share_id': None, 'share_metadata_id': 7, 'updated_at': datetime.datetime(2017, 1, 16, 16, 11, 20, 776516)}, {'share_id': None, 'share_metadata_id': 8, 'updated_at': datetime.datetime(2017, 1, 16, 16, 11, 20, 776521)})]
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters Traceback (most recent call last):
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1116, in _execute_context
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters context)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 95, in do_executemany
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters rowcount = cursor.executemany(statement, parameters)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 195, in executemany
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters self.rowcount = sum(self.execute(query, arg) for arg in args)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 195, in <genexpr>
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters self.rowcount = sum(self.execute(query, arg) for arg in args)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters result = self._query(query)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters conn.query(q)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 835, in query
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters self._affected_rows = self._read_query_result(unbuffered=unbuffered)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1019, in _read_query_result
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters result.read()
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1302, in read
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters first_packet = self.connection._read_packet()
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 981, in _read_packet
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters packet.check_error()
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters err.raise_mysql_exception(self._data)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters raise errorclass(errno, errval)
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters IntegrityError: (1048, u"Column 'share_id' cannot be null")
2017-01-16 18:11:20.777 TRACE oslo_db.sqlalchemy.exc_filters
2017-01-16 18:11:20.835 ERROR manila.db.sqlalchemy.api [req-590ed115-8578-4dd6-b67c-70c6a4bde3ae None None] Deletion of soft-delete records failed, skipping record (<manila.db.sqlalchemy.models.Share object at 0x7fd31b233290>,).
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api Traceback (most recent call last):
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 3784, in purge_deleted_records
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api session.delete(record)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 490, in __exit__
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api self.rollback()
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api compat.reraise(exc_type, exc_value, exc_tb)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 487, in __exit__
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api self.commit()
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 392, in commit
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api self._prepare_impl()
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 372, in _prepare_impl
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api self.session.flush()
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2019, in flush
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api self._flush(objects)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2137, in _flush
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api transaction.rollback(_capture_exception=True)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api compat.reraise(exc_type, exc_value, exc_tb)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2101, in _flush
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api flush_context.execute()
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 373, in execute
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api rec.execute(self)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 532, in execute
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api uow
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 170, in save_obj
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api mapper, table, update)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 706, in _emit_update_statements
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api execute(statement, multiparams)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api return meth(self, multiparams, params)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api return connection._execute_clauseelement(self, multiparams, params)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api compiled_sql, distilled_params
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api context)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, in _handle_dbapi_exception
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api util.raise_from_cause(newraise, exc_info)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 202, in raise_from_cause
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api reraise(type(exception), exception, tb=exc_tb, cause=cause)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1116, in _execute_context
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api context)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 95, in do_executemany
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api rowcount = cursor.executemany(statement, parameters)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 195, in executemany
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api self.rowcount = sum(self.execute(query, arg) for arg in args)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 195, in <genexpr>
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api self.rowcount = sum(self.execute(query, arg) for arg in args)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api result = self._query(query)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api conn.query(q)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 835, in query
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api self._affected_rows = self._read_query_result(unbuffered=unbuffered)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1019, in _read_query_result
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api result.read()
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1302, in read
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api first_packet = self.connection._read_packet()
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 981, in _read_packet
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api packet.check_error()
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api err.raise_mysql_exception(self._data)
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception
2017-01-16 18:11:20.835 TRACE manila.db.sqlalchemy.api raise errorclass(errno, errval)

TommyLike (hu-husheng)
Changed in manila:
assignee: nobody → TommyLike (hu-husheng)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to manila (master)

Fix proposed to branch: master
Review: https://review.openstack.org/421170

Changed in manila:
assignee: TommyLike (hu-husheng) → zhongjun (jun-zhongjun)
status: New → In Progress
Changed in manila:
assignee: zhongjun (jun-zhongjun) → TommyLike (hu-husheng)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to manila (master)

Reviewed: https://review.openstack.org/421170
Committed: https://git.openstack.org/cgit/openstack/manila/commit/?id=0ec71e29b2f0b817fe7c4fcdcf1918c2eff811a0
Submitter: Jenkins
Branch: master

commit 0ec71e29b2f0b817fe7c4fcdcf1918c2eff811a0
Author: zhongjun2 <email address hidden>
Date: Tue Jan 17 17:14:36 2017 +0800

    Fix metadata's soft-delete error when deleting shares

    Currently we don't soft-delete metadata when deleting shares,
    fix it.

    Change-Id: Iad2031dab2fb6556d45fffb1cadee242ea668133
    Closes-Bug: #1657033

Changed in manila:
status: In Progress → Fix Released
Changed in manila:
milestone: none → ocata-3
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/manila 4.0.0.0b3

This issue was fixed in the openstack/manila 4.0.0.0b3 development milestone.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.