Skip to content

Commit f7762fc

Browse files
committed
Merge remote-tracking branch 'origin/ACP2E-4309' into PR_2025_11_07_muntianu
2 parents c76df20 + dec6150 commit f7762fc

File tree

8 files changed

+136
-7
lines changed

8 files changed

+136
-7
lines changed

app/code/Magento/Analytics/Model/Config/Backend/Baseurl/SubscriptionUpdateHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class SubscriptionUpdateHandler
2424
/**
2525
* Config path for schedule setting of update handler.
2626
*/
27-
public const UPDATE_CRON_STRING_PATH = "crontab/default/jobs/analytics_update/schedule/cron_expr";
27+
public const UPDATE_CRON_STRING_PATH = "crontab/analytics/jobs/analytics_update/schedule/cron_expr";
2828

2929
/**
3030
* Flag code for the previous Base URL.

app/code/Magento/Analytics/Model/Config/Backend/CollectionTime.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class CollectionTime extends Value
2323
/**
2424
* The path to config setting of schedule of collection data cron.
2525
*/
26-
public const CRON_SCHEDULE_PATH = 'crontab/default/jobs/analytics_collect_data/schedule/cron_expr';
26+
public const CRON_SCHEDULE_PATH = 'crontab/analytics/jobs/analytics_collect_data/schedule/cron_expr';
2727

2828
/**
2929
* @var WriterInterface

app/code/Magento/Analytics/Model/Config/Backend/Enabled/SubscriptionHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class SubscriptionHandler
2424
/**
2525
* Config path for schedule setting of subscription handler.
2626
*/
27-
public const CRON_STRING_PATH = 'crontab/default/jobs/analytics_subscribe/schedule/cron_expr';
27+
public const CRON_STRING_PATH = 'crontab/analytics/jobs/analytics_subscribe/schedule/cron_expr';
2828

2929
/**
3030
* Config value for schedule setting of subscription handler.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?php
2+
/**
3+
* Copyright 2025 Adobe
4+
* All Rights Reserved.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\Analytics\Setup\Patch\Data;
10+
11+
use Magento\Framework\App\ResourceConnection;
12+
use Magento\Framework\Setup\Patch\DataPatchInterface;
13+
14+
/**
15+
* Migrate legacy cron config paths for analytics jobs from the "default" group to the "analytics" group.
16+
*/
17+
class MoveCronConfigToAnalyticsGroup implements DataPatchInterface
18+
{
19+
/**
20+
* @var ResourceConnection
21+
*/
22+
private $resourceConnection;
23+
24+
/**
25+
* @param ResourceConnection $resourceConnection
26+
*/
27+
public function __construct(
28+
ResourceConnection $resourceConnection
29+
) {
30+
$this->resourceConnection = $resourceConnection;
31+
}
32+
33+
/**
34+
* @inheritDoc
35+
*/
36+
public function apply()
37+
{
38+
$connection = $this->resourceConnection->getConnection();
39+
$table = $this->resourceConnection->getTableName('core_config_data');
40+
41+
// Find all analytics cron rows under the "default" cron group
42+
$select = $connection->select()
43+
->from($table, ['config_id', 'scope', 'scope_id', 'path', 'value'])
44+
->where('path LIKE ?', 'crontab/default/jobs/analytics_%');
45+
$rows = (array)$connection->fetchAll($select);
46+
47+
foreach ($rows as $row) {
48+
$oldPath = (string)$row['path'];
49+
$newPath = (string)preg_replace('#^crontab/default/#', 'crontab/analytics/', $oldPath);
50+
51+
$connection->update(
52+
$table,
53+
['path' => $newPath],
54+
['config_id = ?' => (int)$row['config_id']]
55+
);
56+
}
57+
58+
return $this;
59+
}
60+
61+
/**
62+
* @inheritDoc
63+
*/
64+
public static function getDependencies()
65+
{
66+
return [];
67+
}
68+
69+
/**
70+
* @inheritDoc
71+
*/
72+
public function getAliases()
73+
{
74+
return [];
75+
}
76+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright 2025 Adobe
5+
* All Rights Reserved.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/cron_groups.xsd">
9+
<group id="analytics">
10+
<schedule_generate_every>15</schedule_generate_every>
11+
<schedule_ahead_for>20</schedule_ahead_for>
12+
<schedule_lifetime>15</schedule_lifetime>
13+
<history_cleanup_every>10</history_cleanup_every>
14+
<history_success_lifetime>60</history_success_lifetime>
15+
<history_failure_lifetime>4320</history_failure_lifetime>
16+
<use_separate_process>1</use_separate_process>
17+
</group>
18+
</config>

app/code/Magento/Analytics/etc/crontab.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
9-
<group id="default">
9+
<group id="analytics">
1010
<job name="analytics_subscribe" instance="Magento\Analytics\Cron\SignUp" method="execute" />
1111
<job name="analytics_update" instance="Magento\Analytics\Cron\Update" method="execute" />
1212
<job name="analytics_collect_data" instance="Magento\Analytics\Cron\CollectData" method="execute" />

app/code/Magento/Analytics/etc/di.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,9 @@
260260
<item name="analytics/general/token" xsi:type="string">1</item>
261261
</argument>
262262
<argument name="environment" xsi:type="array">
263-
<item name="crontab/default/jobs/analytics_collect_data/schedule/cron_expr" xsi:type="string">1</item>
264-
<item name="crontab/default/jobs/analytics_update/schedule/cron_expr" xsi:type="string">1</item>
265-
<item name="crontab/default/jobs/analytics_subscribe/schedule/cron_expr" xsi:type="string">1</item>
263+
<item name="crontab/analytics/jobs/analytics_collect_data/schedule/cron_expr" xsi:type="string">1</item>
264+
<item name="crontab/analytics/jobs/analytics_update/schedule/cron_expr" xsi:type="string">1</item>
265+
<item name="crontab/analytics/jobs/analytics_subscribe/schedule/cron_expr" xsi:type="string">1</item>
266266
</argument>
267267
</arguments>
268268
</type>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
/**
3+
* Copyright 2025 Adobe
4+
* All Rights Reserved.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\Analytics\Cron;
10+
11+
use Magento\Cron\Model\Config as CronConfig;
12+
use Magento\Framework\App\Config\ReinitableConfigInterface;
13+
use Magento\Framework\App\Config\Storage\WriterInterface;
14+
use Magento\TestFramework\Helper\Bootstrap;
15+
use PHPUnit\Framework\TestCase;
16+
17+
class CronGroupConfigTest extends TestCase
18+
{
19+
/**
20+
* @magentoAppIsolation enabled
21+
*/
22+
public function testAnalyticsJobsAreInAnalyticsGroup(): void
23+
{
24+
/** @var CronConfig $cronConfig */
25+
$cronConfig = Bootstrap::getObjectManager()->get(CronConfig::class);
26+
$jobsByGroup = $cronConfig->getJobs();
27+
28+
$this->assertArrayHasKey('analytics', $jobsByGroup, 'Cron group "analytics" should exist');
29+
30+
$analyticsJobs = $jobsByGroup['analytics'];
31+
$this->assertArrayHasKey('analytics_subscribe', $analyticsJobs);
32+
$this->assertArrayHasKey('analytics_update', $analyticsJobs);
33+
$this->assertArrayHasKey('analytics_collect_data', $analyticsJobs);
34+
}
35+
}

0 commit comments

Comments
 (0)