From cf44546cce5a336010c74367fbc92d77a6e97301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Tue, 4 Aug 2026 13:46:28 +0200 Subject: [PATCH 1/3] IBX-12192: Skip SiteAccessStamp for uninitialized SiteAccess SendMessageSiteAccessSubscriber only skipped stamping when SiteAccessServiceInterface::getCurrent() returned null. When a message is dispatched from a context with no matched SiteAccess (e.g. a console command), getCurrent() instead returns the placeholder SiteAccess with matchingType 'uninitialized', which got stamped and later failed to resolve on the consumer side. --- .../SendMessageSiteAccessSubscriber.php | 3 ++- .../SendMessageSiteAccessSubscriberTest.php | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/bundle/EventSubscriber/SendMessageSiteAccessSubscriber.php b/src/bundle/EventSubscriber/SendMessageSiteAccessSubscriber.php index 26d21d1..c904109 100644 --- a/src/bundle/EventSubscriber/SendMessageSiteAccessSubscriber.php +++ b/src/bundle/EventSubscriber/SendMessageSiteAccessSubscriber.php @@ -9,6 +9,7 @@ namespace Ibexa\Bundle\Messenger\EventSubscriber; use Ibexa\Contracts\Messenger\Stamp\SiteAccessStamp; +use Ibexa\Core\MVC\Symfony\SiteAccess; use Ibexa\Core\MVC\Symfony\SiteAccess\SiteAccessServiceInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Messenger\Event\SendMessageToTransportsEvent; @@ -33,7 +34,7 @@ public static function getSubscribedEvents(): array public function onSendMessageToTransport(SendMessageToTransportsEvent $event): void { $siteAccess = $this->siteAccessService->getCurrent(); - if ($siteAccess === null) { + if ($siteAccess === null || $siteAccess->matchingType === SiteAccess::MATCHING_TYPE_UNINITIALIZED) { return; } diff --git a/tests/bundle/EventSubscriber/SendMessageSiteAccessSubscriberTest.php b/tests/bundle/EventSubscriber/SendMessageSiteAccessSubscriberTest.php index f90e977..fb2e56b 100644 --- a/tests/bundle/EventSubscriber/SendMessageSiteAccessSubscriberTest.php +++ b/tests/bundle/EventSubscriber/SendMessageSiteAccessSubscriberTest.php @@ -74,4 +74,23 @@ public function testOnSendMessageToTransportDoesNothingWhenNoSiteAccess(): void self::assertNull($updatedEnvelope->last(SiteAccessStamp::class)); self::assertSame($envelope, $updatedEnvelope); } + + public function testOnSendMessageToTransportDoesNothingWhenSiteAccessIsUninitialized(): void + { + $siteAccess = new SiteAccess('default', SiteAccess::MATCHING_TYPE_UNINITIALIZED); + $envelope = new Envelope(new \stdClass()); + $event = new SendMessageToTransportsEvent($envelope); + + $this->siteAccessService + ->expects(self::once()) + ->method('getCurrent') + ->willReturn($siteAccess); + + $this->subscriber->onSendMessageToTransport($event); + + $updatedEnvelope = $event->getEnvelope(); + + self::assertNull($updatedEnvelope->last(SiteAccessStamp::class)); + self::assertSame($envelope, $updatedEnvelope); + } } From 47dd96ac218e23d50e0b2410cf6acbd1bbcb78c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Tue, 4 Aug 2026 14:11:15 +0200 Subject: [PATCH 2/3] TEMPORARY: Added dependencies.json to test against ibexa/core#796 Points CI at the ibexa/core branch that adds SiteAccess::MATCHING_TYPE_UNINITIALIZED, so this PR's tests can run before that PR merges. Must be removed before merging. --- dependencies.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 dependencies.json diff --git a/dependencies.json b/dependencies.json new file mode 100644 index 0000000..49b48cf --- /dev/null +++ b/dependencies.json @@ -0,0 +1,11 @@ +{ + "recipesEndpoint": "", + "packages": [ + { + "requirement": "dev-IBX-12192-add-matching-type-uninitialized-constant as 4.6.x-dev", + "repositoryUrl": "https://github.com/ibexa/core.git", + "package": "ibexa/core", + "shouldBeAddedAsVCS": false + } + ] +} From d0f5b22519d2361ef298b40772028a0f7ffa92e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Tue, 4 Aug 2026 15:14:40 +0200 Subject: [PATCH 3/3] Removed temporary dependencies.json ibexa/core#796 merged, so ibexa/core's ~4.6.x-dev now resolves the SiteAccess::MATCHING_TYPE_UNINITIALIZED constant on its own. --- dependencies.json | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 dependencies.json diff --git a/dependencies.json b/dependencies.json deleted file mode 100644 index 49b48cf..0000000 --- a/dependencies.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "recipesEndpoint": "", - "packages": [ - { - "requirement": "dev-IBX-12192-add-matching-type-uninitialized-constant as 4.6.x-dev", - "repositoryUrl": "https://github.com/ibexa/core.git", - "package": "ibexa/core", - "shouldBeAddedAsVCS": false - } - ] -}