Closed
Description
Summary
When some repo is added to the repositories section of composer.json file "Extension Manager" page start working extremely slow.
(I don't recommend to test it - magento has near 200 composer packages. An example below will trigger Magento to call composer show PACKAGE --available
for every installed module.)
Examples
-
Open
composer.json
file in magento root. -
Add or modify "repositories" section as follows:
"repositories": { "swissup": { "type": "composer", "url": "https://docs.swissuplabs.com/packages/" }, "magento": { "type": "composer", "url": "https://repo.magento.com/packages.json" } }
-
Navigate to backend System > Web Setup Wizard
-
The page will load extremely slow.
Proposed solution
I propose to do the following things in Magento/Setup/Model/PackagesData.php:
- Don't call
composer show
for modules found in the marketplace:
@@ -476,21 +476,14 @@
*/
private function getPackageAvailableVersions($package)
{
- $magentoRepositories = $this->composerInformation->getRootRepositories();
-
- // Check we have only one repo.magento.com repository
- if (count($magentoRepositories) === 1
- && strpos($magentoRepositories[0], $this->packagesAuth->getCredentialBaseUrl()) !== false
- ) {
- $packagesJson = $this->getPackagesJson();
-
- if (isset($packagesJson[$package])) {
- $packageVersions = $packagesJson[$package];
- uksort($packageVersions, 'version_compare');
- $packageVersions = array_reverse($packageVersions);
-
- return array_keys($packageVersions);
- }
+ $packagesJson = $this->getPackagesJson();
+
+ if (isset($packagesJson[$package])) {
+ $packageVersions = $packagesJson[$package];
+ uksort($packageVersions, 'version_compare');
+ $packageVersions = array_reverse($packageVersions);
+
+ return array_keys($packageVersions);
}
return $this->getAvailableVersionsFromAllRepositories($package);
- Don't process modules that are not from the marketplace:
@@ -486,7 +486,7 @@
return array_keys($packageVersions);
}
- return $this->getAvailableVersionsFromAllRepositories($package);
+ return [];
}
/**
These changes intentionally remove support of the modules from packagist.org to prevent totally unusable "Extenstion Manager"