diff --git a/core/core.services.yml b/core/core.services.yml
index f8e7ce7..c7344d3 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -225,6 +225,8 @@ services:
     synchronized: true
   request_stack:
     class: Symfony\Component\HttpFoundation\RequestStack
+    tags:
+      - { name: persist }
   event_dispatcher:
     class: Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher
     arguments: ['@service_container']
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 2db61fb..a902a33 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -365,6 +365,7 @@ function install_begin_request(&$install_state) {
   $container = $kernel->getContainer();
   $container->enterScope('request');
   $container->set('request', $request, 'request');
+  $container->get('request_stack')->push($request);
 
   // Register the file translation service.
   if (isset($GLOBALS['config']['locale.settings']['translation.path'])) {
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 6f61503..590c1f1 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -640,6 +640,7 @@ function drupal_install_system($install_state) {
   if ($request) {
     $kernel->getContainer()->enterScope('request');
     $kernel->getContainer()->set('request', $request, 'request');
+    $kernel->getContainer()->get('request_stack')->push($request);
   }
 
   $system_path = drupal_get_path('module', 'system');
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
index e38cbfe..37af68b 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
@@ -1139,6 +1139,7 @@ private function prepareEnvironment() {
   protected function rebuildContainer($environment = 'testing') {
     // Preserve the request object after the container rebuild.
     $request = \Drupal::request();
+    $request_stack = \Drupal::service('request_stack');
 
     $this->kernel = new DrupalKernel($environment, drupal_classloader(), FALSE);
     $this->kernel->boot();
@@ -1147,6 +1148,7 @@ protected function rebuildContainer($environment = 'testing') {
     $this->container = \Drupal::getContainer();
     // The current user is set in TestBase::prepareEnvironment().
     $this->container->set('request', $request);
+    $this->container->set('request_stack', $request_stack);
     $this->container->get('current_user')->setAccount(\Drupal::currentUser());
   }
 
diff --git a/core/update.php b/core/update.php
index 49b6aa1..6fb07ef 100644
--- a/core/update.php
+++ b/core/update.php
@@ -340,7 +340,9 @@ function update_task_list($active = NULL) {
 $kernel = new DrupalKernel('update', drupal_classloader(), FALSE);
 $kernel->boot();
 $request = Request::createFromGlobals();
-\Drupal::getContainer()->set('request', $request);
+$container = \Drupal::getContainer();
+$container->set('request', $request);
+$container->get('request_stack')->push($request);
 
 // Determine if the current user has access to run update.php.
 drupal_bootstrap(DRUPAL_BOOTSTRAP_PAGE_CACHE);
