Skip to content

Commit acf26ac

Browse files
oshmyheliukBohdan Korablov
authored and
Bohdan Korablov
committed
MAGECLOUD-2046: SCD_THREADS from .magento.env.yaml doesn't applies on production environment (#244)
1 parent 5b03470 commit acf26ac

File tree

2 files changed

+138
-28
lines changed

2 files changed

+138
-28
lines changed

src/Config/Stage/Deploy.php

+25-27
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private function getEnvironmentConfig(): array
132132
$variables[self::VAR_SKIP_SCD] = true;
133133
}
134134

135-
if ($scdThreads = $this->getScdThreads()) {
135+
if ($scdThreads = $this->getEnvScdThreads()) {
136136
$variables[self::VAR_SCD_THREADS] = $scdThreads;
137137
}
138138

@@ -144,41 +144,22 @@ private function getEnvironmentConfig(): array
144144
}
145145

146146
/**
147-
* Retrieves deploy threads.
148-
* By default it's 1, unless it is re-declared via environment variable.
147+
* Retrieves SCD threads configuration from MAGENTO_CLOUD_VARIABLES or from raw environment data.
148+
* STATIC_CONTENT_THREADS from MAGENTO_CLOUD_VARIABLES has higher priority then $_ENV['STATIC_CONTENT_THREADS']
149+
*
150+
* Raw $_ENV['STATIC_CONTENT_THREADS'] is deprecated.
149151
*
150152
* @return int
151153
*/
152-
private function getScdThreads(): int
154+
private function getEnvScdThreads(): int
153155
{
154156
$variables = $this->environmentConfig->getVariables();
155157
$staticDeployThreads = 0;
156158

157159
if (isset($variables['STATIC_CONTENT_THREADS'])) {
158160
$staticDeployThreads = (int)$variables['STATIC_CONTENT_THREADS'];
159-
} elseif ($envScThreads = $this->getEnvScdThreads()) {
160-
$staticDeployThreads = $envScThreads;
161-
}
162-
163-
return $staticDeployThreads;
164-
}
165-
166-
/**
167-
* Retrieves SCD threads configuration from raw environment data.
168-
*
169-
* @return int
170-
* @deprecated Environment variable STATIC_CONTENT_THREADS must be used instead
171-
*/
172-
private function getEnvScdThreads(): int
173-
{
174-
$staticDeployThreads = 0;
175-
176-
if (isset($_ENV['STATIC_CONTENT_THREADS'])) {
161+
} elseif (isset($_ENV['STATIC_CONTENT_THREADS'])) {
177162
$staticDeployThreads = (int)$_ENV['STATIC_CONTENT_THREADS'];
178-
} elseif (isset($_ENV['MAGENTO_CLOUD_MODE'])
179-
&& $_ENV['MAGENTO_CLOUD_MODE'] === EnvironmentConfig::CLOUD_MODE_ENTERPRISE
180-
) {
181-
$staticDeployThreads = 3;
182163
}
183164

184165
return $staticDeployThreads;
@@ -204,11 +185,28 @@ private function getDefault(): array
204185
self::VAR_STATIC_CONTENT_SYMLINK => true,
205186
self::VAR_UPDATE_URLS => true,
206187
self::VAR_SKIP_SCD => false,
207-
self::VAR_SCD_THREADS => 1,
188+
self::VAR_SCD_THREADS => $this->getDefaultScdThreads(),
208189
self::VAR_GENERATED_CODE_SYMLINK => true,
209190
self::VAR_SCD_EXCLUDE_THEMES => '',
210191
self::VAR_REDIS_USE_SLAVE_CONNECTION => false,
211192
self::VAR_MYSQL_USE_SLAVE_CONNECTION => false,
212193
];
213194
}
195+
196+
/**
197+
* Retrieves default scd threads value.
198+
* 3 if production environment otherwise 1
199+
*
200+
* @return int
201+
*/
202+
private function getDefaultScdThreads()
203+
{
204+
if (isset($_ENV['MAGENTO_CLOUD_MODE'])
205+
&& $_ENV['MAGENTO_CLOUD_MODE'] === EnvironmentConfig::CLOUD_MODE_ENTERPRISE
206+
) {
207+
return 3;
208+
}
209+
210+
return 1;
211+
}
214212
}

src/Test/Unit/Config/Stage/DeployTest.php

+113-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Magento\MagentoCloud\Config\Environment as EnvironmentConfig;
99
use Magento\MagentoCloud\Config\Environment\Reader as EnvironmentReader;
1010
use Magento\MagentoCloud\Config\Stage\Deploy;
11+
use Magento\MagentoCloud\Config\StageConfigInterface;
1112
use PHPUnit\Framework\TestCase;
1213
use PHPUnit_Framework_MockObject_MockObject as Mock;
1314

