#include <userver/cache/base_mongo_cache.hpp>
Base class for all caches polling mongo collection
You have to provide a traits class in order to use this.
For avoiding "memory leaks", see the respective section in components::CachingComponentBase.
| Name | Description | Default value |
|---|---|---|
| update-correction | Adjusts incremental updates window to overlap with previous update. | 0 |
Options inherited from components::CachingComponentBase :
| Name | Description | Default value |
|---|---|---|
| update-types | Specifies whether incremental and/or full updates are used. Possible values: full-and-incremental, only-full, only-incremental. | – |
| update-interval | (required) interval between Update invocations. | – |
| update-jitter | Max. amount of time by which update-interval may be adjusted for requests dispersal. | update_interval / 10 |
| updates-enabled | If false, cache updates are disabled (except for the first one if !first-update-fail-ok). | true |
| full-update-interval | Interval between full updates. | – |
| full-update-jitter | Max. amount of time by which full-update-interval may be adjusted for requests dispersal. | full-update-interval / 10 |
| exception-interval | Sleep interval after an unhandled exception. | update_interval |
| 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 |
| additional-cleanup-interval | How often to run background RCU garbage collector, in milliseconds. | 10000 |
| is-strong-period | Whether to include Update execution time in update-interval. | false |
| 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 |
| 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. | – |
| alert-on-failing-to-update-times | Fire an alert if the cache update failed specified amount of times in a row. If zero - alerts are disabled. Value from dynamic config takes priority over static. | 0 |
| safe-data-lifetime | Enables awaiting data destructors in the component's destructor. Can be set to false if the stored data does not refer to the component and its dependencies. | true |
| dump | Manages cache behavior after dump load. | – |
| dump.first-update-mode | Behavior of update after successful load from dump. skip - after successful load from dump, do nothing; required - make a synchronous update of type first-update-type, stop the service on failure; best-effort - make a synchronous update of type first-update-type, keep working and use data from dump on failure. Possible values: skip, required, best-effort. | skip |
| dump.first-update-type | Update type after successful load from dump. Possible values: full, incremental, incremental-then-async-full. | full |
Options inherited from components::ComponentBase :
| Name | Description | Default value |
|---|---|---|
| load-enabled | Set to false to disable loading of the component. | true |
All fields below (except for function overrides) are mandatory.
Definition at line 121 of file base_mongo_cache.hpp.
Inheritance diagram for components::MongoCache< MongoCacheTraits >:Public Types | |
| using | DataType |
Public Member Functions | |
| MongoCache (const ComponentConfig &, const ComponentContext &) | |
| const std::string & | Name () const |
| const std::string & | Name () const |
| void | InvalidateAsync (UpdateType update_type) |
| Non-blocking forced cache update of specified type. | |
| void | InvalidateAsync (UpdateType update_type) |
| Non-blocking forced cache update of specified type. | |
| void | InvalidateAsync (UpdateType update_type) |
| Non-blocking forced cache update of specified type. | |
| utils::SharedReadablePtr< MongoCacheTraits::DataType > | Get () const final |
| utils::SharedReadablePtr< MongoCacheTraits::DataType > | GetUnsafe () const |
| concurrent::AsyncEventSubscriberScope | UpdateAndListen (Class *obj, std::string name, void(Class::*func)(const std::shared_ptr< const MongoCacheTraits::DataType > &)) |
| concurrent::AsyncEventChannel< const std::shared_ptr< const MongoCacheTraits::DataType > & > & | GetEventChannel () |
| ComponentHealth | GetComponentHealth () const override |
| void | OnLoadingCancelled () override |
| void | OnAllComponentsLoaded () override |
| void | OnGracefulShutdown (engine::Deadline) override |
| void | OnAllComponentsAreStopping () override |
| void | UpdateSyncDebug (UpdateType update_type) |
| Forces a cache update of specified type. | |
Static Public Member Functions | |
| static yaml_config::Schema | GetStaticConfigSchema () |
Static Public Attributes | |
| static constexpr std::string_view | kName = MongoCacheTraits::kName |
Protected Types | |
| using | LoggableComponentBase |
| enum | Flag |
| Periodic update flags. More... | |
Protected Member Functions | |
| void | Set (std::unique_ptr< const MongoCacheTraits::DataType > value_ptr) |
| void | Set (MongoCacheTraits::DataType &&value) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| void | Attach (const std::shared_ptr< const MongoCacheTraits::DataType > &value_ptr) |
| void | Emplace (Args &&... args) |
| void | Clear () |
| Clears the content of the cache by string a default constructed T. | |
| virtual bool | MayReturnNull () const |
Whether Get is expected to return nullptr. | |
| virtual void | PreAssignCheck (const MongoCacheTraits::DataType *old_value_ptr, const MongoCacheTraits::DataType *new_value_ptr) const |
| If the option has-pre-assign-check is set true in static config, this function is called before assigning the new value to the cache. | |
| void | UpdateSyncDebug (UpdateType update_type) |
| Forces a cache update of specified type. | |
| AllowedUpdateTypes | GetAllowedUpdateTypes () const |
| Update types configured for the cache. | |
| void | OnCacheModified () |
| virtual utils::Flags< Flag > | GetStartFlags () const |
| Returns flags for cache start. | |
| void | EarlyStartPeriodicUpdates (utils::Flags< Flag > flags) |
| Call this to start periodic updates just now, not after the constructor. | |
| void | EarlyStartPeriodicUpdates (utils::Flags< Flag > flags) |
| Call this to start periodic updates just now, not after the constructor. | |
| virtual void | WriteContents (dump::Writer &writer, const MongoCacheTraits::DataType &contents) const |
| virtual std::unique_ptr< const MongoCacheTraits::DataType > | ReadContents (dump::Reader &reader) const |
|
inherited |
Definition at line 144 of file caching_component_base.hpp.
|
protectedinherited |
Definition at line 79 of file component_base.hpp.
|
strongprotectedinherited |
Periodic update flags.
Definition at line 61 of file cache_update_trait.hpp.
| components::MongoCache< MongoCacheTraits >::MongoCache | ( | const ComponentConfig & | config, |
| const ComponentContext & | context ) |
Definition at line 160 of file base_mongo_cache.hpp.
|
protectedinherited |
Attach the value of cache. As a result the Get() member function starts returning the value passed into this function after the Update() finishes. Does not take over into sole ownership. Do not use unless absolutely necessary. The object must be strictly thread-safe.
Definition at line 185 of file caching_component_base.hpp.
|
protectedinherited |
Clears the content of the cache by string a default constructed T.
Definition at line 192 of file caching_component_base.hpp.
|
protectedinherited |
Definition at line 189 of file caching_component_base.hpp.
|
finalvirtualinherited |
nullptr if and only if MayReturnNull returns true. | cache::EmptyCacheError | if the contents are nullptr, and MayReturnNull returns false (which is the default behavior). |
Implements cache::DataProvider< MongoCacheTraits::DataType >.
Definition at line 150 of file caching_component_base.hpp.
|
inlineoverrideinherited |
Override this function to inform the world of the state of your component.
Definition at line 35 of file component_base.hpp.
|
inherited |
Definition at line 164 of file caching_component_base.hpp.
|
static |
Definition at line 329 of file base_mongo_cache.hpp.
|
inherited |
MayReturnNull. Definition at line 153 of file caching_component_base.hpp.
|
inherited |
Non-blocking forced cache update of specified type.
|
inherited |
Non-blocking forced cache update of specified type.
|
inherited |
Non-blocking forced cache update of specified type.
|
protectedvirtualinherited |
Whether Get is expected to return nullptr.
Definition at line 195 of file caching_component_base.hpp.
|
inherited |
|
inherited |
|
inlineoverrideinherited |
Component may use this function to stop doing work before the stop of the components that depend on it.
Base components may override it and make final to do some work before the derived object constructor is called. Don't use it otherwise.
Definition at line 70 of file component_base.hpp.
|
inlineoverrideinherited |
Component may use this function to finalize registration of other components that depend on it (for example, handler components register in server component, and the latter uses OnAllComponentsLoaded() to start processing requests).
Base components may override it and make final to do some work after the derived object constructor is called. Don't use it otherwise.
Definition at line 51 of file component_base.hpp.
|
protectedinherited |
Called in CachingComponentBase::Set during update to indicate that the cached data has been modified
|
overrideinherited |
Serving components like HTTP and gRPC servers may use this function to stop accepting new requests and shutdown serving in the given time interval. Application components likely do not need to override it.
| [in] | serving_shutdown_deadline | The deadline until already running requests should be allowed to complete. The component is supposed to stop accepting new requests and continue processing of already active requests until this deadline (unless those requests finish earlier). And it might completely shutdown requests processing when the deadline is reached (or when no active requests left). |
|
inlineoverrideinherited |
Called once if the creation of any other component failed. If the current component expects some other component to take any action with the current component, this call is a signal that such action may never happen due to components loading was cancelled. Application components might not want to override it.
Definition at line 42 of file component_base.hpp.
|
protectedvirtualinherited |
If the option has-pre-assign-check is set true in static config, this function is called before assigning the new value to the cache.
Definition at line 207 of file caching_component_base.hpp.
|
protectedvirtualinherited |
Definition at line 201 of file caching_component_base.hpp.
|
protectedinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 177 of file caching_component_base.hpp.
|
protectedinherited |
Sets the new value of cache. As a result the Get() member function starts returning the value passed into this function after the Update() finishes.
Definition at line 174 of file caching_component_base.hpp.
|
inherited |
Subscribes to cache updates using a member function. Also immediately invokes the function with the current cache contents.
Definition at line 158 of file caching_component_base.hpp.
|
inherited |
Forces a cache update of specified type.
| If | Update throws |
|
inherited |
Forces a cache update of specified type.
| If | Update throws |
|
protectedvirtualinherited |
Override to use custom serialization for cache dumps
Definition at line 199 of file caching_component_base.hpp.
|
staticconstexpr |
Definition at line 125 of file base_mongo_cache.hpp.