Problem/Motivation

After updating Drupal Core from 10.2 to 10.3, I ran into this error during "drush updb". It appears that the constructor of AttachMediaToGroup has the 5th argument typed as Drupal\Core\Logger\LoggerChannelInterface but an instance of Psr\Log\NullLogger is provided. One way to fix this is to relax the type hint to Psr\Log\LoggerInterface. But I wonder if this is a better way. The patch is for Group Media v2.2.0 because we are locked into Group Media v2 for now.

In ProcessBase.php line 171:
                                                                                                                                                                                                                                                               
  Unable to decode output into JSON: Syntax error                                                                                                                                                                                                              
                                                                                                                                                                                                                                                               
  TypeError: Drupal\groupmedia\AttachMediaToGroup::__construct(): Argument #5 ($logger) must be of type Drupal\Core\Logger\LoggerChannelInterface, Psr\Log\NullLogger given in Drupal\groupmedia\AttachMediaToGroup->__construct() (line 88 of /app/web/modul  
  es/contrib/groupmedia/src/AttachMediaToGroup.php).  

The full call stack:

>  [notice] Update started: block_content_post_update_revision_type
> TypeError: Drupal\groupmedia\AttachMediaToGroup::__construct(): Argument #5 ($logger) must be of type Drupal\Core\Logger\LoggerChannelInterface, Psr\Log\NullLogger given in /app/web/modules/contrib/groupmedia/src/AttachMediaToGroup.php on line 88 #0 [internal function]: Drupal\groupmedia\AttachMediaToGroup->__construct(Object(Drupal\groupmedia\MediaFinderManager), Object(Drupal\group\Plugin\GroupContentEnablerManager), Object(Drupal\Core\Extension\ModuleHandler), Object(Drupal\Core\Entity\EntityTypeManager), Object(Psr\Log\NullLogger))
> #1 /app/vendor/symfony/dependency-injection/ContainerBuilder.php(1140): ReflectionClass->newInstanceArgs(Array)
> #2 /app/vendor/symfony/dependency-injection/ContainerBuilder.php(586): Symfony\Component\DependencyInjection\ContainerBuilder->createService(Object(Symfony\Component\DependencyInjection\Definition), Array, true, 'groupmedia.atta...')
> #3 /app/vendor/symfony/dependency-injection/ContainerBuilder.php(531): Symfony\Component\DependencyInjection\ContainerBuilder->doGet('groupmedia.atta...', 1)
> #4 /app/web/core/lib/Drupal.php(197): Symfony\Component\DependencyInjection\ContainerBuilder->get('groupmedia.atta...')
> #5 /app/web/modules/contrib/groupmedia/groupmedia.module(50): Drupal::service('groupmedia.atta...')
> #6 [internal function]: groupmedia_entity_update(Object(Drupal\block_content\Entity\BlockContentType), 'block_content_t...')
> #7 /app/web/core/lib/Drupal/Core/Extension/ModuleHandler.php(416): call_user_func_array(Object(Closure), Array)
> #8 /app/web/core/lib/Drupal/Core/Extension/ModuleHandler.php(395): Drupal\Core\Extension\ModuleHandler->Drupal\Core\Extension\{closure}(Object(Closure), 'groupmedia')
> #9 /app/web/core/lib/Drupal/Core/Extension/ModuleHandler.php(423): Drupal\Core\Extension\ModuleHandler->invokeAllWith('entity_update', Object(Closure))
> #10 /app/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php(343): Drupal\Core\Extension\ModuleHandler->invokeAll('entity_update', Array)
> #11 /app/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(564): Drupal\Core\Config\Entity\ConfigEntityStorage->invokeHook('update', Object(Drupal\block_content\Entity\BlockContentType))
> #12 /app/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(489): Drupal\Core\Entity\EntityStorageBase->doPostSave(Object(Drupal\block_content\Entity\BlockContentType), true)
> #13 /app/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php(257): Drupal\Core\Entity\EntityStorageBase->save(Object(Drupal\block_content\Entity\BlockContentType))
> #14 /app/web/core/lib/Drupal/Core/Entity/EntityBase.php(354): Drupal\Core\Config\Entity\ConfigEntityStorage->save(Object(Drupal\block_content\Entity\BlockContentType))
> #15 /app/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php(614): Drupal\Core\Entity\EntityBase->save()
> #16 /app/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityUpdater.php(192): Drupal\Core\Config\Entity\ConfigEntityBase->save()
> #17 /app/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityUpdater.php(147): Drupal\Core\Config\Entity\ConfigEntityUpdater->doOne(Object(Drupal\block_content\Entity\BlockContentType), Object(Closure))
> #18 /app/web/core/modules/block_content/block_content.post_update.php(93): Drupal\Core\Config\Entity\ConfigEntityUpdater->update(Array, 'block_content_t...', Object(Closure))
> #19 /app/vendor/drush/drush/src/Commands/core/UpdateDBCommands.php(280): block_content_post_update_revision_type(Array)
> #20 /app/vendor/drush/drush/includes/batch.inc(257): Drush\Commands\core\UpdateDBCommands::updateDoOnePostUpdate('block_content_p...', Array)
> #21 /app/vendor/drush/drush/includes/batch.inc(204): _drush_batch_worker()
> #22 /app/vendor/drush/drush/includes/batch.inc(75): _drush_batch_command('4303')
> #23 /app/vendor/drush/drush/src/Commands/core/UpdateDBCommands.php(136): drush_batch_command('4303')
> #24 [internal function]: Drush\Commands\core\UpdateDBCommands->process('4303', Array)
> #25 /app/vendor/consolidation/annotated-command/src/CommandProcessor.php(276): call_user_func_array(Array, Array)
> #26 /app/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback(Array, Object(Consolidation\AnnotatedCommand\CommandData))
> #27 /app/vendor/consolidation/annotated-command/src/CommandProcessor.php(176): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
> #28 /app/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(391): Consolidation\AnnotatedCommand\CommandProcessor->process(Object(Symfony\Component\Console\Output\ConsoleOutput), Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
> #29 /app/vendor/symfony/console/Command/Command.php(326): Consolidation\AnnotatedCommand\AnnotatedCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
> #30 /app/vendor/symfony/console/Application.php(1096): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
> #31 /app/vendor/symfony/console/Application.php(324): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
> #32 /app/vendor/symfony/console/Application.php(175): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
> #33 /app/vendor/drush/drush/src/Runtime/Runtime.php(110): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
> #34 /app/vendor/drush/drush/src/Runtime/Runtime.php(40): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
> #35 /app/vendor/drush/drush/drush.php(139): Drush\Runtime\Runtime->run(Array)
> #36 /app/vendor/drush/drush/drush(4): require('/app/vendor/dru...')
> #37 /app/vendor/bin/drush(119): include('/app/vendor/dru...')
> #38 {main}
>  [warning] Drush command terminated abnormally.

Steps to reproduce

Proposed resolution

CommentFileSizeAuthor
logger-type-error-1.patch1.59 KBkevin w

Comments

Kevin W created an issue. See original summary.

  • a.dmitriiev committed 37904560 on 8.x-2.x
    Issue #3467943 by Kevin W: Type error in AttachMediaToGroup.php after...
a.dmitriiev’s picture

Status: Active » Fixed

Yes, you are right. Thank you.

From Drupal documentation:

* Logger channel interface.
*
* This interface defines the full behavior of the central Drupal logger
* facility. However, when writing code that does logging, use the generic
* \Psr\Log\LoggerInterface for type hinting instead (you shouldn't need the
* methods here).

So changing to \Psr\Log\LoggerInterface. I have also removed unused use statement as LoggerChannelInterface is not used anymore in the class.

a.dmitriiev’s picture

  • lobsterr committed ad05125b on 3.0.x
    Issue #3467943 by Kevin W, LOBsTerr: Type error in AttachMediaToGroup....

  • lobsterr committed f0c3f5e3 on 4.0.x
    Issue #3467943 by Kevin W, LOBsTerr: Type error in AttachMediaToGroup....

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.