FATAL "Service "queue.redis(_reliable)" not found" error when setting `queue_default`

Created on 16 December 2024, 5 days ago

i run

drush status
	Drupal version   : 11.0.9
	Site URI         : http://default
	DB driver        : mysql
	DB port          :
	DB username      : mysite_drupal_user
	DB name          : mysite_drupal
	Database         : Connected
	Drupal bootstrap : Successful
	Default theme    : olivero
	Admin theme      : claro
	PHP binary       : /usr/bin/php
	PHP config       : /usr/local/etc/php8/php.ini
	PHP OS           : Linux
	PHP version      : 8.4.1
	Drush script     : /srv/my.app/vendor/bin/drush.php
	Drush version    : 13.3.3.0
	Drush temp       : /tmp
	Drush configs    : /srv/my.app/vendor/drush/drush/drush.yml
	Install profile  : standard
	Drupal root      : /srv/my.app/web
	Site path        : sites/default
	Files, Public    : sites/default/files
	Files, Private   : /srv/drupal/private
	Files, Temp      : /var/lib/wwwrun/tmp/drupal/mysite

i've installed

drush pm:list | grep -i redis -A1
  Performance           Redis (redis)                                      Enabled

composer show | grep -i redis
	drupal/redis  dev-1.x 89f56c5 Integration of Drupal with the Redis key-value store.

with documented config, it's up & running; i can see Drupal keys in my Redis instance, e.g.

valkey-cli -s /run/valkey/valkey.sock -n 3 keys "*"
  1) "dev__:discovery:entity_field_map"
  2) "dev__:config:core.base_field_override.comment.comment.comment_type"
  3) "dev__:config:core.base_field_override.comment.comment.thread"
  4) "dev__:discovery:views:access"
  5) "dev__:config:system.action.user_block_user_action"
  6) "dev__:default:core.extension.list.theme"
  7) "dev__:config:last_write_timestamp_cache_config"
  ...

Production requirement here includes use of 'reliable' redis queues.

Redis package docs @

`web/modules/contrib/redis/README.md`

state

...
Queue Backend
------------------------------------

This module provides reliable and non-reliable queue implementations. Depending
on which is to be use you need to choose "queue.redis" or "queue.redis_reliable"
as a service name.

When you have configured basic information (host, library, ... - see Quick setup)
add this to your settings.php file:

    # Use for all queues unless otherwise specified for a specific queue.
    $settings['queue_default'] = 'queue.redis';

    # Or if you want to use reliable queue implementation.
    $settings['queue_default'] = 'queue.redis_reliable';
...

setting/enabling EITHER one of those in `settings.php` generates this `ServiceNotFoundException` fatal error

The website encountered an unexpected error. Try again later.

Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: Service "queue.redis_reliable" not found: the container inside "Drupal\Core\Queue\QueueFactory" is a smaller service locator that only knows about the "queue.database" service. in Symfony\Component\DependencyInjection\ServiceLocator->createNotFoundException() (line 137 of /srv/my.app/vendor/symfony/dependency-injection/ServiceLocator.php).

Symfony\Component\DependencyInjection\ServiceLocator->doGet('queue.redis_reliable') (Line: 43)
Symfony\Component\DependencyInjection\ServiceLocator->get('queue.redis_reliable') (Line: 68)
Drupal\Core\Queue\QueueFactory->get('update_fetch_tasks') (Line: 119)
Drupal\update\UpdateProcessor->__construct(Object, Object, Object, Object, Object, Object, Object, Object) (Line: 259)
Drupal\Component\DependencyInjection\Container->createService(Array, 'update.processor') (Line: 177)
Drupal\Component\DependencyInjection\Container->get('update.processor', 1) (Line: 430)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 237)
Drupal\Component\DependencyInjection\Container->createService(Array, 'update.manager') (Line: 177)
Drupal\Component\DependencyInjection\Container->get('update.manager') (Line: 197)
Drupal::service('update.manager') (Line: 273)
update_get_available() (Line: 38)
update_requirements('runtime')
call_user_func_array(Object, Array) (Line: 416)
Drupal\Core\Extension\ModuleHandler->{closure:Drupal\Core\Extension\ModuleHandler::invokeAll():415}(Object, 'update') (Line: 395)
Drupal\Core\Extension\ModuleHandler->invokeAllWith('requirements', Object) (Line: 415)
Drupal\Core\Extension\ModuleHandler->invokeAll('requirements', Array) (Line: 109)
Drupal\system\SystemManager->listRequirements() (Line: 93)
Drupal\system\SystemManager->checkRequirements() (Line: 122)
Drupal\system\Controller\SystemController->overview('system.admin_config')
call_user_func_array(Array, Array) (Line: 123)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->{closure:Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber::wrapControllerExecutionInRenderContext():121}() (Line: 593)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 121)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (Line: 97)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->{closure:Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber::onController():96}() (Line: 183)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 53)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 28)
Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 32)
Drupal\big_pipe\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 36)
Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 709)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

this seems (?) to originate with these changes

The settings.php method to set the queue backend was deprecated in 10.1
https://www.drupal.org/project/queue_unique/issues/3434071 📌 Automated Drupal 11 compatibility fixes for queue_unique Needs review

Convert QueueFactory to use a service locator
https://www.drupal.org/project/drupal/issues/3416357 📌 Convert QueueFactory to use a service locator Fixed

Refactor QueueFactory to get queue backend service from QueueWorker plugin instead of Settings
https://www.drupal.org/node/2821989

@ Slack, i'm told it's known non-functional, broken and a bug, and to file a new issue here. hence, this ...

whether a solution is simply clear docs to follow, or additional changes are needed, i don't yet know

🐛 Bug report
Status

Active

Version

1.8

Component

Code

Created by

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

Production build 0.71.5 2024