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.