Improve error handling if the configured cache source is unavailable
authorMarcel Werk <burntime@woltlab.com>
Fri, 26 Jan 2024 15:42:16 +0000 (16:42 +0100)
committerMarcel Werk <burntime@woltlab.com>
Fri, 26 Jan 2024 15:42:16 +0000 (16:42 +0100)
Closes #5720

wcfsetup/install/files/lib/system/acp/dashboard/box/StatusMessageAcpDashboardBox.class.php
wcfsetup/install/files/lib/system/cache/CacheHandler.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index 4f155265389fbbe3f9f6719b0d84517ae984658f..06c24434dac05f9772f8c220db2b45a209b31404 100644 (file)
@@ -7,6 +7,7 @@ use wcf\system\acp\dashboard\box\event\PHPExtensionCollecting;
 use wcf\system\acp\dashboard\box\event\StatusMessageCollecting;
 use wcf\system\application\ApplicationHandler;
 use wcf\system\cache\builder\PackageUpdateCacheBuilder;
+use wcf\system\cache\CacheHandler;
 use wcf\system\Environment;
 use wcf\system\event\EventHandler;
 use wcf\system\registry\RegistryHandler;
@@ -139,6 +140,13 @@ final class StatusMessageAcpDashboardBox extends AbstractAcpDashboardBox
             }
         }
 
+        if (!CacheHandler::getInstance()->sanityCheck()) {
+            $messages[] = new StatusMessage(
+                StatusMessageType::Error,
+                WCF::getLanguage()->getDynamicVariable('wcf.acp.index.cacheSanityCheckFailed')
+            );
+        }
+
         return $messages;
     }
 
index 65277a663110b0f7b0cfe54bcd1ef77af7f769b1..d9ec9af9c7fbc43ef19fd65a094f302547e7e25f 100644 (file)
@@ -152,4 +152,21 @@ class CacheHandler extends SingletonFactory
 
         return $parameters;
     }
+
+    /**
+     * Returns false, if the configured cache source type could not be initialized.
+     *
+     * @since 6.1
+     */
+    public function sanityCheck(): bool
+    {
+        if (
+            CACHE_SOURCE_TYPE != 'disk'
+            && \get_class(CacheHandler::getInstance()->getCacheSource()) === \wcf\system\cache\source\DiskCacheSource::class
+        ) {
+            return false;
+        }
+
+        return true;
+    }
 }
index fc98ef58420929f059ff9cc7b9ec09dd5f80cb73..f0b3db6aa868f91b6955e3c630012895d787b3a1 100644 (file)
@@ -971,6 +971,7 @@ Sie erreichen das Fehlerprotokoll unter: {link controller='ExceptionLogView' isE
                <item name="wcf.acp.index.woltlab.pluginStore"><![CDATA[Plugin-Store]]></item>
                <item name="wcf.acp.index.missingLanguageItems"><![CDATA[Es wurden fehlende Sprachvariablen protokolliert (zuletzt: {@$missingLanguageItemsMTime|time}). {if LANGUAGE_USE_INFORMAL_VARIANT}Überprüfe{else}Überprüfen Sie{/if} die <a href="{link controller='DevtoolsMissingLanguageItemList'}{/link}">Liste der fehlenden Texte</a> für weitere Informationen.]]></item>
                <item name="wcf.acp.index.systemIdMismatch"><![CDATA[Die Systemumgebung hat sich verändert. Es wird empfohlen, eine <a href="{link controller='SystemCheck'}{/link}">Systemüberprüfung</a> durchzuführen.]]></item>
+               <item name="wcf.acp.index.cacheSanityCheckFailed"><![CDATA[Die eingestellte Cache-Methode („{CACHE_SOURCE_TYPE}“) funktioniert nicht richtig.]]></item>
        </category>
        <category name="wcf.acp.label">
                <item name="wcf.acp.label.add"><![CDATA[Label hinzufügen]]></item>
index 8f07fe3b13b54634ae7dd30ae7797aa27cc7b78f..2670df39fb5ea7d50f2fc94b6a2abf6a782d74c6 100644 (file)
@@ -949,6 +949,7 @@ You can access the error log at: {link controller='ExceptionLogView' isEmail=tru
                <item name="wcf.acp.index.woltlab.pluginStore"><![CDATA[Plugin Store]]></item>
                <item name="wcf.acp.index.missingLanguageItems"><![CDATA[Missing language items have been detected (last time: {@$missingLanguageItemsMTime|time}). Check the <a href="{link controller='DevtoolsMissingLanguageItemList'}{/link}">list of missing phrases</a> for more information.]]></item>
                <item name="wcf.acp.index.systemIdMismatch"><![CDATA[The system environment has changed. It is recommended to perform a <a href="{link controller='SystemCheck'}{/link}">System Check</a>.]]></item>
+               <item name="wcf.acp.index.cacheSanityCheckFailed"><![CDATA[The configured caching method (“{CACHE_SOURCE_TYPE}”) is not working correctly.]]></item>
        </category>
        <category name="wcf.acp.label">
                <item name="wcf.acp.label.add"><![CDATA[Add Label]]></item>