Problem/Motivation

Since contrib modules are migrating from hooks to events there's a high risk to run into fatal errors when you install a module or if yopu install drupal from an existing config. The issue happens if a module uses constants defined in a class or interface to name their events. If the subscriber is implemented in a module which subscribes to a event defined in a module it depends on but which is not yet installed you get a fatal error instead of being asked if you wish to install the dependencies.

You also run in a fatal error if you install druapl "from existing config".

Steps to reproduce

With a fresh checkout of Drupal 9.1 (without search_api being installed):

composer require drupal/facets:dev-1.x#c250c2f53a33383de27384ba94479f03070d68e8
drush site:install
drush en facets

leads to

 [error]  Error: Class 'Drupal\search_api\Event\SearchApiEvents' not found in Drupal\facets\EventSubscriber\SearchApiSubscriber::getSubscribedEvents() (line 53 of /Users/markus.kalkbrenner/workspace/git/drupal/modules/contrib/facets/src/EventSubscriber/SearchApiSubscriber.php) #0 /Users/markus.kalkbrenner/workspace/git/drupal/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterEventSubscribersPass.php(37): Drupal\facets\EventSubscriber\SearchApiSubscriber::getSubscribedEvents()
#1 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/symfony/dependency-injection/Compiler/Compiler.php(94): Drupal\Core\DependencyInjection\Compiler\RegisterEventSubscribersPass->process(Object(Drupal\Core\DependencyInjection\ContainerBuilder))
#2 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/symfony/dependency-injection/ContainerBuilder.php(762): Symfony\Component\DependencyInjection\Compiler\Compiler->compile(Object(Drupal\Core\DependencyInjection\ContainerBuilder))
#3 /Users/markus.kalkbrenner/workspace/git/drupal/core/lib/Drupal/Core/DrupalKernel.php(1293): Symfony\Component\DependencyInjection\ContainerBuilder->compile()
#4 /Users/markus.kalkbrenner/workspace/git/drupal/core/lib/Drupal/Core/DrupalKernel.php(898): Drupal\Core\DrupalKernel->compileContainer()
#5 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/drush/drush/src/Drupal/DrupalKernelTrait.php(69): Drupal\Core\DrupalKernel->initializeContainer()
#6 /Users/markus.kalkbrenner/workspace/git/drupal/core/lib/Drupal/Core/DrupalKernel.php(819): Drush\Drupal\DrupalKernel->initializeContainer()
#7 /Users/markus.kalkbrenner/workspace/git/drupal/core/lib/Drupal/Core/Extension/ModuleInstaller.php(583): Drupal\Core\DrupalKernel->updateModules(Array, Array)
#8 /Users/markus.kalkbrenner/workspace/git/drupal/core/lib/Drupal/Core/Extension/ModuleInstaller.php(207): Drupal\Core\Extension\ModuleInstaller->updateKernel(Array)
#9 /Users/markus.kalkbrenner/workspace/git/drupal/core/lib/Drupal/Core/ProxyClass/Extension/ModuleInstaller.php(83): Drupal\Core\Extension\ModuleInstaller->install(Array, true)
#10 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/drush/drush/src/Drupal/Commands/pm/PmCommands.php(90): Drupal\Core\ProxyClass\Extension\ModuleInstaller->install(Array, true)
#11 [internal function]: Drush\Drupal\Commands\pm\PmCommands->enable(Array, Array)
#12 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(257): call_user_func_array(Array, Array)
#13 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback(Array, Object(Consolidation\AnnotatedCommand\CommandData))
#14 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(176): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#15 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(311): Consolidation\AnnotatedCommand\CommandProcessor->process(Object(Symfony\Component\Console\Output\ConsoleOutput), Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#16 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/symfony/console/Command/Command.php(255): Consolidation\AnnotatedCommand\AnnotatedCommand->execute(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/symfony/console/Application.php(1027): Symfony\Component\Console\Command\Command->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/drush/drush/src/Runtime/Runtime.php(118): Symfony\Component\Console\Application->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/drush/drush/src/Runtime/Runtime.php(48): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/drush/drush/drush.php(72): Drush\Runtime\Runtime->run(Array)
#23 /Users/markus.kalkbrenner/workspace/git/drupal/vendor/drush/drush/drush(4): require('/Users/markus.k...')
#24 {main}. 

The same happens if you install without drush but using Drupal's UI:

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Comments

mkalkbrenner created an issue. See original summary.

mkalkbrenner’s picture

StatusFileSize
new420.45 KB
mkalkbrenner’s picture

Issue summary: View changes
mkalkbrenner’s picture

Issue summary: View changes
andypost’s picture

Version: 9.1.x-dev » 9.2.x-dev

The bug should be fixed upstream first I bet

catch’s picture