From 0903606b12296bc60a086b2712831d65c12e74b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20G=2E=20Marand?= <14036-fgm@users.noreply.drupalcode.org> Date: Thu, 5 Oct 2023 08:18:36 +0000 Subject: [PATCH] Issue #3323967 by fgm: Request tracking also tracks invalid request IDs --- modules/mongodb/mongodb.install | 2 +- .../mongodb_watchdog/src/EventController.php | 2 +- modules/mongodb_watchdog/src/Logger.php | 43 ++++++++++--------- .../src/Unit/FormStateValueResolverTest.php | 4 +- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/modules/mongodb/mongodb.install b/modules/mongodb/mongodb.install index 220d661..ee68350 100644 --- a/modules/mongodb/mongodb.install +++ b/modules/mongodb/mongodb.install @@ -112,7 +112,7 @@ function _mongodb_requirements_databases(array $settings, array $databases, arra $warnings = []; $success = TRUE; foreach ($databases as $database => $list) { - [$client,] = $list; + [$client] = $list; if (empty($aliases[$client])) { $success = FALSE; $warnings[] = t('Database "@db" references undefined client "@client".', [ diff --git a/modules/mongodb_watchdog/src/EventController.php b/modules/mongodb_watchdog/src/EventController.php index 8832efa..f95f02d 100644 --- a/modules/mongodb_watchdog/src/EventController.php +++ b/modules/mongodb_watchdog/src/EventController.php @@ -119,7 +119,7 @@ class EventController { : $location, empty($event->referrer) ? '' : Link::fromTextAndUrl($event->referrer, Url::fromUri($event->referrer)), $event->hostname, - isset($event->requestTracking_id) + (isset($event->requestTracking_id) && $event->requestTracking_id !== Logger::INVALID_REQUEST) ? Link::createFromRoute($this->t('Request'), 'mongodb_watchdog.reports.request', ['uniqueId' => $event->requestTracking_id]) diff --git a/modules/mongodb_watchdog/src/Logger.php b/modules/mongodb_watchdog/src/Logger.php index d524d24..5afa8a2 100644 --- a/modules/mongodb_watchdog/src/Logger.php +++ b/modules/mongodb_watchdog/src/Logger.php @@ -35,48 +35,52 @@ class Logger extends AbstractLogger { // Configuration-related constants. // The configuration item. - const CONFIG_NAME = 'mongodb_watchdog.settings'; + public const CONFIG_NAME = 'mongodb_watchdog.settings'; // The individual configuration keys. - const CONFIG_ITEMS = 'items'; + public const CONFIG_ITEMS = 'items'; - const CONFIG_REQUESTS = 'requests'; + public const CONFIG_REQUESTS = 'requests'; - const CONFIG_LIMIT = 'limit'; + public const CONFIG_LIMIT = 'limit'; - const CONFIG_ITEMS_PER_PAGE = 'items_per_page'; + public const CONFIG_ITEMS_PER_PAGE = 'items_per_page'; - const CONFIG_REQUEST_TRACKING = 'request_tracking'; + public const CONFIG_REQUEST_TRACKING = 'request_tracking'; // The logger database alias. - const DB_LOGGER = 'logger'; + public const DB_LOGGER = 'logger'; // The default channel exposed when using the raw PSR-3 contract. - const DEFAULT_CHANNEL = 'psr-3'; + public const DEFAULT_CHANNEL = 'psr-3'; - const MODULE = 'mongodb_watchdog'; + // The magic invalid request ID used in events not triggered by a Web request + // with a valid UNIQUE_ID. 23-byte format, unlike mod_unique_id values (24). + public const INVALID_REQUEST = '@@Not-a-valid-request@@'; + + public const MODULE = 'mongodb_watchdog'; // The service for the specific PSR-3 logger for MongoDB. - const SERVICE_LOGGER = 'mongodb.logger'; + public const SERVICE_LOGGER = 'mongodb.logger'; // The service for the Drupal LoggerChannel for this module, logging to all // active loggers. - const SERVICE_CHANNEL = 'logger.channel.mongodb_watchdog'; + public const SERVICE_CHANNEL = 'logger.channel.mongodb_watchdog'; // The service for hook_requirements(). - const SERVICE_REQUIREMENTS = 'mongodb.watchdog_requirements'; + public const SERVICE_REQUIREMENTS = 'mongodb.watchdog_requirements'; - const SERVICE_SANITY_CHECK = 'mongodb.watchdog.sanity_check'; + public const SERVICE_SANITY_CHECK = 'mongodb.watchdog.sanity_check'; - const TRACKER_COLLECTION = 'watchdog_tracker'; + public const TRACKER_COLLECTION = 'watchdog_tracker'; - const TEMPLATE_COLLECTION = 'watchdog'; + public const TEMPLATE_COLLECTION = 'watchdog'; - const EVENT_COLLECTION_PREFIX = 'watchdog_event_'; + public const EVENT_COLLECTION_PREFIX = 'watchdog_event_'; - const EVENT_COLLECTIONS_PATTERN = '^watchdog_event_[[:xdigit:]]{32}$'; + public const EVENT_COLLECTIONS_PATTERN = '^watchdog_event_[[:xdigit:]]{32}$'; - const LEGACY_TYPE_MAP = [ + public const LEGACY_TYPE_MAP = [ 'typeMap' => [ 'array' => 'array', 'document' => 'array', @@ -370,8 +374,7 @@ class Logger extends AbstractLogger { $this->trackerCollection()->insertOne($track); } else { - // 24-byte format like mod_unique_id values. - $requestId = '@@Not-a-valid-request@@'; + $requestId = self::INVALID_REQUEST; } $eventCollection = $this->eventCollection($templateId); diff --git a/modules/mongodb_watchdog/tests/src/Unit/FormStateValueResolverTest.php b/modules/mongodb_watchdog/tests/src/Unit/FormStateValueResolverTest.php index 86e7cf0..a5524a8 100644 --- a/modules/mongodb_watchdog/tests/src/Unit/FormStateValueResolverTest.php +++ b/modules/mongodb_watchdog/tests/src/Unit/FormStateValueResolverTest.php @@ -35,11 +35,11 @@ class FormStateValueResolverTest extends UnitTestCase { } /** - * Test extra optionnal argument resolution. + * Test extra optional argument resolution. * * @covers ::supports */ - public function testOptionnalExtraArgumentResolver() { + public function testOptionalExtraArgumentResolver() { $resolver = new FormStateValueResolver(); $request = new Request(); $request->attributes->add([FormStateValueResolver::NAME_LEGACY => new FormState()]); -- GitLab