Follow-up from #1987888: Convert update_manual_status() to a new style controller.

The controller conversion issue (above) moved all of the meaningful code of the update system into classes. However, those classes are still pretty darned big and godly. It could stand to have further refactoring to break it up into discrete, single-purpose services.

As none of those classes is really part of the public API of Drupal, this is neither beta blocking nor release blocking. It's still something we should do, though.

That is, I do not consider refactoring those classes entirely to be an API break; if the committers wish to disagree with me on that they're welcome to do so, but IMO this falls into the "not an API break, so safe for 8.1" category. If necessary we can quickly tag those classes to indicate that.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

Crell’s picture

Status: Needs review » Active
Related issues: +#1987888: Convert update_manual_status() to a new style controller

Dur, Dreditor...

ParisLiakos’s picture

i would like to see some method renamings here as well
eg

  1. UpdateManagerInterface::fetchDataBatch()

    makes no sense to me..maybe fetchDataUsingBatch or w/e, maybe just fetchData?

  2. UpdateManagerInterface::projectStorage()

    would be a lot better to be getProjectStorage instead

  3. UpdateProcessorInterface::numberOfQueueItems()

    same getNumberOfQueueItems

  4. UpdateFetcherInterface::getFetchBaseUrl()
    hmm, thats very confusing :) maybe just getBaseUrl
kim.pepper’s picture

Those batch callbacks confuse the hell out of me.

Personally, I'd like to see UpdateProcessor::parseXml() moved to a separate UpdateInfoParserInterface.

InternetDevels’s picture

Status: Active » Needs review
FileSize
8.17 KB

I've tried to rename methods as it is mentioned in #2. I hope this may be useful, just ignore my patch if it is not :).

Status: Needs review » Needs work

The last submitted patch, 4: drupal-core-method-renamings-2167779-4.patch, failed testing.

zengenuity’s picture

Status: Needs work » Needs review
FileSize
87.23 KB

Here is a first attempt at refactoring these classes. I've added UpdateParserInterface and UpdateParser as suggested by @kim.pepper, and reorganized some of the functions between UpdateManager and UpdateProcessor to reduce external dependencies. I also integrated all of the functions from update.fetch.inc and update.compare.inc, and replaced them with deprecated stubs in those files.

jhedstrom’s picture

Status: Needs review » Needs work
Issue tags: +Needs reroll
deepakaryan1988’s picture

Assigned: Unassigned » deepakaryan1988
Status: Needs work » Active
deepakaryan1988’s picture

Re-rolling patch which is in #6 but I think it's not correct.
I think it will needs to re-roll.

Will do after this patch.

deepakaryan1988’s picture

Assigned: deepakaryan1988 » Unassigned
Status: Active » Needs review

Status: Needs review » Needs work

The last submitted patch, 9: drupal_update_refactor-2167779-9.patch, failed testing.

Nitesh Sethia’s picture

Status: Needs work » Needs review
FileSize
87.32 KB

Rerolled the patch.

Status: Needs review » Needs work

The last submitted patch, 12: break_up_update_system-2167779-12.patch, failed testing.

Nitesh Sethia’s picture

Status: Needs work » Active
Issue tags: -Needs reroll

The patch is not correct. So changing the status to Active so that someone can pick this up.

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.

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

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.