Similarly to #355905: node_delete_multiple() has to use batch API, I discovered that there are no functions for mass-updating comments in a batch yet.

Aside from the fact that an administrator can delete many comments using the node mass-operations on admin/content/comment, the new account cancellation methods also allow administrators to delete all contents of a user. When an administrator is forced to delete a long-time user with all of his content, then this could easily result in thousands of comments having to be deleted.

We have two options to solve this issue:

  1. Introduce a comment_mass_update() function, using the same pattern as node_mass_update(), and also a comment_mass_delete() function - most probably leading to almost identical/duplicated code.
  2. Introduce a comment_mass_update() function, using the same pattern as the proposed for node_mass_update(), i.e. passing array('cid' => NULL) can only mean that comments shall be deleted.

Comments

Dave Reid’s picture

sun’s picture

Status: Closed (duplicate) » Active
Issue tags: +Release blocker, +API clean-up

Nope. That other issue wants to revamp the entire UI.

This bug is critical and we cannot release without it.

moshe weitzman’s picture

Not sure I understand this. We introduced comment_delete_multiple() a while back. Having said that, we don't let all add-on modules do multiple delete. We do module_invoke_all('comment_delete', $comment); for each comment. Same for nodes.

sun’s picture

Hm. Those *_delete_multiple() functions do not use Batch API. As mentioned in the related issue #355905: node_delete_multiple() has to use batch API: when a user account is cancelled, it is possible that thousands of nodes and comments need to be updated or deleted - depending on the user account cancellation method.

- Since both nodes and comments are fieldable now, and there can be zero to unlimited enabled modules that integrate with them, a single update or delete can take quite some time.

- node_user_cancel() and comment_user_cancel() look fairly similar.

- However, node_mass_update() adds to a batch to prevent a timeout. There is no comment_mass_update(), though hook_comment_update() is invoked during comment_save().

- That said, comment_user_cancel() directly updates comments in the database and is not invoking any other modules in case for an update, which looks totally wrong to me.

sun’s picture

Issue tags: -Release blocker

This may lead to a max_execution_time WSOD when updating/deleting thousands of contents due to a user cancelling the account, and that's critical, but that doesn't block a release.

catch’s picture

There's a few related issues here, some of which are duplicate of #89181: Use queue API for node and comment, user, node multiple deletes but leaving both open for now.

catch’s picture

Status: Active » Closed (duplicate)

Marking duplicate per #6, we only need one issue for this.

sun’s picture

sun’s picture

Title: Missing comment_mass_update() (and optionally comment_mass_delete()) function » comment_delete_multiple() has to use batch API
catch’s picture

catch’s picture

Status: Active » Closed (duplicate)
catch’s picture

Title: comment_delete_multiple() has to use batch API » Add comment_mass_update()
Priority: Critical » Normal
Status: Closed (duplicate) » Active

Actually we do need this for updates, even though deletes are handled in the other issue. #699596: (Un)publishing several comments doesn't work fixes a critical bug in comment module, but means we save 50 comments without a batch operation. That's acceptable, but not ideal, so we should add a proper mass_update with batch support and call that from the admin submit. There may well be other places where we do indeed need to update arbitrary numbers of comments, but I've not looked yet.

marcingy’s picture

Version: 7.x-dev » 8.x-dev
Category: bug » task

This is a task not a bug.

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

andypost’s picture

Issue summary: View changes
Status: Active » Closed (duplicate)
Parent issue: » #3043725: Provide a Entity Handler for user cancelation

I find it duplicate and it now only about user cancellation #3043725: Provide a Entity Handler for user cancelation