Skip to content

[3.x]: cache/flush-all --interactive=0 causes Exception when sessions are stored in Redis #10820

@hiasl

Description

@hiasl

What happened?

Description

Our deployment chain executes a
/srv/vhosts/craft01/craft cache/flush-all --interactive=0
before it completes (next step after craft up)

This causes the following exception:

Exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: craft\console\Request::getIsSecureConnection()'

in /srv/vhosts/craft01/vendor/yiisoft/yii2/base/Component.php:300

Stack trace:
#0 /srv/vhosts/craft01/vendor/craftcms/cms/src/Craft.php(166): yii\base\Component->__call()
#1 /srv/vhosts/craft01/vendor/craftcms/cms/src/helpers/App.php(877): Craft::cookieConfig()
#2 /srv/vhosts/craft01/config/app.php(95): craft\helpers\App::sessionConfig()
#3 [internal function]: craft\services\Config->{closure}()
#4 /srv/vhosts/craft01/vendor/yiisoft/yii2/di/Container.php(633): call_user_func_array()
#5 /srv/vhosts/craft01/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->invoke()
#6 /srv/vhosts/craft01/vendor/yiisoft/yii2/di/ServiceLocator.php(137): yii\BaseYii::createObject()
#7 /srv/vhosts/craft01/vendor/yiisoft/yii2/base/Module.php(766): yii\di\ServiceLocator->get()
#8 /srv/vhosts/craft01/vendor/craftcms/cms/src/console/Application.php(158): yii\base\Module->get()
#9 /srv/vhosts/craft01/vendor/yiisoft/yii2/console/controllers/CacheController.php(275): craft\console\Application->get()
#10 /srv/vhosts/craft01/vendor/yiisoft/yii2/console/controllers/CacheController.php(116): yii\console\controllers\CacheController->findCaches()
#11 [internal function]: yii\console\controllers\CacheController->actionFlushAll()
#12 /srv/vhosts/craft01/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array()
#13 /srv/vhosts/craft01/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams()
#14 /srv/vhosts/craft01/vendor/yiisoft/yii2/console/Controller.php(182): yii\base\Controller->runAction()
#15 /srv/vhosts/craft01/vendor/yiisoft/yii2/base/Module.php(552): yii\console\Controller->runAction()
#16 /srv/vhosts/craft01/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction()
#17 /srv/vhosts/craft01/vendor/craftcms/cms/src/console/Application.php(89): yii\console\Application->runAction()
#18 /srv/vhosts/craft01/vendor/yiisoft/yii2/console/Application.php(147): craft\console\Application->runAction()
#19 /srv/vhosts/craft01/vendor/yiisoft/yii2/base/Application.php(384): yii\console\Application->handleRequest()
#20 /srv/vhosts/craft01/craft(23): yii\base\Application->run()
#21 {main}

Redis is configured as explained here https://craftcms.com/docs/3.x/config/#session-component where the inital config is loaded via $config = App::sessionConfig(); and then the class gets replaced to use Redis.

I think the problem is caused by App::sessionConfig(); calling Craft::cookieConfig() calling $request->getIsSecureConnection() which does not work with console requests.

Craft CMS version

Pro 3.7.37

PHP version

7.4

Operating system and version

RHEL8

Database type and version

PostgreSQL 12.4

Image driver and version

GD 7.4.19

Installed plugins and versions

Agnostic Fetch 2.0.4
Asset Interceptor (custom) v1.1.2
Conditional Fields 0.0.6
Control Panel CSS 2.4.0
Cookies 1.1.15
Enforce password 1.0.4.2
KeyChain 1.0.3
Minify 1.2.11
Redactor 2.10.5
Relax 1.0.1
SAML Service Provider 2.7.3
SEOmatic 3.4.28
Sprig 1.12.2
SuperSort 3.1.0
Super Table 2.7.1
Typed link field 1.0.25
Vizy 1.0.12

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions