rhubarbgroup / redis-cache

A persistent object cache backend for WordPress powered by Redis. Supports Predis, PhpRedis, Relay, replication, sentinels, clustering and WP-CLI.
https://wordpress.org/plugins/redis-cache/
GNU General Public License v3.0
425 stars 148 forks source link

PHP Fatal error: Uncaught Error: Call to a member function get() on null in /wp-content/object-cache.php:193 #531

Closed DrLightman closed 3 months ago

DrLightman commented 3 months ago

Hi, found several log lines regarding this error in Apache logs:

PHP Fatal error:  Uncaught Error: Call to a member function get() on null in /opt/webroot/wp-content/object-cache.php:193
Stack trace:
#0 /opt/webroot/wp-includes/option.php(165): wp_cache_get()
#1 /opt/webroot/wp-includes/l10n.php(63): get_option()
#2 /opt/webroot/wp-includes/l10n.php(139): get_locale()
#3 /opt/webroot/wp-includes/l10n.php(766): determine_locale()
#4 /opt/webroot/wp-includes/load.php(1395): load_textdomain()
#5 /opt/webroot/wp-content/object-cache.php(2952): wp_load_translations_early()
#6 /opt/webroot/wp-content/object-cache.php(2940): WP_Object_Cache->show_error_and_die()
#7 /opt/webroot/wp-content/object-cache.php(566): WP_Object_Cache->handle_exception()
#8 /opt/webroot/wp-content/object-cache.php(256): WP_Object_Cache->__construct()
#9 /opt/webroot/wp-includes/load.php(730): wp_cache_init()
#10 /opt/webroot/wp-settings.php(131): wp_start_object_cache()
#11 /opt/webroot/ in /opt/webroot/wp-content/object-cache.php on line 193

Steps to Reproduce

Unfortuntaley I wouldn't know how to reproduce.

Environment

JacobBlana commented 3 months ago

Hello, we are facing this issue for few weeks now, here are our logs..

Looks like it happens right after REDIS exception.. Our client confirmed that it is happening to him mostly while editing / creating posts.. We have pretty huge multisite database already, but i would assume it should not be killing REDIS like that..

[04-Jun-2024 06:20:17 UTC] RedisException: socket error on read socket in /DISK3/www/0000/domainname.com/www/app/object-cache.php:559
Stack trace:
#0 /DISK3/www/0000/domainname.com/www/app/object-cache.php(559): Redis->ping()
#1 /DISK3/www/0000/domainname.com/www/app/object-cache.php(256): WP_Object_Cache->__construct()
#2 /DISK3/www/0000/domainname.com/www/wp/wp-includes/load.php(860): wp_cache_init()
#3 /DISK3/www/0000/domainname.com/www/wp/wp-settings.php(144): wp_start_object_cache()
#4 /DISK3/www/0000/domainname.com/www/wp-config.php(11): require_once('...')
#5 /DISK3/www/0000/domainname.com/www/wp/wp-load.php(55): require_once('...')
#6 /DISK3/www/0000/domainname.com/www/wp/wp-blog-header.php(13): require_once('...')
#7 /DISK3/www/0000/domainname.com/www/index.php(6): require('...')
#8 {main}
[04-Jun-2024 06:20:17 UTC] PHP Fatal error:  Uncaught Error: Call to a member function get() on null in /DISK3/www/0000/domainname.com/www/app/object-cache.php:193
Stack trace:
#0 /DISK3/www/0000/domainname.com/www/wp/wp-includes/class-wp-textdomain-registry.php(187): wp_cache_get()
#1 /DISK3/www/0000/domainname.com/www/wp/wp-includes/class-wp-textdomain-registry.php(302): WP_Textdomain_Registry->get_language_files_from_path()
#2 /DISK3/www/0000/domainname.com/www/wp/wp-includes/class-wp-textdomain-registry.php(98): WP_Textdomain_Registry->get_path_from_lang_dir()
#3 /DISK3/www/0000/domainname.com/www/wp/wp-includes/l10n.php(1370): WP_Textdomain_Registry->get()
#4 /DISK3/www/0000/domainname.com/www/wp/wp-includes/l10n.php(1400): _load_textdomain_just_in_time()
#5 /DISK3/www/0000/domainname.com/www/wp/wp-includes/l10n.php(194): get_translations_for_domain()
#6 /DISK3/www/0000/domainname.com/www/wp/wp-includes/l10n.php(306): translate()
#7 /DISK3/www/0000/domainname.com/www/app/object-cache.php(2974): __()
#8 /DISK3/www/0000/domainname.com/www/app/object-cache.php(2940): WP_Object_Cache->show_error_and_die()
#9 /DISK3/www/0000/domainname.com/www/app/object-cache.php(566): WP_Object_Cache->handle_exception()
#10 /DISK3/www/0000/domainname.com/www/app/object-cache.php(256): WP_Object_Cache->__construct()
#11 /DISK3/www/0000/domainname.com/www/wp/wp-includes/load.php(860): wp_cache_init()
#12 /DISK3/www/0000/domainname.com/www/wp/wp-settings.php(144): wp_start_object_cache()
#13 /DISK3/www/0000/domainname.com/www/wp-config.php(11): require_once('...')
#14 /DISK3/www/0000/domainname.com/www/wp/wp-load.php(55): require_once('...')
#15 /DISK3/www/0000/domainname.com/www/wp/wp-blog-header.php(13): require_once('...')
#16 /DISK3/www/0000/domainname.com/www/index.php(6): require('...')
#17 {main}
  thrown in /DISK3/www/0000/domainname.com/www/app/object-cache.php on line 193
