Documentation
¶
Overview ¶
Package storage keeps the divergences that mirrors report to the SPECTRE server. A URL selects the backend by its scheme, such as memory://, redis://, or redis-cluster://.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Constructor ¶ added in v0.41.0
Constructor opens a store at a URL whose scheme it is registered for.
type Memory ¶
type Memory struct {
// contains filtered or unexported fields
}
Memory keeps divergences in memory, so a restart loses them. Stored divergences share their slices with callers, who never mutate them.
func (*Memory) Clear ¶
Clear removes the divergences of both directions of a service environment's mirror.
type Redis ¶
type Redis struct {
// contains filtered or unexported fields
}
Redis keeps divergences in one hash, shared by servers using the same database. Commands touch only that key, so in a cluster one node's slot serves them all.
func NewRedis ¶
NewRedis connects to the Redis server at a redis:// or rediss:// URL, or to the Redis Cluster at a redis-cluster:// or rediss-cluster:// URL.
func (*Redis) Clear ¶
Clear removes the divergences of both directions of a service environment's mirror.
type Store ¶
type Store interface {
// Record keeps a divergence unless its source has already reported a later quarantine.
Record(ctx context.Context, divergence model.Divergence) error
// Clear removes the divergences of both directions of a service environment's mirror.
Clear(ctx context.Context, service, environment string) error
// List returns every stored divergence, in no particular order.
List(ctx context.Context) ([]model.Divergence, error)
Close() error
}
Store keeps the latest divergence of each mirror direction. Callers validate divergences before recording them and never mutate stored or listed ones.