Skip to content

Commit b102cd1

Browse files
caddoosgiehl
authored andcommitted
Add feature flag
1 parent 1acafae commit b102cd1

3 files changed

Lines changed: 48 additions & 2 deletions

File tree

core/Tracker/Visit.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
use Piwik\Plugin\Dimension\VisitDimension;
1717
use Piwik\Plugin\LogTablesProvider;
1818
use Piwik\Plugins\Actions\Tracker\ActionsRequestProcessor;
19+
use Piwik\Plugins\FeatureFlags\FeatureFlagManager;
20+
use Piwik\Plugins\FeatureFlags\FeatureFlags\UpdateVisitIdInLogTablesOnTrackingRequests;
21+
use Piwik\Plugins\UserCountry\Columns\Base;
1922
use Piwik\Tracker;
2023
use Piwik\Tracker\Visit\VisitProperties;
2124

@@ -69,12 +72,18 @@ class Visit implements VisitInterface
6972
*/
7073
protected $previousVisitProperties;
7174

75+
/**
76+
* @var FeatureFlagManager
77+
*/
78+
private $featureFlagManager;
79+
7280
public function __construct()
7381
{
7482
$requestProcessors = StaticContainer::get('Piwik\Plugin\RequestProcessors');
7583
$this->requestProcessors = $requestProcessors->getRequestProcessors();
7684
$this->visitProperties = null;
7785
$this->userSettings = StaticContainer::get('Piwik\Tracker\Settings');
86+
$this->featureFlagManager = StaticContainer::get(FeatureFlagManager::class);
7887
}
7988

8089
/**
@@ -381,9 +390,11 @@ protected function updateExistingVisit($valuesToUpdate)
381390

382391

383392
if (isset($valuesToUpdate['idvisitor'])) {
384-
$this->updateIdVisitorAcrossLogTables($valuesToUpdate['idvisitor']);
385393

386-
Common::printDebug('Updating idvisitor across tables for idvisit = ' . $idVisit);
394+
if ($this->featureFlagManager->isFeatureActive(UpdateVisitIdInLogTablesOnTrackingRequests::class)) {
395+
$this->updateIdVisitorAcrossLogTables($valuesToUpdate['idvisitor']);
396+
Common::printDebug('Updating idvisitor across tables for idvisit = ' . $idVisit);
397+
}
387398

388399
//For debug output below
389400
$valuesToUpdate['idvisitor'] = bin2hex($valuesToUpdate['idvisitor']);
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
/**
4+
* Matomo - free/libre analytics platform
5+
*
6+
* @link https://matomo.org
7+
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8+
*/
9+
10+
namespace Piwik\Plugins\FeatureFlags\FeatureFlags;
11+
12+
use Piwik\Plugins\FeatureFlags\FeatureFlagInterface;
13+
14+
/**
15+
* This will add additional load on tracking requests, it should result in more accurate reports.
16+
* There is a risk of table locks, hence this feature being flagged for test purposes only.
17+
*/
18+
class UpdateVisitIdInLogTablesOnTrackingRequests implements FeatureFlagInterface
19+
{
20+
public function getName(): string
21+
{
22+
return 'UpdateVisitIdInLogTablesOnTrackingRequests';
23+
}
24+
}

tests/PHPUnit/Integration/Tracker/UserIdVisitorIdTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111

1212
use Piwik\Common;
1313
use Piwik\Config;
14+
use Piwik\Container\StaticContainer;
1415
use Piwik\Date;
1516
use Piwik\Db;
17+
use Piwik\Plugins\FeatureFlags\FeatureFlagManager;
18+
use Piwik\Plugins\FeatureFlags\FeatureFlags\UpdateVisitIdInLogTablesOnTrackingRequests;
1619
use Piwik\Tests\Framework\Fixture;
1720
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
1821

@@ -40,6 +43,14 @@ public function setUp(): void
4043

4144
$this->testEnv = static::$fixture->getTestEnvironment();
4245
$this->trackerEventTsIterator = Date::factory(self::FIRST_VISIT_TIME)->getTimestamp();
46+
47+
$mockFeatureFlagManager = $this->createMock(FeatureFlagManager::class);
48+
$mockFeatureFlagManager
49+
->method('isFeatureActive')
50+
->with(UpdateVisitIdInLogTablesOnTrackingRequests::class)
51+
->willReturn(true);
52+
53+
StaticContainer::getContainer()->set(FeatureFlagManager::class, $mockFeatureFlagManager);
4354
}
4455

4556
private function trackPageview(\MatomoTracker $tracker, $url)

0 commit comments

Comments
 (0)