diff --git a/core/lib/Drupal/Core/Entity/ContentEntityType.php b/core/lib/Drupal/Core/Entity/ContentEntityType.php
index 5be34c9ba5..225b2e4d30 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityType.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityType.php
@@ -24,10 +24,6 @@ public function __construct($definition) {
       'storage' => 'Drupal\Core\Entity\Sql\SqlContentEntityStorage',
       'view_builder' => 'Drupal\Core\Entity\EntityViewBuilder',
     ];
-
-    $this->revision_metadata_keys += [
-      'revision_default' => 'revision_default',
-    ];
   }
 
   /**
@@ -74,7 +70,9 @@ public function getRevisionMetadataKeys($include_backwards_compatibility_field_n
         $this->revision_metadata_keys['revision_log_message'] = $revision_log;
       }
     }
-    return $this->revision_metadata_keys;
+    return $this->revision_metadata_keys + [
+      'revision_default' => 'revision_default',
+    ];
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Entity/EntityFieldManager.php b/core/lib/Drupal/Core/Entity/EntityFieldManager.php
index c19956491d..9afafd9ae8 100644
--- a/core/lib/Drupal/Core/Entity/EntityFieldManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityFieldManager.php
@@ -224,7 +224,10 @@ protected function buildBaseFieldDefinitions($entity_type_id) {
 
     // Make sure that revisionable entity types are correctly defined.
     if ($entity_type->isRevisionable()) {
-      $field_name = $entity_type->getRevisionMetadataKey('revision_default');
+      // Disable the BC layer to prevent a recursion if the entity type
+      // annotation doesn't define the revision metadata keys.
+      $revision_metadata_keys_no_bc = $entity_type->getRevisionMetadataKeys(FALSE);
+      $field_name = $revision_metadata_keys_no_bc['revision_default'];
       $base_field_definitions[$field_name] = BaseFieldDefinition::create('boolean')
         ->setLabel($this->t('Default revision'))
         ->setDescription($this->t('A flag indicating whether this was a default revision when it was saved.'))
diff --git a/core/modules/system/tests/modules/entity_test_revlog/src/Entity/EntityTestMulWithRevisionLog.php b/core/modules/system/tests/modules/entity_test_revlog/src/Entity/EntityTestMulWithRevisionLog.php
index 5a17b858dc..cb9c7bbc0c 100644
--- a/core/modules/system/tests/modules/entity_test_revlog/src/Entity/EntityTestMulWithRevisionLog.php
+++ b/core/modules/system/tests/modules/entity_test_revlog/src/Entity/EntityTestMulWithRevisionLog.php
@@ -5,6 +5,9 @@
 /**
  * Defines the test entity class.
  *
+ * This entity type does not define revision_metadata_keys on purpose to test
+ * the BC layer.
+ *
  * @ContentEntityType(
  *   id = "entity_test_mul_revlog",
  *   label = @Translation("Test entity - data table, revisions log"),
@@ -21,11 +24,6 @@
  *     "label" = "name",
  *     "langcode" = "langcode",
  *   },
- *   revision_metadata_keys = {
- *     "revision_user" = "revision_user",
- *     "revision_created" = "revision_created",
- *     "revision_log_message" = "revision_log_message"
- *   },
  * )
  */
 class EntityTestMulWithRevisionLog extends EntityTestWithRevisionLog {