@@ -273,6 +274,7 @@ public function testGetDeprecatedScdThreads(
273274

274275
/**
275276
* @return array
277+
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
276278
*/
277279
public function getDeprecatedScdThreadsDataProvider(): array
278280
{
@@ -286,7 +288,18 @@ public function getDeprecatedScdThreadsDataProvider(): array
286288
[],
287289
4,
288290
],
289-
'threads raw' => [
291+
'threads ENV raw' => [
292+
Deploy::VAR_SCD_THREADS,
293+
[],
294+
[
295+
296+
],
297+
[
298+
'STATIC_CONTENT_THREADS' => 5,
299+
],
300+
5,
301+
],
302+
'threads ENV raw and magento cloud variable' => [
290303
Deploy::VAR_SCD_THREADS,
291304
[],
292305
[
@@ -315,6 +328,105 @@ public function getDeprecatedScdThreadsDataProvider(): array
315328
],
316329
3,
317330
],
331+
'threads mode enterprise and ENV raw' => [
332+
Deploy::VAR_SCD_THREADS,
333+
[],
334+
[],
335+
[
336+
'STATIC_CONTENT_THREADS' => 5,
337+
'MAGENTO_CLOUD_MODE' => EnvironmentConfig::CLOUD_MODE_ENTERPRISE,
338+
],
339+
5,
340+
],
341+
'threads mode enterprise and ENV raw and magento cloud variable' => [
342+
Deploy::VAR_SCD_THREADS,
343+
[],
344+
[
345+
'STATIC_CONTENT_THREADS' => 4
346+
],
347+
[
348+
'STATIC_CONTENT_THREADS' => 5,
349+
'MAGENTO_CLOUD_MODE' => EnvironmentConfig::CLOUD_MODE_ENTERPRISE,
350+
],
351+
4,
352+
],
353+
'threads mode enterprise and magento cloud variable' => [
354+
Deploy::VAR_SCD_THREADS,
355+
[],
356+
[
357+
'STATIC_CONTENT_THREADS' => 5,
358+
],
359+
[
360+
'MAGENTO_CLOUD_MODE' => EnvironmentConfig::CLOUD_MODE_ENTERPRISE,
361+
],
362+
5,
363+
],
364+
'mode enterprise with global and deploy scd_threads in .magento.env.yaml' => [
365+
Deploy::VAR_SCD_THREADS,
366+
[
367+
StageConfigInterface::STAGE_GLOBAL => [
368+
StageConfigInterface::VAR_SCD_THREADS => 5
369+
],
370+
StageConfigInterface::STAGE_DEPLOY => [
371+
StageConfigInterface::VAR_SCD_THREADS => 4
372+
],
373+
],
374+
[],
375+
[
376+
'MAGENTO_CLOUD_MODE' => EnvironmentConfig::CLOUD_MODE_ENTERPRISE,
377+
],
378+
4,
379+
],
380+
'threads mode enterprise with global scd_threads in .magento.env.yaml' => [
381+
Deploy::VAR_SCD_THREADS,
382+
[
383+
StageConfigInterface::STAGE_GLOBAL => [
384+
StageConfigInterface::VAR_SCD_THREADS => 5
385+
],
386+
],
387+
[],
388+
[
389+
'MAGENTO_CLOUD_MODE' => EnvironmentConfig::CLOUD_MODE_ENTERPRISE,
390+
],
391+
5,
392+
],
393+
'threads mode enterprise with global and deploy scd_threads in .magento.env.yaml and ENV variable' => [
394+
Deploy::VAR_SCD_THREADS,
395+
[
396+
StageConfigInterface::STAGE_GLOBAL => [
397+
StageConfigInterface::VAR_SCD_THREADS => 5
398+
],
399+
StageConfigInterface::STAGE_DEPLOY => [
400+
StageConfigInterface::VAR_SCD_THREADS => 4
401+
],
402+
],
403+
[],
404+
[
405+
'STATIC_CONTENT_THREADS' => 7,
406+
'MAGENTO_CLOUD_MODE' => EnvironmentConfig::CLOUD_MODE_ENTERPRISE,
407+
],
408+
7,
409+
],
410+
'threads mode enterprise with global and deploy scd_threads in .magento.env.yaml ' .
411+
'and magento cloud variable and ENV variable' => [
412+
Deploy::VAR_SCD_THREADS,
413+
[
414+
StageConfigInterface::STAGE_GLOBAL => [
415+
StageConfigInterface::VAR_SCD_THREADS => 5
416+
],
417+
StageConfigInterface::STAGE_DEPLOY => [
418+
StageConfigInterface::VAR_SCD_THREADS => 4
419+
],
420+
],
421+
[
422+
'STATIC_CONTENT_THREADS' => 6,
423+
],
424+
[
425+
'STATIC_CONTENT_THREADS' => 7,
426+
'MAGENTO_CLOUD_MODE' => EnvironmentConfig::CLOUD_MODE_ENTERPRISE,
427+
],
428+
6,
429+
],
318430
];
319431
}
320432

0 commit comments

Comments
 (0)