Project

General

Profile

Actions

Bug #84070

closed

Epic #83652: EXT: Redirects module - Umbrella issue

RedirectCacheService does not fallback gracefully if caching backend fails

Added by Sybille Peters over 6 years ago. Updated about 6 years ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
Backend API
Target version:
-
Start date:
2018-02-27
Due date:
% Done:

100%

Estimated time:
TYPO3 Version:
9
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Tested with 9.2.0-dev (current master).

If the configured caching backend (e.g. redis) fails because of a misconfiguration or downtime, TYPO3 falls back very nicely to non cached entries.

However the RedirectCacheService throws an exception in this case:

Core: Exception handler (WEB): Uncaught TYPO3 Exception: 
Return value of TYPO3\CMS\Redirects\Service\RedirectCacheService::getRedirects() must be of the type array, boolean returned 
| TypeError thrown in file 
/<webroot>/typo3/sysext/redirects/Classes/Service/RedirectCacheService.php in line 60. 
Requested URL: http://localhost/index.php?id=1

RedirectCacheService.php#60

Steps to reproduce

  1. Initial installation with "introduction package" (or without, in this case create a new page with standard root template)
  2. Configure Redis as Caching backend (see configuration snippet below)
  3. cause redis backend to fail by stopping the redis service, e.g. service stop redis
  4. (while not logged in in backend): Load frontend pages, e.g. "Get Started" page id=1

Results

Oops Error / Exception gets thrown.

Verify

Test without redirect:

  1. deinstall "redirect" extension. There will be no more exceptions, even though redis still isn't available

Basic Cache Configuration:

typo3conf/AdditionalConfiguration.php:

<?php

...
@include_once('GeneralConfigurationCache.php');
@setCacheConfigurationRedis(2);

typo3conf/GeneralConfigurationCache.php:

function setCacheConfigurationRedis($database=false, $names = [
        'cache_pages',
        'cache_pagesection',
        'cache_hash',
        'cache_rootline',
        'cache_imagesizes',
        'extbase_object',
        'extbase_reflection',
        'extbase_typo3dbbackend_queries',
        'extbase_datamapfactory_datamap',
        'extbase_object',
        'extbase_reflection'
    ] )
{

    if (!$database) {
        return;
    }

    foreach($names as $name) {
        $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$name]['backend'] = \TYPO3\CMS\Core\Cache\Backend\RedisBackend::class;
        $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$name]['options']['database'] = $database;
        // problem with gzuncompress + php-redis
        $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$name]['options']['compression'] = false;

    }
}


Files

oops.png (16.4 KB) oops.png Sybille Peters, 2018-02-27 18:01
Actions #1

Updated by Sybille Peters over 6 years ago

  • Description updated (diff)
Actions #2

Updated by Susanne Moog over 6 years ago

  • Parent task set to #83652
Actions #3

Updated by Gerrit Code Review over 6 years ago

  • Status changed from New to Under Review

Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/56050

Actions #4

Updated by Andreas Fernandez over 6 years ago

  • Status changed from Under Review to Resolved
  • % Done changed from 0 to 100
Actions #5

Updated by Benni Mack about 6 years ago

  • Status changed from Resolved to Closed
Actions

Also available in: Atom PDF