Skip to content

Commit b5bc98c

Browse files
caddoosgiehl
authored andcommitted
Add feature flag
1 parent 7a1e4eb commit b5bc98c

3 files changed

Lines changed: 47 additions & 2 deletions

File tree

core/Tracker/Visit.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
use Piwik\Plugin\Dimension\VisitDimension;
2020
use Piwik\Plugin\LogTablesProvider;
2121
use Piwik\Plugins\Actions\Tracker\ActionsRequestProcessor;
22+
use Piwik\Plugins\FeatureFlags\FeatureFlagManager;
23+
use Piwik\Plugins\FeatureFlags\FeatureFlags\UpdateVisitIdInLogTablesOnTrackingRequests;
2224
use Piwik\Plugins\UserCountry\Columns\Base;
2325
use Piwik\Tracker;
2426
use Piwik\Tracker\Visit\VisitProperties;
@@ -71,6 +73,11 @@ class Visit implements VisitInterface
7173
*/
7274
protected $previousVisitProperties;
7375

76+
/**
77+
* @var FeatureFlagManager
78+
*/
79+
private $featureFlagManager;
80+
7481
/**
7582
* @var ArchiveInvalidator
7683
*/
@@ -91,6 +98,7 @@ public function __construct()
9198
$this->visitProperties = null;
9299
$this->userSettings = StaticContainer::get('Piwik\Tracker\Settings');
93100
$this->invalidator = StaticContainer::get('Piwik\Archive\ArchiveInvalidator');
101+
$this->featureFlagManager = StaticContainer::get(FeatureFlagManager::class);
94102
}
95103

96104
/**
@@ -435,9 +443,11 @@ protected function updateExistingVisit($valuesToUpdate)
435443

436444

437445
if (isset($valuesToUpdate['idvisitor'])) {
438-
$this->updateIdVisitorAcrossLogTables($valuesToUpdate['idvisitor']);
439446

440-
Common::printDebug('Updating idvisitor across tables for idvisit = ' . $idVisit);
447+
if ($this->featureFlagManager->isFeatureActive(UpdateVisitIdInLogTablesOnTrackingRequests::class)) {
448+
$this->updateIdVisitorAcrossLogTables($valuesToUpdate['idvisitor']);
449+
Common::printDebug('Updating idvisitor across tables for idvisit = ' . $idVisit);
450+
}
441451

442452
//For debug output below
443453
$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)