[04-Jun-2024 06:20:23 UTC] RedisException: BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE. in /DISK3/www/0000/domainname.com/www/app/object-cache.php:559
Stack trace:
#0 /DISK3/www/0000/domainname.com/www/app/object-cache.php(559): Redis->ping()
#1 /DISK3/www/0000/domainname.com/www/app/object-cache.php(256): WP_Object_Cache->__construct()
#2 /DISK3/www/0000/domainname.com/www/wp/wp-includes/load.php(860): wp_cache_init()
#3 /DISK3/www/0000/domainname.com/www/wp/wp-settings.php(144): wp_start_object_cache()
#4 /DISK3/www/0000/domainname.com/www/wp-config.php(11): require_once('...')
#5 /DISK3/www/0000/domainname.com/www/wp/wp-load.php(55): require_once('...')
#6 /DISK3/www/0000/domainname.com/www/wp/wp-blog-header.php(13): require_once('...')
#7 /DISK3/www/0000/domainname.com/www/index.php(6): require('...')
#8 {main}
[04-Jun-2024 06:20:23 UTC] PHP Fatal error:  Uncaught Error: Call to a member function get() on null in /DISK3/www/0000/domainname.com/www/app/object-cache.php:193
Stack trace:
#0 /DISK3/www/0000/domainname.com/www/wp/wp-includes/class-wp-textdomain-registry.php(187): wp_cache_get()
#1 /DISK3/www/0000/domainname.com/www/wp/wp-includes/class-wp-textdomain-registry.php(302): WP_Textdomain_Registry->get_language_files_from_path()
#2 /DISK3/www/0000/domainname.com/www/wp/wp-includes/class-wp-textdomain-registry.php(98): WP_Textdomain_Registry->get_path_from_lang_dir()
#3 /DISK3/www/0000/domainname.com/www/wp/wp-includes/l10n.php(1370): WP_Textdomain_Registry->get()
#4 /DISK3/www/0000/domainname.com/www/wp/wp-includes/l10n.php(1400): _load_textdomain_just_in_time()
#5 /DISK3/www/0000/domainname.com/www/wp/wp-includes/l10n.php(194): get_translations_for_domain()
#6 /DISK3/www/0000/domainname.com/www/wp/wp-includes/l10n.php(306): translate()
#7 /DISK3/www/0000/domainname.com/www/app/object-cache.php(2974): __()
#8 /DISK3/www/0000/domainname.com/www/app/object-cache.php(2940): WP_Object_Cache->show_error_and_die()
#9 /DISK3/www/0000/domainname.com/www/app/object-cache.php(566): WP_Object_Cache->handle_exception()
#10 /DISK3/www/0000/domainname.com/www/app/object-cache.php(256): WP_Object_Cache->__construct()
#11 /DISK3/www/0000/domainname.com/www/wp/wp-includes/load.php(860): wp_cache_init()
#12 /DISK3/www/0000/domainname.com/www/wp/wp-settings.php(144): wp_start_object_cache()
#13 /DISK3/www/0000/domainname.com/www/wp-config.php(11): require_once('...')
#14 /DISK3/www/0000/domainname.com/www/wp/wp-load.php(55): require_once('...')
#15 /DISK3/www/0000/domainname.com/www/wp/wp-blog-header.php(13): require_once('...')
#16 /DISK3/www/0000/domainname.com/www/index.php(6): require('...')
#17 {main}
  thrown in /DISK3/www/0000/domainname.com/www/app/object-cache.php on line 193

Environment

Plugin version: 2.5.2 Web server: Apache/2.4.38 PHP version: 8.1.28 WordPress version: 6.3.5

Status: Připojeno
Client: PhpRedis (v6.0.2)
Drop-in: Valid
Disabled: No
Ping: 1
Errors: []
PhpRedis: 6.0.2
Relay: Not loaded
Predis: 2.1.2
Credis: Not loaded
PHP Version: 8.1.28
Plugin Version: 2.5.2
Redis Version: 5.0.14
Multisite: Yes
Metrics: Enabled
Metrics recorded: 8396
Filesystem: Writable
Global Prefix: ""
Blog Prefix: 1
Timeout: 1
Read Timeout: 1
Retry Interval: 
WP_REDIS_PLUGIN_PATH: "/DISK3/www/0000/domainname.com/www/app/plugins/redis-cache"
Global Groups: [
    "blog-details",
    "blog-id-cache",
    "blog-lookup",
    "global-posts",
    "networks",
    "rss",
    "sites",
    "site-details",
    "site-lookup",
    "site-options",
    "site-transient",
    "users",
    "useremail",
    "userlogins",
    "usermeta",
    "user_meta",
    "userslugs",
    "redis-cache",
    "blog_meta",
    "network-queries",
    "site-queries",
    "theme_files",
    "translation_files",
    "user-queries"
]
Ignored Groups: [
    "counts",
    "plugins",
    "theme_json",
    "themes"
]
Unflushable Groups: []
Groups Types: {
    "blog-details": "global",
    "blog-id-cache": "global",
    "blog-lookup": "global",
    "global-posts": "global",
    "networks": "global",
    "rss": "global",
    "sites": "global",
    "site-details": "global",
    "site-lookup": "global",
    "site-options": "global",
    "site-transient": "global",
    "users": "global",
    "useremail": "global",
    "userlogins": "global",
    "usermeta": "global",
    "user_meta": "global",
    "userslugs": "global",
    "redis-cache": "global",
    "blog_meta": "global",
    "network-queries": "global",
    "site-queries": "global",
    "theme_files": "global",
    "translation_files": "global",
    "user-queries": "global",
    "counts": "ignored",
    "plugins": "ignored",
    "theme_json": "ignored",
    "themes": "ignored"
}
Drop-ins: [
    "advanced-cache.php v by ",
    "Redis Object Cache Drop-In v2.5.2 by Till Krüss"
]