2

I'm trying to use drush to generate some taxonomy terms for a sandbox/development instance. This might be an error report by I'm a drush noob so I wanted to ask first.

When I run drush devel-generate:terms --bundles=tags 10 I would expect drush to generate some terms for me, instead I get an error message like this:

#10 0.555  [error]  TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in count() (line 377 of /opt/drupal/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/TermDevelGenerate.php) #0 /opt/drupal/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/TermDevelGenerate.php(377): count(NULL)
#10 0.555 #1 /opt/drupal/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/TermDevelGenerate.php(197): Drupal\devel_generate\Plugin\DevelGenerate\TermDevelGenerate->generateTerms(Array)
#10 0.555 #2 /opt/drupal/web/modules/contrib/devel/devel_generate/src/DevelGenerateBase.php(83): Drupal\devel_generate\Plugin\DevelGenerate\TermDevelGenerate->generateElements(Array)
#10 0.555 #3 /opt/drupal/web/modules/contrib/devel/devel_generate/src/Commands/DevelGenerateCommands.php(282): Drupal\devel_generate\DevelGenerateBase->generate(Array)
#10 0.555 #4 /opt/drupal/web/modules/contrib/devel/devel_generate/src/Commands/DevelGenerateCommands.php(159): Drupal\devel_generate\Commands\DevelGenerateCommands->generate()
#10 0.555 #5 [internal function]: Drupal\devel_generate\Commands\DevelGenerateCommands->terms('10', Array)
#10 0.555 #6 /opt/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(257): call_user_func_array(Array, Array)
#10 0.555 #7 /opt/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback(Array, Object(Consolidation\AnnotatedCommand\CommandData))
#10 0.555 #8 /opt/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(176): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#10 0.555 #9 /opt/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))
#10 0.555 #10 /opt/drupal/vendor/symfony/console/Command/Command.php(255): Consolidation\AnnotatedCommand\AnnotatedCommand->execute(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #11 /opt/drupal/vendor/symfony/console/Application.php(1027): Symfony\Component\Console\Command\Command->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #12 /opt/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))
#10 0.555 #13 /opt/drupal/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #14 /opt/drupal/vendor/drush/drush/src/Runtime/Runtime.php(118): Symfony\Component\Console\Application->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #15 /opt/drupal/vendor/drush/drush/src/Runtime/Runtime.php(49): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #16 /opt/drupal/vendor/drush/drush/drush.php(72): Drush\Runtime\Runtime->run(Array)
#10 0.555 #17 /opt/drupal/vendor/drush/drush/drush(4): require('/opt/drupal/ven...')
#10 0.555 #18 {main}.
#10 0.555 TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /opt/drupal/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/TermDevelGenerate.php on line 377 #0 /opt/drupal/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/TermDevelGenerate.php(377): count(NULL)
#10 0.555 #1 /opt/drupal/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/TermDevelGenerate.php(197): Drupal\devel_generate\Plugin\DevelGenerate\TermDevelGenerate->generateTerms(Array)
#10 0.555 #2 /opt/drupal/web/modules/contrib/devel/devel_generate/src/DevelGenerateBase.php(83): Drupal\devel_generate\Plugin\DevelGenerate\TermDevelGenerate->generateElements(Array)
#10 0.555 #3 /opt/drupal/web/modules/contrib/devel/devel_generate/src/Commands/DevelGenerateCommands.php(282): Drupal\devel_generate\DevelGenerateBase->generate(Array)
#10 0.555 #4 /opt/drupal/web/modules/contrib/devel/devel_generate/src/Commands/DevelGenerateCommands.php(159): Drupal\devel_generate\Commands\DevelGenerateCommands->generate()
#10 0.555 #5 [internal function]: Drupal\devel_generate\Commands\DevelGenerateCommands->terms('10', Array)
#10 0.555 #6 /opt/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(257): call_user_func_array(Array, Array)
#10 0.555 #7 /opt/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(212): Consolidation\AnnotatedCommand\CommandProcessor->runCommandCallback(Array, Object(Consolidation\AnnotatedCommand\CommandData))
#10 0.555 #8 /opt/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(176): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#10 0.555 #9 /opt/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))
#10 0.555 #10 /opt/drupal/vendor/symfony/console/Command/Command.php(255): Consolidation\AnnotatedCommand\AnnotatedCommand->execute(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #11 /opt/drupal/vendor/symfony/console/Application.php(1027): Symfony\Component\Console\Command\Command->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #12 /opt/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))
#10 0.555 #13 /opt/drupal/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #14 /opt/drupal/vendor/drush/drush/src/Runtime/Runtime.php(118): Symfony\Component\Console\Application->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #15 /opt/drupal/vendor/drush/drush/src/Runtime/Runtime.php(49): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 0.555 #16 /opt/drupal/vendor/drush/drush/drush.php(72): Drush\Runtime\Runtime->run(Array)
#10 0.555 #17 /opt/drupal/vendor/drush/drush/drush(4): require('/opt/drupal/ven...')
#10 0.555 #18 {main}
#10 0.555 TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in count() (line 377 of /opt/drupal/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/TermDevelGenerate.php).
#10 0.560  [warning] Drush command terminated abnormally.

