entity:save path_alias causes AssertionError: assert($entity instanceof RevisionLogInterface)
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 |
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
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