drush icon indicating copy to clipboard operation
drush copied to clipboard

entity:save path_alias causes AssertionError: assert($entity instanceof RevisionLogInterface)

Open alberto56 opened this issue 4 months ago • 2 comments

Describe the bug

drush entity:save path_alias causes undefined method Drupal\path_alias\Entity\PathAlias::setRevisionLogMessage.

A clear and concise description of what the bug is.

To Reproduce

Make sure you have at least one entity of type path_alias, then:

# drush status|grep version
Drupal version   : 11.2.3
PHP version      : 8.4.3
Drush version    : 13.6.2.0

# drush entity:save path_alias
[error]  Error: Call to undefined method Drupal\path_alias\Entity\PathAlias::setRevisionLogMessage() in Drush\Commands\core\EntityCommands->doSave() (line 225 of /var/www/html/bonjourquebec/vendor/drush/drush/src/Commands/core/EntityCommands.php) #0 /var/www/html/bonjourquebec/vendor/drush/drush/includes/drush.inc(62): Drush\Commands\core\EntityCommands->doSave()
#1 /var/www/html/bonjourquebec/vendor/drush/drush/includes/drush.inc(53): drush_call_user_func_array()
#2 /var/www/html/bonjourquebec/vendor/drush/drush/src/Commands/core/EntityCommands.php(164): drush_op()
#3 [internal function]: Drush\Commands\core\EntityCommands->loadSave()
#4 /var/www/html/bonjourquebec/vendor/consolidation/annotated-command/src/CommandProcessor.php(276): call_user_func_array()
#5 /var/www/html/bonjourquebec/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback()
#6 /var/www/html/bonjourquebec/vendor/consolidation/annotated-command/src/CommandProcessor.php(175): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter()
#7 /var/www/html/bonjourquebec/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(387): Consolidation\AnnotatedCommand\CommandProcessor->process()
#8 /var/www/html/bonjourquebec/vendor/symfony/console/Command/Command.php(318): Consolidation\AnnotatedCommand\AnnotatedCommand->execute()
#9 /var/www/html/bonjourquebec/vendor/symfony/console/Application.php(1092): Symfony\Component\Console\Command\Command->run()
#10 /var/www/html/bonjourquebec/vendor/symfony/console/Application.php(341): Symfony\Component\Console\Application->doRunCommand()
#11 /var/www/html/bonjourquebec/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRun()
#12 /var/www/html/bonjourquebec/vendor/drush/drush/src/Runtime/Runtime.php(110): Symfony\Component\Console\Application->run()
#13 /var/www/html/bonjourquebec/vendor/drush/drush/src/Runtime/Runtime.php(40): Drush\Runtime\Runtime->doRun()
#14 /var/www/html/bonjourquebec/vendor/drush/drush/drush.php(140): Drush\Runtime\Runtime->run()
#15 {main}.
Error: Call to undefined method Drupal\path_alias\Entity\PathAlias::setRevisionLogMessage() in /var/www/html/bonjourquebec/vendor/drush/drush/src/Commands/core/EntityCommands.php on line 225 #0 /var/www/html/bonjourquebec/vendor/drush/drush/includes/drush.inc(62): Drush\Commands\core\EntityCommands->doSave()
#1 /var/www/html/bonjourquebec/vendor/drush/drush/includes/drush.inc(53): drush_call_user_func_array()
#2 /var/www/html/bonjourquebec/vendor/drush/drush/src/Commands/core/EntityCommands.php(164): drush_op()
#3 [internal function]: Drush\Commands\core\EntityCommands->loadSave()
#4 /var/www/html/bonjourquebec/vendor/consolidation/annotated-command/src/CommandProcessor.php(276): call_user_func_array()
#5 /var/www/html/bonjourquebec/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback()
#6 /var/www/html/bonjourquebec/vendor/consolidation/annotated-command/src/CommandProcessor.php(175): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter()
#7 /var/www/html/bonjourquebec/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(387): Consolidation\AnnotatedCommand\CommandProcessor->process()
#8 /var/www/html/bonjourquebec/vendor/symfony/console/Command/Command.php(318): Consolidation\AnnotatedCommand\AnnotatedCommand->execute()
#9 /var/www/html/bonjourquebec/vendor/symfony/console/Application.php(1092): Symfony\Component\Console\Command\Command->run()
#10 /var/www/html/bonjourquebec/vendor/symfony/console/Application.php(341): Symfony\Component\Console\Application->doRunCommand()
#11 /var/www/html/bonjourquebec/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRun()
#12 /var/www/html/bonjourquebec/vendor/drush/drush/src/Runtime/Runtime.php(110): Symfony\Component\Console\Application->run()
#13 /var/www/html/bonjourquebec/vendor/drush/drush/src/Runtime/Runtime.php(40): Drush\Runtime\Runtime->doRun()
#14 /var/www/html/bonjourquebec/vendor/drush/drush/drush.php(140): Drush\Runtime\Runtime->run()
#15 {main}
Error: Call to undefined method Drupal\path_alias\Entity\PathAlias::setRevisionLogMessage() in Drush\Commands\core\EntityCommands->doSave() (line 225 of /var/www/html/bonjourquebec/vendor/drush/drush/src/Commands/core/EntityCommands.php).
[warning] Drush command terminated abnormally.

Expected behavior

I'm expecting this to save all entities of type path_alias.

Actual behavior

Call to undefined method Drupal\path_alias\Entity\PathAlias::setRevisionLogMessage

Workaround

