From 090892db4cb37cdf4b533f959bf167b2569d50e1 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Tue, 27 Feb 2018 21:41:08 +0200 Subject: [PATCH] MXS-1475 Add 'enabled' parameter to Cache filter With 'enabled' it can be specified whether the cache should initially be enabled or disabled. Useful as it is now possible to enable/disable the cache dynamically. --- server/modules/filter/cache/cachefilter.cc | 6 ++++++ server/modules/filter/cache/cachefilter.h | 3 +++ server/modules/filter/cache/cachefiltersession.cc | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/server/modules/filter/cache/cachefilter.cc b/server/modules/filter/cache/cachefilter.cc index 1391c311b..5ad618f1d 100644 --- a/server/modules/filter/cache/cachefilter.cc +++ b/server/modules/filter/cache/cachefilter.cc @@ -243,6 +243,11 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE() MXS_MODULE_OPT_NONE, parameter_cache_in_trxs_values }, + { + "enabled", + MXS_MODULE_PARAM_BOOL, + CACHE_DEFAULT_ENABLED + }, {MXS_END_MODULE_PARAMS} } }; @@ -351,6 +356,7 @@ bool CacheFilter::process_params(char **pzOptions, MXS_CONFIG_PARAMETER *ppParam config.cache_in_trxs = static_cast(config_get_enum(ppParams, "cache_in_transactions", parameter_cache_in_trxs_values)); + config.enabled = config_get_bool(ppParams, "enabled"); if (!config.storage) { diff --git a/server/modules/filter/cache/cachefilter.h b/server/modules/filter/cache/cachefilter.h index 12dbfa4f7..3d61d6b2a 100644 --- a/server/modules/filter/cache/cachefilter.h +++ b/server/modules/filter/cache/cachefilter.h @@ -60,6 +60,8 @@ #define CACHE_DEFAULT_STORAGE "storage_inmemory" // Transaction behaviour #define CACHE_DEFAULT_CACHE_IN_TRXS "all_transactions" +// Enabled +#define CACHE_DEFAULT_ENABLED "true" typedef enum cache_selects { @@ -92,4 +94,5 @@ typedef struct cache_config cache_thread_model_t thread_model; /**< Thread model. */ cache_selects_t selects; /**< Assume/verify that selects are cacheable. */ cache_in_trxs_t cache_in_trxs; /**< To cache or not to cache inside transactions. */ + bool enabled; /**< Whether the cache is enabled or not. */ } CACHE_CONFIG; diff --git a/server/modules/filter/cache/cachefiltersession.cc b/server/modules/filter/cache/cachefiltersession.cc index 62cd21e13..ad43bf46f 100644 --- a/server/modules/filter/cache/cachefiltersession.cc +++ b/server/modules/filter/cache/cachefiltersession.cc @@ -187,7 +187,7 @@ CacheFilterSession::CacheFilterSession(MXS_SESSION* pSession, Cache* pCache, cha , m_zUseDb(NULL) , m_refreshing(false) , m_is_read_only(true) - , m_enabled(true) // TODO: Add configuration variable for initial mode. + , m_enabled(pCache->config().enabled) , m_variable_added(false) { m_key.data = 0;