diff -u b/core/core.services.yml b/core/core.services.yml --- b/core/core.services.yml +++ b/core/core.services.yml @@ -291,7 +291,7 @@ arguments: ['@app.root', '%container.modules%', '@cache.bootstrap'] module_installer: class: Drupal\Core\Extension\ModuleInstaller - arguments: ['@app.root', '@module_handler', '@kernel' '@entity.manager'] + arguments: ['@app.root', '@module_handler', '@kernel', '@entity.manager'] theme_handler: class: Drupal\Core\Extension\ThemeHandler arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser', '@logger.channel.default', '@asset.css.collection_optimizer', '@config.installer', '@config.manager', '@router.builder_indicator'] diff -u b/core/lib/Drupal/Core/Extension/ModuleInstaller.php b/core/lib/Drupal/Core/Extension/ModuleInstaller.php --- b/core/lib/Drupal/Core/Extension/ModuleInstaller.php +++ b/core/lib/Drupal/Core/Extension/ModuleInstaller.php @@ -484,7 +484,7 @@ if (isset($this->uninstallValidated[$module])) { continue; } - if ($this->hasContent($module)) { + if ($this->moduleHasContent($module)) { unset($module_list[$module]); } else { @@ -503,16 +503,15 @@ * @return bool * TRUE if there are content entities. */ - protected function hasContent($module) { + protected function moduleHasContent($module) { $entities = $this->entityManager->getDefinitions(); $factory = \Drupal::service('entity.query'); foreach ($entities as $entity_type) { - $entity_storage = (array) $entity_type->getHandlerClass('storage'); - if ($module == $entity_type->getProvider() && in_array('Drupal\Core\Entity\Sql\SqlContentEntityStorage', $entity_storage)) { - $content = $factory->get($module) - ->accessCheck(FALSE) - ->range(0, 1) - ->execute(); + if ($module == $entity_type->getProvider() && is_subclass_of($entity_type->getClass(), 'Drupal\Core\Entity\Sql\SqlContentEntityStorage')) { + $content = $factory->get($entity_type->id()) + ->accessCheck(FALSE) + ->range(0, 1) + ->execute(); if (!empty($content)) { return TRUE; }