diff --git a/core/core.services.yml b/core/core.services.yml index 1f6880b..5a1d8e6 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -565,6 +565,7 @@ services: http_kernel.basic: class: Symfony\Component\HttpKernel\HttpKernel arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack'] + lazy: true http_negotiation.format_negotiator: class: Drupal\Core\ContentNegotiation private: true @@ -586,13 +587,15 @@ services: class: Drupal\Core\StackMiddleware\KernelPreHandle arguments: ['@kernel'] tags: - - { name: http_middleware, priority: 100 } + - { name: http_middleware, priority: -100 } + lazy: true http_middleware.session: class: Drupal\Core\StackMiddleware\Session tags: - - { name: http_middleware, priority: 50 } + - { name: http_middleware, priority: -200 } calls: - [setContainer, ['@service_container']] + lazy: true language_manager: class: Drupal\Core\Language\LanguageManager arguments: ['@language.default'] diff --git a/core/modules/page_cache/page_cache.services.yml b/core/modules/page_cache/page_cache.services.yml index bbddfa7..a744b4b 100644 --- a/core/modules/page_cache/page_cache.services.yml +++ b/core/modules/page_cache/page_cache.services.yml @@ -3,4 +3,4 @@ services: class: Drupal\page_cache\StackMiddleware\PageCache arguments: ['@cache.render', '@page_cache_request_policy', '@page_cache_response_policy'] tags: - - { name: http_middleware, priority: 200 } + - { name: http_middleware, priority: 0 } diff --git a/core/modules/system/src/Tests/HttpKernel/StackKernelIntegrationTest.php b/core/modules/system/src/Tests/HttpKernel/StackKernelIntegrationTest.php index 6018122..56ad6fc 100644 --- a/core/modules/system/src/Tests/HttpKernel/StackKernelIntegrationTest.php +++ b/core/modules/system/src/Tests/HttpKernel/StackKernelIntegrationTest.php @@ -7,8 +7,9 @@ namespace Drupal\system\Tests\HttpKernel; -use Drupal\simpletest\KernelTestBase; +use Drupal\Component\Utility\SafeMarkup; use Drupal\Core\Url; +use Drupal\simpletest\KernelTestBase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\HttpKernelInterface; @@ -49,4 +50,17 @@ public function testRequest() { $this->assertEqual($request->attributes->get('_previous_optional_argument'), 'test_argument'); } + /** + * Tests that late middlewares are marked as lazy. + */ + public function testLateMiddlewareShouldBeLazy() { + foreach ($this->container->findTaggedServiceIds('http_middleware') as $id => $attributes) { + $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $definition = $this->container->getDefinition($id); + if ($priority < 0) { + $this->assertTrue($definition->isLazy(), SafeMarkup::format('The lazy flag is set on low priority middleware "@id"', array('@id' => $id))); + } + } + } + }