Drupal's administrative GUI can be used to save path aliases.

If you know the alias's ids you want to resave, you can run something like this:

drush ev "\Drupal::entityTypeManager()->getStorage('path_alias')->load(111)->save();"

System Configuration

Q A
Drush version? 13.6.2.0
Drupal version? 11.2.3
PHP version 8.4.3
OS? CentOS

alberto56 avatar Aug 25 '25 16:08 alberto56

Unclear how that can happen because there is a revisonable check before calling that method. Perhaps your PathAlias entity type has been modified somehow https://github.com/drush-ops/drush/blob/f5be461d57e8644571cc7336cdc1689b58aa4064/src/Commands/core/EntityCommands.php#L222-L225

weitzman avatar Aug 25 '25 17:08 weitzman

Thanks for the quick reply! I have installed a brand new unpatched Drupal 11.2.2 site with Drush 13.6.1.0 on Alpine 3.22.1, and then I went to /admin/config/search/path/add and added a new path alias from system path "/" to URL alias "/hello-world", and saved.

Now I run:

drush entity:save path_alias

and the error is slightly different:

 [error]  AssertionError: assert($entity instanceof RevisionLogInterface) in assert() (line 217 of /var/www/html/vendor/drush/drush/src/Commands/core/EntityCommands.php) #0 /var/www/html/vendor/drush/drush/src/Commands/core/EntityCommands.php(217): assert(false, 'assert($entity ...')
#1 /var/www/html/vendor/drush/drush/includes/drush.inc(62): Drush\Commands\core\EntityCommands->doSave('path_alias', Array, NULL, NULL)
#2 /var/www/html/vendor/drush/drush/includes/drush.inc(53): drush_call_user_func_array(Array, Array)
#3 /var/www/html/vendor/drush/drush/src/Commands/core/EntityCommands.php(157): drush_op(Array, 'path_alias', Array, NULL, NULL)
#4 [internal function]: Drush\Commands\core\EntityCommands->loadSave('path_alias', NULL, Array)
#5 /var/www/html/vendor/consolidation/annotated-command/src/CommandProcessor.php(276): call_user_func_array(Array, Array)
#6 /var/www/html/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback(Array, Object(Consolidation\AnnotatedCommand\CommandData))
#7 /var/www/html/vendor/consolidation/annotated-command/src/CommandProcessor.php(175): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#8 /var/www/html/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(387): Consolidation\AnnotatedCommand\CommandProcessor->process(Object(Symfony\Component\Console\Output\ConsoleOutput), Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#9 /var/www/html/vendor/symfony/console/Command/Command.php(318): Consolidation\AnnotatedCommand\AnnotatedCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 /var/www/html/vendor/symfony/console/Application.php(1092): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 /var/www/html/vendor/symfony/console/Application.php(341): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 /var/www/html/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#13 /var/www/html/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))
#14 /var/www/html/vendor/drush/drush/src/Runtime/Runtime.php(40): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 /var/www/html/vendor/drush/drush/drush.php(140): Drush\Runtime\Runtime->run(Array)
#16 /var/www/html/vendor/bin/drush.php(119): include('/var/www/html/v...')
#17 {main}. 
AssertionError: assert($entity instanceof RevisionLogInterface) in /var/www/html/vendor/drush/drush/src/Commands/core/EntityCommands.php on line 217 #0 /var/www/html/vendor/drush/drush/src/Commands/core/EntityCommands.php(217): assert(false, 'assert($entity ...')
#1 /var/www/html/vendor/drush/drush/includes/drush.inc(62): Drush\Commands\core\EntityCommands->doSave('path_alias', Array, NULL, NULL)
#2 /var/www/html/vendor/drush/drush/includes/drush.inc(53): drush_call_user_func_array(Array, Array)
#3 /var/www/html/vendor/drush/drush/src/Commands/core/EntityCommands.php(157): drush_op(Array, 'path_alias', Array, NULL, NULL)
#4 [internal function]: Drush\Commands\core\EntityCommands->loadSave('path_alias', NULL, Array)
#5 /var/www/html/vendor/consolidation/annotated-command/src/CommandProcessor.php(276): call_user_func_array(Array, Array)
#6 /var/www/html/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback(Array, Object(Consolidation\AnnotatedCommand\CommandData))
#7 /var/www/html/vendor/consolidation/annotated-command/src/CommandProcessor.php(175): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#8 /var/www/html/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(387): Consolidation\AnnotatedCommand\CommandProcessor->process(Object(Symfony\Component\Console\Output\ConsoleOutput), Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#9 /var/www/html/vendor/symfony/console/Command/Command.php(318): Consolidation\AnnotatedCommand\AnnotatedCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 /var/www/html/vendor/symfony/console/Application.php(1092): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 /var/www/html/vendor/symfony/console/Application.php(341): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 /var/www/html/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#13 /var/www/html/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))
#14 /var/www/html/vendor/drush/drush/src/Runtime/Runtime.php(40): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 /var/www/html/vendor/drush/drush/drush.php(140): Drush\Runtime\Runtime->run(Array)
#16 /var/www/html/vendor/bin/drush.php(119): include('/var/www/html/v...')
#17 {main}
AssertionError: assert($entity instanceof RevisionLogInterface) in assert() (line 217 of /var/www/html/vendor/drush/drush/src/Commands/core/EntityCommands.php).
 [warning] Drush command terminated abnormally.

I will change the title of this issue accordingly

alberto56 avatar Aug 25 '25 17:08 alberto56