Debdiff for Focal ** Description changed:
- Observed downstream in a large scale cluster with constant create/delete - server activity and hundreds of thousands of deleted instances rows. + [Impact] + Originally, Nova archives deleted rows in batches consisting of a maximum number of parent rows (max_rows) plus their child rows, all within a single database transaction. + This approach limits the maximum value of max_rows that can be specified by the caller due to the potential size of the database transaction it could generate. + Additionally, this behavior can cause the cleanup process to frequently encounter the following error: + oslo_db.exception.DBError: (pymysql.err.InternalError) (3100, "Error on observer while running replication hook 'before_commit'.") - Currently, we archive deleted rows in batches of max_rows parents + - their child rows in a single database transaction. Doing it that way - limits how high a value of max_rows can be specified by the caller - because of the size of the database transaction it could generate. + The error arises when the transaction exceeds the group replication transaction size limit, a safeguard implemented to prevent potential MySQL crashes [1]. + The default value for this limit is approximately 143MB. - For example, in a large scale deployment with hundreds of thousands of - deleted rows and constant server creation and deletion activity, a - value of max_rows=1000 might exceed the database's configured maximum - packet size or timeout due to a database deadlock, forcing the operator - to use a much lower max_rows value like 100 or 50. + [Fix] + An upstream commit has changed the logic to archive one parent row and its related child rows in a single database transaction. + This change allows operators to choose more predictable values for max_rows and achieve more progress with each invocation of archive_deleted_rows. + Additionally, this commit reduces the chances of encountering the issue where the transaction size exceeds the group replication transaction size limit. - And when the operator has e.g. 500,000 deleted instances rows (and - millions of deleted rows total) they are trying to archive, being - forced to use a max_rows value several orders of magnitude lower than - the number of rows they need to archive is a poor user experience and - also makes it unclear if archive progress is actually being made. + commit 697fa3c000696da559e52b664c04cbd8d261c037 + Author: melanie witt <melwi...@gmail.com> + CommitDate: Tue Jun 20 20:04:46 2023 +0000 + + database: Archive parent and child rows "trees" one at a time + + [Test Plan] + 1. Create an instance and delete it in OpenStack. + 2. Log in to the Nova database and confirm that there is an entry with a deleted_at value that is not NULL. + select display_name, deleted_at from instances where deleted_at <> 0; + 3. Execute the following command, ensuring that the timestamp specified in --before is later than the deleted_at value: + nova-manage db archive_deleted_rows --before "XXX-XX-XX XX:XX:XX" --verbose --until-complete + 4. Log in to the Nova database again and confirm that the entry has been archived and removed. + select display_name, deleted_at from instances where deleted_at <> 0; + + [Where problems could occur] + The commit changes the logic for archiving deleted entries to reduce the size of transactions generated during the operation. + If the patch contains errors, it will only impact the archiving of deleted entries and will not affect other functionalities. + + [1] https://bugs.mysql.com/bug.php?id=84785 ** Patch added: "lp2024258-nova-focal.debdiff" https://bugs.launchpad.net/ubuntu/+source/nova/+bug/2024258/+attachment/5783537/+files/lp2024258-nova-focal.debdiff -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2024258 Title: Performance degradation archiving DB with large numbers of FK related records To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/2024258/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs