mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-13 19:44:21 +00:00
4eaa3163b6
# Which Problems Are Solved We identified the need of caching. Currently we have a number of places where we use different ways of caching, like go maps or LRU. We might also want shared chaches in the future, like Redis-based or in special SQL tables. # How the Problems Are Solved Define a generic Cache interface which allows different implementations. - A noop implementation is provided and enabled as. - An implementation using go maps is provided - disabled in defaults.yaml - enabled in integration tests - Authz middleware instance objects are cached using the interface. # Additional Changes - Enabled integration test command raceflag - Fix a race condition in the limits integration test client - Fix a number of flaky integration tests. (Because zitadel is super fast now!) 🎸 🚀 # Additional Context Related to https://github.com/zitadel/zitadel/issues/8648
30 lines
489 B
Go
30 lines
489 B
Go
package cache
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
type IndexUnknownError[I comparable] struct {
|
|
index I
|
|
}
|
|
|
|
func NewIndexUnknownErr[I comparable](index I) error {
|
|
return IndexUnknownError[I]{index}
|
|
}
|
|
|
|
func (i IndexUnknownError[I]) Error() string {
|
|
return fmt.Sprintf("index %v unknown", i.index)
|
|
}
|
|
|
|
func (a IndexUnknownError[I]) Is(err error) bool {
|
|
if b, ok := err.(IndexUnknownError[I]); ok {
|
|
return a.index == b.index
|
|
}
|
|
return false
|
|
}
|
|
|
|
var (
|
|
ErrCacheMiss = errors.New("cache miss")
|
|
)
|