package cache

import "github.com/open-policy-agent/opa/topdown/cache"

Package cache defines the inter-query cache interface that can cache data across queries

Index

Types

type Config

type Config struct {
	InterQueryBuiltinCache InterQueryBuiltinCacheConfig `json:"inter_query_builtin_cache"`
}

Config represents the configuration of the inter-query cache.

func ParseCachingConfig

func ParseCachingConfig(raw []byte) (*Config, error)

ParseCachingConfig returns the config for the inter-query cache.

type InterQueryBuiltinCacheConfig

type InterQueryBuiltinCacheConfig struct {
	MaxSizeBytes                      *int64 `json:"max_size_bytes,omitempty"`
	ForcedEvictionThresholdPercentage *int64 `json:"forced_eviction_threshold_percentage,omitempty"`
	StaleEntryEvictionPeriodSeconds   *int64 `json:"stale_entry_eviction_period_seconds,omitempty"`
}

InterQueryBuiltinCacheConfig represents the configuration of the inter-query cache that built-in functions can utilize. MaxSizeBytes - max capacity of cache in bytes ForcedEvictionThresholdPercentage - capacity usage in percentage after which forced FIFO eviction starts StaleEntryEvictionPeriodSeconds - time period between end of previous and start of new stale entry eviction routine

type InterQueryCache

type InterQueryCache interface {
	Get(key ast.Value) (value InterQueryCacheValue, found bool)
	Insert(key ast.Value, value InterQueryCacheValue) int
	InsertWithExpiry(key ast.Value, value InterQueryCacheValue, expiresAt time.Time) int
	Delete(key ast.Value)
	UpdateConfig(config *Config)
	Clone(value InterQueryCacheValue) (InterQueryCacheValue, error)
}

InterQueryCache defines the interface for the inter-query cache.

func NewInterQueryCache

func NewInterQueryCache(config *Config) InterQueryCache

NewInterQueryCache returns a new inter-query cache. The cache uses a FIFO eviction policy when it reaches the forced eviction threshold. Parameters:

config - to configure the InterQueryCache

func NewInterQueryCacheWithContext

func NewInterQueryCacheWithContext(ctx context.Context, config *Config) InterQueryCache

NewInterQueryCacheWithContext returns a new inter-query cache with context. The cache uses a combination of FIFO eviction policy when it reaches the forced eviction threshold and a periodic cleanup routine to remove stale entries that exceed their expiration time, if specified. If configured with a zero stale_entry_eviction_period_seconds value, the stale entry cleanup routine is disabled.

Parameters:

ctx - used to control lifecycle of the stale entry cleanup routine
config - to configure the InterQueryCache

type InterQueryCacheValue

type InterQueryCacheValue interface {
	SizeInBytes() int64
	Clone() (InterQueryCacheValue, error)
}

InterQueryCacheValue defines the interface for the data that the inter-query cache holds.

Source Files

cache.go

Version
v0.64.0
Published
Apr 25, 2024
Platform
js/wasm
Imports
8 packages
Last checked
4 minutes ago

Tools for package owners.