Skip to content

Commit

Permalink
Merge pull request #86 from magento-commerce/develop
Browse files Browse the repository at this point in the history
MCLOUD-11149: MCP Release 1.0.24
  • Loading branch information
BaDos authored Sep 13, 2023
2 parents 679b923 + bdb763c commit 3622772
Show file tree
Hide file tree
Showing 3 changed files with 138 additions and 1 deletion.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "magento/magento-cloud-patches",
"description": "Provides critical fixes for Magento 2 Enterprise Edition",
"type": "magento2-component",
"version": "1.0.23",
"version": "1.0.24",
"license": "OSL-3.0",
"repositories": {
"repo.magento.com": {
Expand Down
3 changes: 3 additions & 0 deletions patches.json
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,9 @@
"Fixes the error 'The file can't be deleted. Warning!unlink: No such file or directory' when flushing JS/CSS cache from the Admin": {
">=2.4.0 <2.4.1-p1": "MCLOUD-10279__errors_when_flushing_js_css_cache_from_admin__2.4.0.patch",
">=2.4.1-p1 <2.4.7": "MCLOUD-10279__errors_when_flushing_js_css_cache_from_admin__2.4.4.patch"
},
"Reduced the number of times the same deployment configurations load": {
">=2.4.6 <2.4.6-p2": "MCLOUD-10604__performance_degradation_around_deployment_configuration__2.4.6.patch"
}
},
"magento/module-paypal": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
diff -Nuar a/vendor/magento/framework/App/DeploymentConfig.php b/vendor/magento/framework/App/DeploymentConfig.php
index 6713baa3a1d..64f32d5516b 100644
--- a/vendor/magento/framework/App/DeploymentConfig.php
+++ b/vendor/magento/framework/App/DeploymentConfig.php
@@ -51,6 +51,16 @@ class DeploymentConfig
*/
private $overrideData;

+ /**
+ * @var array
+ */
+ private $envOverrides = [];
+
+ /**
+ * @var array
+ */
+ private $readerLoad = [];
+
/**
* Constructor
*
@@ -84,7 +94,9 @@ class DeploymentConfig
}
$result = $this->getByKey($key);
if ($result === null) {
- $this->reloadData();
+ if (empty($this->flatData) || count($this->getAllEnvOverrides())) {
+ $this->reloadData();
+ }
$result = $this->getByKey($key);
}
return $result ?? $defaultValue;
@@ -114,13 +126,13 @@ class DeploymentConfig
{
if ($key === null) {
if (empty($this->data)) {
- $this->reloadData();
+ $this->reloadInitialData();
}
return $this->data;
}
$result = $this->getConfigDataByKey($key);
if ($result === null) {
- $this->reloadData();
+ $this->reloadInitialData();
$result = $this->getConfigDataByKey($key);
}
return $result;
@@ -170,28 +182,55 @@ class DeploymentConfig
* @throws FileSystemException
* @throws RuntimeException
*/
- private function reloadData(): void
+ private function reloadInitialData(): void
{
+ if (empty($this->readerLoad) || empty($this->data) || empty($this->flatData)) {
+ $this->readerLoad = $this->reader->load();
+ }
$this->data = array_replace(
- $this->reader->load(),
+ $this->readerLoad,
$this->overrideData ?? [],
$this->getEnvOverride()
);
+ }
+
+ /**
+ * Loads the configuration data
+ *
+ * @return void
+ * @throws FileSystemException
+ * @throws RuntimeException
+ */
+ private function reloadData(): void
+ {
+ $this->reloadInitialData();
// flatten data for config retrieval using get()
$this->flatData = $this->flattenParams($this->data);
+ $this->flatData = $this->getAllEnvOverrides() + $this->flatData;
+ }

- // allow reading values from env variables by convention
- // MAGENTO_DC_{path}, like db/connection/default/host =>
- // can be overwritten by MAGENTO_DC_DB__CONNECTION__DEFAULT__HOST
- foreach (getenv() as $key => $value) {
- if (false !== \strpos($key, self::MAGENTO_ENV_PREFIX)
- && $key !== self::OVERRIDE_KEY
- ) {
- // convert MAGENTO_DC_DB__CONNECTION__DEFAULT__HOST into db/connection/default/host
- $flatKey = strtolower(str_replace([self::MAGENTO_ENV_PREFIX, '__'], ['', '/'], $key));
- $this->flatData[$flatKey] = $value;
+ /**
+ * Load all getenv() configs once
+ *
+ * @return array
+ */
+ private function getAllEnvOverrides(): array
+ {
+ if (empty($this->envOverrides)) {
+ // allow reading values from env variables by convention
+ // MAGENTO_DC_{path}, like db/connection/default/host =>
+ // can be overwritten by MAGENTO_DC_DB__CONNECTION__DEFAULT__HOST
+ foreach (getenv() as $key => $value) {
+ if (false !== \strpos($key, self::MAGENTO_ENV_PREFIX)
+ && $key !== self::OVERRIDE_KEY
+ ) {
+ // convert MAGENTO_DC_DB__CONNECTION__DEFAULT__HOST into db/connection/default/host
+ $flatKey = strtolower(str_replace([self::MAGENTO_ENV_PREFIX, '__'], ['', '/'], $key));
+ $this->envOverrides[$flatKey] = $value;
+ }
}
}
+ return $this->envOverrides;
}

/**
diff -Nuar a/vendor/magento/framework/Module/ModuleList.php b/vendor/magento/framework/Module/ModuleList.php
index b3cf433bbaf..32e2d2b1550 100644
--- a/vendor/magento/framework/Module/ModuleList.php
+++ b/vendor/magento/framework/Module/ModuleList.php
@@ -140,8 +140,11 @@ class ModuleList implements ModuleListInterface
*/
private function loadConfigData()
{
- if (null === $this->configData && null !== $this->config->get(ConfigOptionsListConstants::KEY_MODULES)) {
- $this->configData = $this->config->get(ConfigOptionsListConstants::KEY_MODULES);
+ if (null === $this->configData) {
+ $config = $this->config->get(ConfigOptionsListConstants::KEY_MODULES);
+ if (null !== $config) {
+ $this->configData = $config;
+ }
}
}
}

0 comments on commit 3622772

Please sign in to comment.