Dockerfile to reproduce:

FROM drupal:9.1.0

RUN composer require -n \
  drush/drush:10.3.6 \
  drupal/devel:4.0.1

RUN apt-get update; apt-get install -y sqlite3
RUN mkdir /db; chown www-data:www-data /db
USER www-data

RUN cd /opt/drupal && drush site-install -y \
    --db-url=sqlite:///db/drupal.sqlite \
    --db-su=root \
    --db-su-pw=password \
    --account-name=admin \
    --account-pass=pass
USER root

RUN drush en -y devel devel_generate
RUN drush devel-generate:terms --bundles=tags 10

What makes me suspicious that I've done something wrong is the "Argument #1 ($value) must be of type Countable|array, null given" message. Have I missed an argument?

I looked at the output of drush devel-generate:terms --help doesn't seem to suggest I've done anything wrong;

Create terms in specified vocabulary.

Arguments:
  [num] Number of terms to generate. [default: 50]

Options:
  --kill                        Delete all terms in these vocabularies before generating new ones.
  --bundles[=BUNDLES]           A comma-delimited list of machine names for the vocabularies where terms will be created.
  --feedback[=FEEDBACK]         An integer representing interval for insertion rate logging. [default: 1000]
  --languages[=LANGUAGES]       A comma-separated list of language codes
  --translations[=TRANSLATIONS] A comma-separated list of language codes for translations.
  --min-depth[=MIN-DEPTH]       The minimum depth of hierarchy for the new terms. [default: 1]
  --max-depth[=MAX-DEPTH]       The maximum depth of hierarchy for the new terms. [default: 4]

Aliases: gent, devel-generate-terms
2
  • 1
    I’m voting to close this question because it indeed was a module bug that can be fixed by updating to the latest dev. It might also be worth to report it to the module's issue queue on gitlab.com/drupalspoons/devel/-/issues to push a new release forward.
    – leymannx
    Dec 28 '20 at 10:09
  • 1
    This is a common problem in Drupal presently, because Drupal only started to support PHP 7.4 in the past year and contrib is still catching up. The fact that devel, one of the most widely-used Drupal modules, still has this problem is an indication that these sorts of errors will not be going away soon. The error message "must be of type Countable|array" is the key to diagnosing this, since that is a change made in PHP 7.4. Anyone with a similar error in Drupal could benefit by checking to see if they're using PHP 7.4, and contributing to the fix if their error is caused by PHP 7.4.
    – anonymous
    Dec 28 '20 at 20:02
4

Seems like the version of devel_generate you're using isn't fully compatible with PHP 8.0.

This issue fixed the problem: https://gitlab.com/drupalspoons/devel/-/issues/356

Replacing drupal/devel:4.0.1 in the docker file with the dev version containing the patch (drupal/devel:4.x-dev#c8d48e2dab1d92a74fd17b5a91d005476e91b9b0) resolves the issue.

1
  • Looks like you're right. once I replace the devel version with drupal/devel:4.x-dev#484f8e the problem goes away. I've added a suggested edit to your answer to clarify this as well. Thanks.
    – quant
    Dec 28 '20 at 6:06

Not the answer you're looking for? Browse other questions tagged or ask your own question.