mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
avoid exposing cache client directly
This commit is contained in:
parent
085b631099
commit
b2967fbb37
@ -31,7 +31,7 @@ type CacheStorage interface {
|
|||||||
// Get reads object from Cache
|
// Get reads object from Cache
|
||||||
Get(key string) (interface{}, error)
|
Get(key string) (interface{}, error)
|
||||||
|
|
||||||
// Set sets an object into the cache
|
// Set sets an object into the cache. if `expire` is set to zero it never expires.
|
||||||
Set(key string, value interface{}, expire time.Duration) error
|
Set(key string, value interface{}, expire time.Duration) error
|
||||||
|
|
||||||
// Delete object from cache
|
// Delete object from cache
|
||||||
@ -41,16 +41,28 @@ type CacheStorage interface {
|
|||||||
// RemoteCache allows Grafana to cache data outside its own process
|
// RemoteCache allows Grafana to cache data outside its own process
|
||||||
type RemoteCache struct {
|
type RemoteCache struct {
|
||||||
log log.Logger
|
log log.Logger
|
||||||
Client CacheStorage
|
client CacheStorage
|
||||||
SQLStore *sqlstore.SqlStore `inject:""`
|
SQLStore *sqlstore.SqlStore `inject:""`
|
||||||
Cfg *setting.Cfg `inject:""`
|
Cfg *setting.Cfg `inject:""`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ds *RemoteCache) Get(key string) (interface{}, error) {
|
||||||
|
return ds.client.Get(key)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ds *RemoteCache) Set(key string, value interface{}, expire time.Duration) error {
|
||||||
|
return ds.client.Set(key, value, expire)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ds *RemoteCache) Delete(key string) error {
|
||||||
|
return ds.client.Delete(key)
|
||||||
|
}
|
||||||
|
|
||||||
// Init initializes the service
|
// Init initializes the service
|
||||||
func (ds *RemoteCache) Init() error {
|
func (ds *RemoteCache) Init() error {
|
||||||
ds.log = log.New("cache.remote")
|
ds.log = log.New("cache.remote")
|
||||||
|
|
||||||
ds.Client = createClient(ds.Cfg.RemoteCacheOptions, ds.SQLStore)
|
ds.client = createClient(ds.Cfg.RemoteCacheOptions, ds.SQLStore)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -58,7 +70,7 @@ func (ds *RemoteCache) Init() error {
|
|||||||
// Run start the backend processes for cache clients
|
// Run start the backend processes for cache clients
|
||||||
func (ds *RemoteCache) Run(ctx context.Context) error {
|
func (ds *RemoteCache) Run(ctx context.Context) error {
|
||||||
//create new interface if more clients need GC jobs
|
//create new interface if more clients need GC jobs
|
||||||
backgroundjob, ok := ds.Client.(registry.BackgroundService)
|
backgroundjob, ok := ds.client.(registry.BackgroundService)
|
||||||
if ok {
|
if ok {
|
||||||
return backgroundjob.Run(ctx)
|
return backgroundjob.Run(ctx)
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ func createTestClient(t *testing.T, opts *setting.RemoteCacheOptions, sqlstore *
|
|||||||
t.Fatalf("failed to init client for test. error: %v", err)
|
t.Fatalf("failed to init client for test. error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return dc.Client
|
return dc.client
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCachedBasedOnConfig(t *testing.T) {
|
func TestCachedBasedOnConfig(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user