Base class for caching components. More...
#include <userver/cache/caching_component_base.hpp>
Inheritance diagram for components::CachingComponentBase< T >:
Collaboration diagram for components::CachingComponentBase< T >:Public Types | |
| using | DataType = T |
Public Member Functions | |
| CachingComponentBase (const ComponentConfig &config, const ComponentContext &) | |
| utils::SharedReadablePtr< T > | Get () const |
| utils::SharedReadablePtr< T > | GetUnsafe () const |
| template<class Class > | |
| concurrent::AsyncEventSubscriberScope | UpdateAndListen (Class *obj, std::string name, void(Class::*func)(const std::shared_ptr< const T > &)) |
| concurrent::AsyncEventChannel< const std::shared_ptr< const T > & > & | GetEventChannel () |
Public Member Functions inherited from components::LoggableComponentBase | |
| LoggableComponentBase (const ComponentConfig &, const ComponentContext &) | |
| LoggableComponentBase (LoggableComponentBase &&)=delete | |
| LoggableComponentBase (const LoggableComponentBase &)=delete | |
| ~LoggableComponentBase () override=default | |
| ComponentHealth | GetComponentHealth () const override |
| void | OnLoadingCancelled () override |
| void | OnAllComponentsLoaded () override |
| void | OnAllComponentsAreStopping () override |
Static Public Member Functions | |
| static yaml_config::Schema | GetStaticConfigSchema () |
Static Public Member Functions inherited from components::LoggableComponentBase | |
| static yaml_config::Schema | GetStaticConfigSchema () |
Protected Member Functions | |
| void | Set (std::unique_ptr< const T > value_ptr) |
| void | Set (T &&value) |
| template<typename... Args> | |
| void | Emplace (Args &&... args) |
| void | Clear () |
| virtual bool | MayReturnNull () const |
| virtual void | WriteContents (dump::Writer &writer, const T &contents) const |
| virtual std::unique_ptr< const T > | ReadContents (dump::Reader &reader) const |
Protected Member Functions inherited from cache::CacheUpdateTrait | |
| AllowedUpdateTypes | GetAllowedUpdateTypes () const |
| Update types configured for the cache. | |
| void | StartPeriodicUpdates (utils::Flags< Flag > flags={}) |
| Starts periodic updates. | |
| void | StopPeriodicUpdates () |
| Stops periodic updates. | |
| void | AssertPeriodicUpdateStarted () |
| void | OnCacheModified () |
| virtual void | Update (UpdateType type, const std::chrono::system_clock::time_point &last_update, const std::chrono::system_clock::time_point &now, UpdateStatisticsScope &stats_scope)=0 |
| Should be overridden in a derived class to align the stored data with some data source. | |
| CacheUpdateTrait (CacheUpdateTrait &&)=delete | |
| CacheUpdateTrait & | operator= (CacheUpdateTrait &&)=delete |
| void | InvalidateAsync (UpdateType update_type) |
| Non-blocking forced cache update of specified type. | |
| void | UpdateSyncDebug (UpdateType update_type) |
| Forces a cache update of specified type. | |
| const std::string & | Name () const |
Additional Inherited Members | |
Protected Types inherited from cache::CacheUpdateTrait | |
| enum class | Flag { kNone = 0 , kNoFirstUpdate = 1 << 0 } |
| Periodic update flags. More... | |
Base class for caching components.
Provides facilities for creating periodically updated caches. You need to override cache::CacheUpdateTrait::Update then call cache::CacheUpdateTrait::StartPeriodicUpdates after setup and cache::CacheUpdateTrait::StopPeriodicUpdates before teardown. You can also override cache::CachingComponentBase::PreAssignCheck and set has-pre-assign-check: true in the static config to enable check.
Caching components must be configured in service config (see options below) and may be reconfigured dynamically via components::DynamicConfig.
Basics of Caches provide a more detailed introduction.
| Name | Description | Default value |
|---|---|---|
| update-types | specifies whether incremental and/or full updates will be used | see below |
| update-interval | (required) interval between Update invocations | – |
| update-jitter | max. amount of time by which interval may be adjusted for requests dispersal | update_interval / 10 |
| full-update-interval | interval between full updates | – |
| updates-enabled | if false, cache updates are disabled (except for the first one if !first-update-fail-ok) | true |
| first-update-fail-ok | whether first update failure is non-fatal | false |
| task-processor | the name of the TaskProcessor for running DoWork | main-task-processor |
| config-settings | enables dynamic reconfiguration with CacheConfigSet | true |
| exception-interval | Used instead of update-interval in case of exception | update_interval |
| additional-cleanup-interval | how often to run background RCU garbage collector | 10 seconds |
| is-strong-period | whether to include Update execution time in update-interval | false |
| testsuite-force-periodic-update | override testsuite-periodic-update-enabled in TestsuiteSupport component config | – |
| failed-updates-before-expiration | the number of consecutive failed updates for data expiration | – |
| has-pre-assign-check | enables the check before changing the value in the cache, by default it is the check that the new value is not empty | false |
full-and-incremental: both update-interval and full-update-interval must be specified. Updates with UpdateType::kIncremental will be triggered each update-interval (adjusted by jitter) unless full-update-interval has passed and UpdateType::kFull is triggered.only-full: only update-interval must be specified. UpdateType::kFull will be triggered each update-interval (adjusted by jitter).only-incremental: only update-interval must be specified. UpdateType::kFull is triggered on the first update, afterwards UpdateType::kIncremental will be triggered each update-interval (adjusted by jitter).use it to enable periodic cache update for a component in testsuite environment where testsuite-periodic-update-enabled from TestsuiteSupport config is false
By default, update types are guessed based on update intervals presence. If both update-interval and full-update-interval are present, full-and-incremental types is assumed. Otherwise only-full is used.
dump::Dumper for more info on persistent cache dumps and corresponding config options.Definition at line 102 of file caching_component_base.hpp.
| using components::CachingComponentBase< T >::DataType = T |
Definition at line 110 of file caching_component_base.hpp.
| components::CachingComponentBase< T >::CachingComponentBase | ( | const ComponentConfig & | config, |
| const ComponentContext & | context | ||
| ) |
Definition at line 174 of file caching_component_base.hpp.
|
override |
Definition at line 187 of file caching_component_base.hpp.
|
protected |
Definition at line 267 of file caching_component_base.hpp.
|
protected |
Definition at line 262 of file caching_component_base.hpp.
| utils::SharedReadablePtr< T > components::CachingComponentBase< T >::Get | ( | ) | const |
Definition at line 196 of file caching_component_base.hpp.
| concurrent::AsyncEventChannel< const std::shared_ptr< const T > & > & components::CachingComponentBase< T >::GetEventChannel | ( | ) |
Definition at line 217 of file caching_component_base.hpp.
|
static |
Definition at line 331 of file caching_component_base.hpp.
| utils::SharedReadablePtr< T > components::CachingComponentBase< T >::GetUnsafe | ( | ) | const |
Definition at line 222 of file caching_component_base.hpp.
|
protectedvirtual |
Whether Get() is expected to return nullptr. If MayReturnNull() returns false, Get() throws an exception instead of returning nullptr.
Definition at line 272 of file caching_component_base.hpp.
|
protectedvirtual |
Definition at line 299 of file caching_component_base.hpp.
|
protected |
Definition at line 227 of file caching_component_base.hpp.
|
protected |
Definition at line 256 of file caching_component_base.hpp.
| concurrent::AsyncEventSubscriberScope components::CachingComponentBase< T >::UpdateAndListen | ( | Class * | obj, |
| std::string | name, | ||
| void(Class::*)(const std::shared_ptr< const T > &) | func | ||
| ) |
Subscribes to cache updates using a member function. Also immediately invokes the function with the current cache contents.
Definition at line 206 of file caching_component_base.hpp.
|
protectedvirtual |
Override to use custom serialization for cache dumps
Definition at line 289 of file caching_component_base.hpp.