diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index fa4db3278f93dce519bbcedca1a1991b5b6b05fc..bfeb39ddf62094b9625d6393efc6bf7c1d451a43 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -991,7 +991,6 @@ class WebClient(http.Controller):
         :param lang: the language of the user
         :return:
         """
-        request.disable_db = False
 
         if mods:
             mods = mods.split(',')
@@ -1183,7 +1182,6 @@ class Session(http.Controller):
     def get_session_info(self):
         request.session.check_security()
         request.uid = request.session.uid
-        request.disable_db = False
         return request.env['ir.http'].session_info()
 
     @http.route('/web/session/authenticate', type='json', auth="none")
diff --git a/odoo/http.py b/odoo/http.py
index 67a79067d3de011b8ec8c5c8ec4ce3bbac30e3a6..5732378c28fabf08b8f91b50cb5e33adad1d7008 100644
--- a/odoo/http.py
+++ b/odoo/http.py
@@ -182,10 +182,10 @@ class WebRequest(object):
     def __init__(self, httprequest):
         self.httprequest = httprequest
         self.httpresponse = None
-        self.disable_db = False
         self.endpoint = None
         self.endpoint_arguments = None
         self.auth_method = None
+        self._db = self.session.db
         self._cr = None
         self._uid = None
         self._context = None
@@ -269,7 +269,7 @@ class WebRequest(object):
             finally:
                 self._cr.close()
         # just to be sure no one tries to re-use the request
-        self.disable_db = True
+        self._db = None
         self.uid = None
 
     def set_handler(self, endpoint, arguments, auth):
@@ -391,7 +391,9 @@ class WebRequest(object):
         The database linked to this request. Can be ``None``
         if the current request uses the ``none`` authentication.
         """
-        return self.session.db if not self.disable_db else None
+        if not self._db:
+            self._db = self.session.db
+        return self._db
 
     def csrf_token(self, time_limit=None):
         """ Generates and returns a CSRF token for the current session
@@ -1035,7 +1037,6 @@ class OpenERPSession(sessions.Session):
         self.rotate = True
         self.db = db
         self.login = login
-        request.disable_db = False
 
         user = request.env(user=uid)['res.users'].browse(uid)
         if not user._mfa_url():