Documentation ¶
Index ¶
- Constants
- Variables
- type Cache
- type CallbackFn
- type DomainCache
- type DomainCacheEntries
- type DomainCacheEntry
- func (entry *DomainCacheEntry) CanReplicateEvent() bool
- func (entry *DomainCacheEntry) GetConfig() *persistence.DomainConfig
- func (entry *DomainCacheEntry) GetConfigVersion() int64
- func (entry *DomainCacheEntry) GetDomainNotActiveErr() error
- func (entry *DomainCacheEntry) GetFailoverNotificationVersion() int64
- func (entry *DomainCacheEntry) GetFailoverVersion() int64
- func (entry *DomainCacheEntry) GetInfo() *persistence.DomainInfo
- func (entry *DomainCacheEntry) GetNotificationVersion() int64
- func (entry *DomainCacheEntry) GetReplicationConfig() *persistence.DomainReplicationConfig
- func (entry *DomainCacheEntry) IsDomainActive() bool
- func (entry *DomainCacheEntry) IsGlobalDomain() bool
- type DomainCacheMock
- func (_m *DomainCacheMock) GetAllDomain() map[string]*DomainCacheEntry
- func (_m *DomainCacheMock) GetCacheSize() (int64, int64)
- func (_m *DomainCacheMock) GetDomain(name string) (*DomainCacheEntry, error)
- func (_m *DomainCacheMock) GetDomainByID(id string) (*DomainCacheEntry, error)
- func (_m *DomainCacheMock) GetDomainID(name string) (string, error)
- func (_m *DomainCacheMock) GetDomainNotificationVersion() int64
- func (_m *DomainCacheMock) RegisterDomainChangeCallback(shard int, initialNotificationVersion int64, beforeCallback CallbackFn, ...)
- func (_m *DomainCacheMock) Start()
- func (_m *DomainCacheMock) Stop()
- func (_m *DomainCacheMock) UnregisterDomainChangeCallback(shard int)
- type Entry
- type Iterator
- type Options
- type RemovedFunc
Constants ¶
const ( // DomainCacheRefreshInterval domain cache refresh interval DomainCacheRefreshInterval = 10 * time.Second )
Variables ¶
var ( // ErrCacheFull is returned if Put fails due to cache being filled with pinned elements ErrCacheFull = errors.New("Cache capacity is fully occupied with pinned elements") )
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache interface { // Get retrieves an element based on a key, returning nil if the element // does not exist Get(key interface{}) interface{} // Put adds an element to the cache, returning the previous element Put(key interface{}, value interface{}) interface{} // PutIfNotExist puts a value associated with a given key if it does not exist PutIfNotExist(key interface{}, value interface{}) (interface{}, error) // Delete deletes an element in the cache Delete(key interface{}) // Release decrements the ref count of a pinned element. If the ref count // drops to 0, the element can be evicted from the cache. Release(key interface{}) // Iterator returns the iterator of the cache Iterator() Iterator // Size returns the number of entries currently stored in the Cache Size() int }
A Cache is a generalized interface to a cache. See cache.LRU for a specific implementation (bounded cache with LRU eviction)
func NewLRU ¶
NewLRU creates a new LRU cache of the given size, setting initial capacity to the max size
func NewLRUWithInitialCapacity ¶
NewLRUWithInitialCapacity creates a new LRU cache with an initial capacity and a max size
type CallbackFn ¶ added in v0.3.14
type CallbackFn func(prevDomain *DomainCacheEntry, nextDomain *DomainCacheEntry)
CallbackFn is function to be called when the domain cache is changed the callback function will be called within the domain cache entry lock make sure the callback function will not call domain cache again in case of deadlock
type DomainCache ¶
type DomainCache interface { common.Daemon RegisterDomainChangeCallback(shard int, initialNotificationVersion int64, beforeCallback CallbackFn, afterCallback CallbackFn) UnregisterDomainChangeCallback(shard int) GetDomain(name string) (*DomainCacheEntry, error) GetDomainByID(id string) (*DomainCacheEntry, error) GetDomainID(name string) (string, error) GetDomainNotificationVersion() int64 GetAllDomain() map[string]*DomainCacheEntry GetCacheSize() (sizeOfCacheByName int64, sizeOfCacheByID int64) }
DomainCache is used the cache domain information and configuration to avoid making too many calls to cassandra. This cache is mainly used by frontend for resolving domain names to domain uuids which are used throughout the system. Each domain entry is kept in the cache for one hour but also has an expiry of 10 seconds. This results in updating the domain entry every 10 seconds but in the case of a cassandra failure we can still keep on serving requests using the stale entry from cache upto an hour
func NewDomainCache ¶
func NewDomainCache(metadataMgr persistence.MetadataManager, clusterMetadata cluster.Metadata, metricsClient metrics.Client, logger bark.Logger) DomainCache
NewDomainCache creates a new instance of cache for holding onto domain information to reduce the load on persistence
type DomainCacheEntries ¶ added in v0.3.13
type DomainCacheEntries []*DomainCacheEntry
DomainCacheEntries is DomainCacheEntry slice
func (DomainCacheEntries) Len ¶ added in v0.3.13
func (t DomainCacheEntries) Len() int
Len return length
func (DomainCacheEntries) Less ¶ added in v0.3.13
func (t DomainCacheEntries) Less(i, j int) bool
Less implements sort.Interface
func (DomainCacheEntries) Swap ¶ added in v0.3.13
func (t DomainCacheEntries) Swap(i, j int)
Swap implements sort.Interface.
type DomainCacheEntry ¶ added in v0.3.12
DomainCacheEntry contains the info and config for a domain
func CreateDomainCacheEntry ¶ added in v0.3.14
func CreateDomainCacheEntry(domainName string) *DomainCacheEntry
CreateDomainCacheEntry create a cache entry with domainName
func (*DomainCacheEntry) CanReplicateEvent ¶ added in v0.3.14
func (entry *DomainCacheEntry) CanReplicateEvent() bool
CanReplicateEvent return whether the workflows within this domain should be replicated
func (*DomainCacheEntry) GetConfig ¶ added in v0.3.12
func (entry *DomainCacheEntry) GetConfig() *persistence.DomainConfig
GetConfig return the domain config
func (*DomainCacheEntry) GetConfigVersion ¶ added in v0.3.12
func (entry *DomainCacheEntry) GetConfigVersion() int64
GetConfigVersion return the domain config version
func (*DomainCacheEntry) GetDomainNotActiveErr ¶ added in v0.3.12
func (entry *DomainCacheEntry) GetDomainNotActiveErr() error
GetDomainNotActiveErr return err if domain is not active, nil otherwise
func (*DomainCacheEntry) GetFailoverNotificationVersion ¶ added in v0.3.13
func (entry *DomainCacheEntry) GetFailoverNotificationVersion() int64
GetFailoverNotificationVersion return the global notification version of when failover happened
func (*DomainCacheEntry) GetFailoverVersion ¶ added in v0.3.12
func (entry *DomainCacheEntry) GetFailoverVersion() int64
GetFailoverVersion return the domain failover version
func (*DomainCacheEntry) GetInfo ¶ added in v0.3.12
func (entry *DomainCacheEntry) GetInfo() *persistence.DomainInfo
GetInfo return the domain info
func (*DomainCacheEntry) GetNotificationVersion ¶ added in v0.3.13
func (entry *DomainCacheEntry) GetNotificationVersion() int64
GetNotificationVersion return the global notification version of when domain changed
func (*DomainCacheEntry) GetReplicationConfig ¶ added in v0.3.12
func (entry *DomainCacheEntry) GetReplicationConfig() *persistence.DomainReplicationConfig
GetReplicationConfig return the domain replication config
func (*DomainCacheEntry) IsDomainActive ¶ added in v0.3.12
func (entry *DomainCacheEntry) IsDomainActive() bool
IsDomainActive return whether the domain is active, i.e. non global domain or global domain which active cluster is the current cluster
func (*DomainCacheEntry) IsGlobalDomain ¶ added in v0.3.12
func (entry *DomainCacheEntry) IsGlobalDomain() bool
IsGlobalDomain return whether the domain is a global domain
type DomainCacheMock ¶ added in v0.3.14
DomainCacheMock is an autogenerated mock type for the DomainCache type
func (*DomainCacheMock) GetAllDomain ¶ added in v0.3.14
func (_m *DomainCacheMock) GetAllDomain() map[string]*DomainCacheEntry
GetAllDomain provides a mock function with given fields:
func (*DomainCacheMock) GetCacheSize ¶ added in v0.3.14
func (_m *DomainCacheMock) GetCacheSize() (int64, int64)
GetCacheSize provides a mock function with given fields:
func (*DomainCacheMock) GetDomain ¶ added in v0.3.14
func (_m *DomainCacheMock) GetDomain(name string) (*DomainCacheEntry, error)
GetDomain provides a mock function with given fields: name
func (*DomainCacheMock) GetDomainByID ¶ added in v0.3.14
func (_m *DomainCacheMock) GetDomainByID(id string) (*DomainCacheEntry, error)
GetDomainByID provides a mock function with given fields: id
func (*DomainCacheMock) GetDomainID ¶ added in v0.3.14
func (_m *DomainCacheMock) GetDomainID(name string) (string, error)
GetDomainID provides a mock function with given fields: name
func (*DomainCacheMock) GetDomainNotificationVersion ¶ added in v0.3.14
func (_m *DomainCacheMock) GetDomainNotificationVersion() int64
GetDomainNotificationVersion provides a mock function with given fields:
func (*DomainCacheMock) RegisterDomainChangeCallback ¶ added in v0.3.14
func (_m *DomainCacheMock) RegisterDomainChangeCallback(shard int, initialNotificationVersion int64, beforeCallback CallbackFn, afterCallback CallbackFn)
RegisterDomainChangeCallback provides a mock function with given fields: shard, initialNotificationVersion, beforeCallback, afterCallback
func (*DomainCacheMock) Start ¶ added in v0.3.14
func (_m *DomainCacheMock) Start()
Start provides a mock function with given fields:
func (*DomainCacheMock) Stop ¶ added in v0.3.14
func (_m *DomainCacheMock) Stop()
Stop provides a mock function with given fields:
func (*DomainCacheMock) UnregisterDomainChangeCallback ¶ added in v0.3.14
func (_m *DomainCacheMock) UnregisterDomainChangeCallback(shard int)
UnregisterDomainChangeCallback provides a mock function with given fields: shard
type Entry ¶ added in v0.3.5
type Entry interface { // Key represents the key Key() interface{} // Value represents the value Value() interface{} // CreateTime represents the time when the entry is created CreateTime() time.Time }
Entry represents a key-value entry within the map
type Iterator ¶ added in v0.3.5
type Iterator interface { // Close closes the iterator // and releases any allocated resources Close() // HasNext return true if there is more items to be returned HasNext() bool // Next return the next item Next() Entry }
Iterator represents the interface for cache iterators
type Options ¶
type Options struct { // TTL controls the time-to-live for a given cache entry. Cache entries that // are older than the TTL will not be returned TTL time.Duration // InitialCapacity controls the initial capacity of the cache InitialCapacity int // Pin prevents in-use objects from getting evicted Pin bool // RemovedFunc is an optional function called when an element // is scheduled for deletion RemovedFunc RemovedFunc }
Options control the behavior of the cache
type RemovedFunc ¶
type RemovedFunc func(interface{})
RemovedFunc is a type for notifying applications when an item is scheduled for removal from the Cache. If f is a function with the appropriate signature and i is the interface{} scheduled for deletion, Cache calls go f(i)