summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorValery Piashchynski <[email protected]>2021-09-01 13:19:09 +0300
committerValery Piashchynski <[email protected]>2021-09-01 13:19:09 +0300
commit9c8da162b3347b632f33f85d56e8c1ff7014631a (patch)
treebb614a186e05adf816b3f2b62e2d25bfa821a574 /plugins
parent0437d1f58514f694ea86e8176e621c009cd510f9 (diff)
Code polishing before release
Signed-off-by: Valery Piashchynski <[email protected]>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/boltdb/boltjobs/consumer.go2
-rw-r--r--plugins/boltdb/boltjobs/listener.go5
-rw-r--r--plugins/boltdb/boltkv/driver.go8
-rw-r--r--plugins/boltdb/doc/job_lifecycle.md1
-rw-r--r--plugins/boltdb/plugin.go24
-rw-r--r--plugins/ephemeral/plugin.go41
-rw-r--r--plugins/kv/plugin.go4
-rw-r--r--plugins/memcached/memcachedkv/config.go (renamed from plugins/memcached/config.go)2
-rw-r--r--plugins/memcached/memcachedkv/driver.go (renamed from plugins/memcached/driver.go)4
-rw-r--r--plugins/memcached/plugin.go3
-rw-r--r--plugins/memory/memoryjobs/consumer.go (renamed from plugins/ephemeral/consumer.go)2
-rw-r--r--plugins/memory/memoryjobs/item.go (renamed from plugins/ephemeral/item.go)2
-rw-r--r--plugins/memory/memorykv/config.go (renamed from plugins/memory/config.go)2
-rw-r--r--plugins/memory/memorykv/kv.go (renamed from plugins/memory/kv.go)66
-rw-r--r--plugins/memory/memorypubsub/pubsub.go (renamed from plugins/memory/pubsub.go)2
-rw-r--r--plugins/memory/plugin.go50
-rw-r--r--plugins/redis/clients.go84
-rw-r--r--plugins/redis/interface.go12
-rw-r--r--plugins/redis/kv/kv.go2
19 files changed, 96 insertions, 220 deletions
diff --git a/plugins/boltdb/boltjobs/consumer.go b/plugins/boltdb/boltjobs/consumer.go
index ed0eda61..46d596fa 100644
--- a/plugins/boltdb/boltjobs/consumer.go
+++ b/plugins/boltdb/boltjobs/consumer.go
@@ -222,7 +222,7 @@ func FromPipeline(pipeline *pipeline.Pipeline, log logger.Logger, cfg config.Con
return &consumer{
file: pipeline.String(file, rrDB),
priority: pipeline.Int(priority, 10),
- prefetch: pipeline.Int(prefetch, 100),
+ prefetch: pipeline.Int(prefetch, 1000),
permissions: conf.Permissions,
bPool: sync.Pool{New: func() interface{} {
diff --git a/plugins/boltdb/boltjobs/listener.go b/plugins/boltdb/boltjobs/listener.go
index 7c161555..081d3f57 100644
--- a/plugins/boltdb/boltjobs/listener.go
+++ b/plugins/boltdb/boltjobs/listener.go
@@ -3,6 +3,7 @@ package boltjobs
import (
"bytes"
"encoding/gob"
+ "sync/atomic"
"time"
"github.com/spiral/roadrunner/v2/utils"
@@ -18,6 +19,10 @@ func (c *consumer) listener() {
c.log.Info("boltdb listener stopped")
return
case <-tt.C:
+ if atomic.LoadUint64(c.active) > uint64(c.prefetch) {
+ time.Sleep(time.Second)
+ continue
+ }
tx, err := c.db.Begin(true)
if err != nil {
c.log.Error("failed to begin writable transaction, job will be read on the next attempt", "error", err)
diff --git a/plugins/boltdb/boltkv/driver.go b/plugins/boltdb/boltkv/driver.go
index ba1450cd..656d572e 100644
--- a/plugins/boltdb/boltkv/driver.go
+++ b/plugins/boltdb/boltkv/driver.go
@@ -38,7 +38,7 @@ type Driver struct {
stop chan struct{}
}
-func NewBoltDBDriver(log logger.Logger, key string, cfgPlugin config.Configurer, stop chan struct{}) (*Driver, error) {
+func NewBoltDBDriver(log logger.Logger, key string, cfgPlugin config.Configurer) (*Driver, error) {
const op = errors.Op("new_boltdb_driver")
if !cfgPlugin.Has(RootPluginName) {
@@ -47,7 +47,7 @@ func NewBoltDBDriver(log logger.Logger, key string, cfgPlugin config.Configurer,
d := &Driver{
log: log,
- stop: stop,
+ stop: make(chan struct{}),
}
err := cfgPlugin.UnmarshalKey(key, &d.cfg)
@@ -411,6 +411,10 @@ func (d *Driver) Clear() error {
return nil
}
+func (d *Driver) Stop() {
+ d.stop <- struct{}{}
+}
+
// ========================= PRIVATE =================================
func (d *Driver) startGCLoop() { //nolint:gocognit
diff --git a/plugins/boltdb/doc/job_lifecycle.md b/plugins/boltdb/doc/job_lifecycle.md
index 317aec90..1424e586 100644
--- a/plugins/boltdb/doc/job_lifecycle.md
+++ b/plugins/boltdb/doc/job_lifecycle.md
@@ -7,4 +7,3 @@ There are several boltdb buckets:
get into the `InQueueBucket` waiting to acknowledgement.
3. `DelayBucket` - used for delayed jobs. RFC3339 used as a timestamp to track delay expiration.
-``
diff --git a/plugins/boltdb/plugin.go b/plugins/boltdb/plugin.go
index 683b26f1..ad98cf3c 100644
--- a/plugins/boltdb/plugin.go
+++ b/plugins/boltdb/plugin.go
@@ -19,19 +19,14 @@ const (
// Plugin BoltDB K/V storage.
type Plugin struct {
- cfgPlugin config.Configurer
+ cfg config.Configurer
// logger
log logger.Logger
- // stop is used to stop keys GC and close boltdb connection
- stop chan struct{}
-
- drivers uint
}
func (p *Plugin) Init(log logger.Logger, cfg config.Configurer) error {
- p.stop = make(chan struct{})
p.log = log
- p.cfgPlugin = cfg
+ p.cfg = cfg
return nil
}
@@ -41,12 +36,6 @@ func (p *Plugin) Serve() chan error {
}
func (p *Plugin) Stop() error {
- if p.drivers > 0 {
- for i := uint(0); i < p.drivers; i++ {
- // send close signal to every driver
- p.stop <- struct{}{}
- }
- }
return nil
}
@@ -60,23 +49,20 @@ func (p *Plugin) Available() {}
func (p *Plugin) KVConstruct(key string) (kv.Storage, error) {
const op = errors.Op("boltdb_plugin_provide")
- st, err := boltkv.NewBoltDBDriver(p.log, key, p.cfgPlugin, p.stop)
+ st, err := boltkv.NewBoltDBDriver(p.log, key, p.cfg)
if err != nil {
return nil, errors.E(op, err)
}
- // save driver number to release resources after Stop
- p.drivers++
-
return st, nil
}
// JOBS bbolt implementation
func (p *Plugin) JobsConstruct(configKey string, e events.Handler, queue priorityqueue.Queue) (jobs.Consumer, error) {
- return boltjobs.NewBoltDBJobs(configKey, p.log, p.cfgPlugin, e, queue)
+ return boltjobs.NewBoltDBJobs(configKey, p.log, p.cfg, e, queue)
}
func (p *Plugin) FromPipeline(pipe *pipeline.Pipeline, e events.Handler, queue priorityqueue.Queue) (jobs.Consumer, error) {
- return boltjobs.FromPipeline(pipe, p.log, p.cfgPlugin, e, queue)
+ return boltjobs.FromPipeline(pipe, p.log, p.cfg, e, queue)
}
diff --git a/plugins/ephemeral/plugin.go b/plugins/ephemeral/plugin.go
deleted file mode 100644
index 28495abb..00000000
--- a/plugins/ephemeral/plugin.go
+++ /dev/null
@@ -1,41 +0,0 @@
-package ephemeral
-
-import (
- "github.com/spiral/roadrunner/v2/common/jobs"
- "github.com/spiral/roadrunner/v2/pkg/events"
- priorityqueue "github.com/spiral/roadrunner/v2/pkg/priority_queue"
- "github.com/spiral/roadrunner/v2/plugins/config"
- "github.com/spiral/roadrunner/v2/plugins/jobs/pipeline"
- "github.com/spiral/roadrunner/v2/plugins/logger"
-)
-
-const (
- PluginName string = "ephemeral"
-)
-
-type Plugin struct {
- log logger.Logger
- cfg config.Configurer
-}
-
-func (p *Plugin) Init(log logger.Logger, cfg config.Configurer) error {
- p.log = log
- p.cfg = cfg
- return nil
-}
-
-func (p *Plugin) Name() string {
- return PluginName
-}
-
-func (p *Plugin) Available() {}
-
-// JobsConstruct creates new ephemeral consumer from the configuration
-func (p *Plugin) JobsConstruct(configKey string, e events.Handler, pq priorityqueue.Queue) (jobs.Consumer, error) {
- return NewJobBroker(configKey, p.log, p.cfg, e, pq)
-}
-
-// FromPipeline creates new ephemeral consumer from the provided pipeline
-func (p *Plugin) FromPipeline(pipeline *pipeline.Pipeline, e events.Handler, pq priorityqueue.Queue) (jobs.Consumer, error) {
- return FromPipeline(pipeline, p.log, e, pq)
-}
diff --git a/plugins/kv/plugin.go b/plugins/kv/plugin.go
index c6ca96c3..a1144b85 100644
--- a/plugins/kv/plugin.go
+++ b/plugins/kv/plugin.go
@@ -104,6 +104,10 @@ func (p *Plugin) Serve() chan error {
}
func (p *Plugin) Stop() error {
+ // stop all attached storages
+ for k := range p.storages {
+ p.storages[k].Stop()
+ }
return nil
}
diff --git a/plugins/memcached/config.go b/plugins/memcached/memcachedkv/config.go
index 6d413790..569e2573 100644
--- a/plugins/memcached/config.go
+++ b/plugins/memcached/memcachedkv/config.go
@@ -1,4 +1,4 @@
-package memcached
+package memcachedkv
type Config struct {
// Addr is url for memcached, 11211 port is used by default
diff --git a/plugins/memcached/driver.go b/plugins/memcached/memcachedkv/driver.go
index e24747fe..6d5e1802 100644
--- a/plugins/memcached/driver.go
+++ b/plugins/memcached/memcachedkv/driver.go
@@ -1,4 +1,4 @@
-package memcached
+package memcachedkv
import (
"strings"
@@ -246,3 +246,5 @@ func (d *Driver) Clear() error {
return nil
}
+
+func (d *Driver) Stop() {}
diff --git a/plugins/memcached/plugin.go b/plugins/memcached/plugin.go
index 59a2b7cb..47bca0e2 100644
--- a/plugins/memcached/plugin.go
+++ b/plugins/memcached/plugin.go
@@ -5,6 +5,7 @@ import (
"github.com/spiral/roadrunner/v2/common/kv"
"github.com/spiral/roadrunner/v2/plugins/config"
"github.com/spiral/roadrunner/v2/plugins/logger"
+ "github.com/spiral/roadrunner/v2/plugins/memcached/memcachedkv"
)
const (
@@ -39,7 +40,7 @@ func (s *Plugin) Available() {}
func (s *Plugin) KVConstruct(key string) (kv.Storage, error) {
const op = errors.Op("boltdb_plugin_provide")
- st, err := NewMemcachedDriver(s.log, key, s.cfgPlugin)
+ st, err := memcachedkv.NewMemcachedDriver(s.log, key, s.cfgPlugin)
if err != nil {
return nil, errors.E(op, err)
}
diff --git a/plugins/ephemeral/consumer.go b/plugins/memory/memoryjobs/consumer.go
index 8870bb0f..94abaadb 100644
--- a/plugins/ephemeral/consumer.go
+++ b/plugins/memory/memoryjobs/consumer.go
@@ -1,4 +1,4 @@
-package ephemeral
+package memoryjobs
import (
"context"
diff --git a/plugins/ephemeral/item.go b/plugins/memory/memoryjobs/item.go
index 3298424d..8224c26b 100644
--- a/plugins/ephemeral/item.go
+++ b/plugins/memory/memoryjobs/item.go
@@ -1,4 +1,4 @@
-package ephemeral
+package memoryjobs
import (
"context"
diff --git a/plugins/memory/config.go b/plugins/memory/memorykv/config.go
index e51d09c5..a8a8993f 100644
--- a/plugins/memory/config.go
+++ b/plugins/memory/memorykv/config.go
@@ -1,4 +1,4 @@
-package memory
+package memorykv
// Config is default config for the in-memory driver
type Config struct {
diff --git a/plugins/memory/kv.go b/plugins/memory/memorykv/kv.go
index 68ea7266..9b3e176c 100644
--- a/plugins/memory/kv.go
+++ b/plugins/memory/memorykv/kv.go
@@ -1,4 +1,4 @@
-package memory
+package memorykv
import (
"strings"
@@ -20,11 +20,11 @@ type Driver struct {
cfg *Config
}
-func NewInMemoryDriver(log logger.Logger, key string, cfgPlugin config.Configurer, stop chan struct{}) (*Driver, error) {
+func NewInMemoryDriver(key string, log logger.Logger, cfgPlugin config.Configurer) (*Driver, error) {
const op = errors.Op("new_in_memory_driver")
d := &Driver{
- stop: stop,
+ stop: make(chan struct{}),
log: log,
}
@@ -40,7 +40,7 @@ func NewInMemoryDriver(log logger.Logger, key string, cfgPlugin config.Configure
return d, nil
}
-func (s *Driver) Has(keys ...string) (map[string]bool, error) {
+func (d *Driver) Has(keys ...string) (map[string]bool, error) {
const op = errors.Op("in_memory_plugin_has")
if keys == nil {
return nil, errors.E(op, errors.NoKeys)
@@ -52,7 +52,7 @@ func (s *Driver) Has(keys ...string) (map[string]bool, error) {
return nil, errors.E(op, errors.EmptyKey)
}
- if _, ok := s.heap.Load(keys[i]); ok {
+ if _, ok := d.heap.Load(keys[i]); ok {
m[keys[i]] = true
}
}
@@ -60,7 +60,7 @@ func (s *Driver) Has(keys ...string) (map[string]bool, error) {
return m, nil
}
-func (s *Driver) Get(key string) ([]byte, error) {
+func (d *Driver) Get(key string) ([]byte, error) {
const op = errors.Op("in_memory_plugin_get")
// to get cases like " "
keyTrimmed := strings.TrimSpace(key)
@@ -68,7 +68,7 @@ func (s *Driver) Get(key string) ([]byte, error) {
return nil, errors.E(op, errors.EmptyKey)
}
- if data, exist := s.heap.Load(key); exist {
+ if data, exist := d.heap.Load(key); exist {
// here might be a panic
// but data only could be a string, see Set function
return data.(*kvv1.Item).Value, nil
@@ -76,7 +76,7 @@ func (s *Driver) Get(key string) ([]byte, error) {
return nil, nil
}
-func (s *Driver) MGet(keys ...string) (map[string][]byte, error) {
+func (d *Driver) MGet(keys ...string) (map[string][]byte, error) {
const op = errors.Op("in_memory_plugin_mget")
if keys == nil {
return nil, errors.E(op, errors.NoKeys)
@@ -93,7 +93,7 @@ func (s *Driver) MGet(keys ...string) (map[string][]byte, error) {
m := make(map[string][]byte, len(keys))
for i := range keys {
- if value, ok := s.heap.Load(keys[i]); ok {
+ if value, ok := d.heap.Load(keys[i]); ok {
m[keys[i]] = value.(*kvv1.Item).Value
}
}
@@ -101,7 +101,7 @@ func (s *Driver) MGet(keys ...string) (map[string][]byte, error) {
return m, nil
}
-func (s *Driver) Set(items ...*kvv1.Item) error {
+func (d *Driver) Set(items ...*kvv1.Item) error {
const op = errors.Op("in_memory_plugin_set")
if items == nil {
return errors.E(op, errors.NoKeys)
@@ -120,14 +120,14 @@ func (s *Driver) Set(items ...*kvv1.Item) error {
}
}
- s.heap.Store(items[i].Key, items[i])
+ d.heap.Store(items[i].Key, items[i])
}
return nil
}
// MExpire sets the expiration time to the key
// If key already has the expiration time, it will be overwritten
-func (s *Driver) MExpire(items ...*kvv1.Item) error {
+func (d *Driver) MExpire(items ...*kvv1.Item) error {
const op = errors.Op("in_memory_plugin_mexpire")
for i := range items {
if items[i] == nil {
@@ -138,7 +138,7 @@ func (s *Driver) MExpire(items ...*kvv1.Item) error {
}
// if key exist, overwrite it value
- if pItem, ok := s.heap.LoadAndDelete(items[i].Key); ok {
+ if pItem, ok := d.heap.LoadAndDelete(items[i].Key); ok {
// check that time is correct
_, err := time.Parse(time.RFC3339, items[i].Timeout)
if err != nil {
@@ -148,7 +148,7 @@ func (s *Driver) MExpire(items ...*kvv1.Item) error {
// guess that t is in the future
// in memory is just FOR TESTING PURPOSES
// LOGIC ISN'T IDEAL
- s.heap.Store(items[i].Key, &kvv1.Item{
+ d.heap.Store(items[i].Key, &kvv1.Item{
Key: items[i].Key,
Value: tmp.Value,
Timeout: items[i].Timeout,
@@ -159,7 +159,7 @@ func (s *Driver) MExpire(items ...*kvv1.Item) error {
return nil
}
-func (s *Driver) TTL(keys ...string) (map[string]string, error) {
+func (d *Driver) TTL(keys ...string) (map[string]string, error) {
const op = errors.Op("in_memory_plugin_ttl")
if keys == nil {
return nil, errors.E(op, errors.NoKeys)
@@ -176,14 +176,14 @@ func (s *Driver) TTL(keys ...string) (map[string]string, error) {
m := make(map[string]string, len(keys))
for i := range keys {
- if item, ok := s.heap.Load(keys[i]); ok {
+ if item, ok := d.heap.Load(keys[i]); ok {
m[keys[i]] = item.(*kvv1.Item).Timeout
}
}
return m, nil
}
-func (s *Driver) Delete(keys ...string) error {
+func (d *Driver) Delete(keys ...string) error {
const op = errors.Op("in_memory_plugin_delete")
if keys == nil {
return errors.E(op, errors.NoKeys)
@@ -198,34 +198,38 @@ func (s *Driver) Delete(keys ...string) error {
}
for i := range keys {
- s.heap.Delete(keys[i])
+ d.heap.Delete(keys[i])
}
return nil
}
-func (s *Driver) Clear() error {
- s.clearMu.Lock()
- s.heap = sync.Map{}
- s.clearMu.Unlock()
+func (d *Driver) Clear() error {
+ d.clearMu.Lock()
+ d.heap = sync.Map{}
+ d.clearMu.Unlock()
return nil
}
+func (d *Driver) Stop() {
+ d.stop <- struct{}{}
+}
+
// ================================== PRIVATE ======================================
-func (s *Driver) gc() {
- ticker := time.NewTicker(time.Duration(s.cfg.Interval) * time.Second)
+func (d *Driver) gc() {
+ ticker := time.NewTicker(time.Duration(d.cfg.Interval) * time.Second)
+ defer ticker.Stop()
for {
select {
- case <-s.stop:
- ticker.Stop()
+ case <-d.stop:
return
case now := <-ticker.C:
// mutes needed to clear the map
- s.clearMu.RLock()
+ d.clearMu.RLock()
// check every second
- s.heap.Range(func(key, value interface{}) bool {
+ d.heap.Range(func(key, value interface{}) bool {
v := value.(*kvv1.Item)
if v.Timeout == "" {
return true
@@ -237,13 +241,13 @@ func (s *Driver) gc() {
}
if now.After(t) {
- s.log.Debug("key deleted", "key", key)
- s.heap.Delete(key)
+ d.log.Debug("key deleted", "key", key)
+ d.heap.Delete(key)
}
return true
})
- s.clearMu.RUnlock()
+ d.clearMu.RUnlock()
}
}
}
diff --git a/plugins/memory/pubsub.go b/plugins/memory/memorypubsub/pubsub.go
index fd30eb54..75122571 100644
--- a/plugins/memory/pubsub.go
+++ b/plugins/memory/memorypubsub/pubsub.go
@@ -1,4 +1,4 @@
-package memory
+package memorypubsub
import (
"context"
diff --git a/plugins/memory/plugin.go b/plugins/memory/plugin.go
index 7d418a70..515e469a 100644
--- a/plugins/memory/plugin.go
+++ b/plugins/memory/plugin.go
@@ -2,27 +2,29 @@ package memory
import (
"github.com/spiral/errors"
+ "github.com/spiral/roadrunner/v2/common/jobs"
"github.com/spiral/roadrunner/v2/common/kv"
"github.com/spiral/roadrunner/v2/common/pubsub"
+ "github.com/spiral/roadrunner/v2/pkg/events"
+ priorityqueue "github.com/spiral/roadrunner/v2/pkg/priority_queue"
"github.com/spiral/roadrunner/v2/plugins/config"
+ "github.com/spiral/roadrunner/v2/plugins/jobs/pipeline"
"github.com/spiral/roadrunner/v2/plugins/logger"
+ "github.com/spiral/roadrunner/v2/plugins/memory/memoryjobs"
+ "github.com/spiral/roadrunner/v2/plugins/memory/memorykv"
+ "github.com/spiral/roadrunner/v2/plugins/memory/memorypubsub"
)
const PluginName string = "memory"
type Plugin struct {
- // heap is user map for the key-value pairs
- stop chan struct{}
-
- log logger.Logger
- cfgPlugin config.Configurer
- drivers uint
+ log logger.Logger
+ cfg config.Configurer
}
func (p *Plugin) Init(log logger.Logger, cfg config.Configurer) error {
p.log = log
- p.cfgPlugin = cfg
- p.stop = make(chan struct{}, 1)
+ p.cfg = cfg
return nil
}
@@ -31,32 +33,36 @@ func (p *Plugin) Serve() chan error {
}
func (p *Plugin) Stop() error {
- if p.drivers > 0 {
- for i := uint(0); i < p.drivers; i++ {
- // send close signal to every driver
- p.stop <- struct{}{}
- }
- }
return nil
}
+func (p *Plugin) Name() string {
+ return PluginName
+}
+
+func (p *Plugin) Available() {}
+
+// Drivers implementation
+
func (p *Plugin) PSConstruct(key string) (pubsub.PubSub, error) {
- return NewPubSubDriver(p.log, key)
+ return memorypubsub.NewPubSubDriver(p.log, key)
}
func (p *Plugin) KVConstruct(key string) (kv.Storage, error) {
const op = errors.Op("inmemory_plugin_provide")
- st, err := NewInMemoryDriver(p.log, key, p.cfgPlugin, p.stop)
+ st, err := memorykv.NewInMemoryDriver(key, p.log, p.cfg)
if err != nil {
return nil, errors.E(op, err)
}
-
- // save driver number to release resources after Stop
- p.drivers++
-
return st, nil
}
-func (p *Plugin) Name() string {
- return PluginName
+// JobsConstruct creates new ephemeral consumer from the configuration
+func (p *Plugin) JobsConstruct(configKey string, e events.Handler, pq priorityqueue.Queue) (jobs.Consumer, error) {
+ return memoryjobs.NewJobBroker(configKey, p.log, p.cfg, e, pq)
+}
+
+// FromPipeline creates new ephemeral consumer from the provided pipeline
+func (p *Plugin) FromPipeline(pipeline *pipeline.Pipeline, e events.Handler, pq priorityqueue.Queue) (jobs.Consumer, error) {
+ return memoryjobs.FromPipeline(pipeline, p.log, e, pq)
}
diff --git a/plugins/redis/clients.go b/plugins/redis/clients.go
deleted file mode 100644
index d0a184d2..00000000
--- a/plugins/redis/clients.go
+++ /dev/null
@@ -1,84 +0,0 @@
-package redis
-
-import (
- "github.com/go-redis/redis/v8"
- "github.com/spiral/errors"
-)
-
-// RedisClient return a client based on the provided section key
-// key sample: kv.some-section.redis
-// kv.redis
-// redis (root)
-func (p *Plugin) RedisClient(key string) (redis.UniversalClient, error) {
- const op = errors.Op("redis_get_client")
-
- if !p.cfgPlugin.Has(key) {
- return nil, errors.E(op, errors.Errorf("no such section: %s", key))
- }
-
- cfg := &Config{}
-
- err := p.cfgPlugin.UnmarshalKey(key, cfg)
- if err != nil {
- return nil, errors.E(op, err)
- }
-
- cfg.InitDefaults()
-
- uc := redis.NewUniversalClient(&redis.UniversalOptions{
- Addrs: cfg.Addrs,
- DB: cfg.DB,
- Username: cfg.Username,
- Password: cfg.Password,
- SentinelPassword: cfg.SentinelPassword,
- MaxRetries: cfg.MaxRetries,
- MinRetryBackoff: cfg.MaxRetryBackoff,
- MaxRetryBackoff: cfg.MaxRetryBackoff,
- DialTimeout: cfg.DialTimeout,
- ReadTimeout: cfg.ReadTimeout,
- WriteTimeout: cfg.WriteTimeout,
- PoolSize: cfg.PoolSize,
- MinIdleConns: cfg.MinIdleConns,
- MaxConnAge: cfg.MaxConnAge,
- PoolTimeout: cfg.PoolTimeout,
- IdleTimeout: cfg.IdleTimeout,
- IdleCheckFrequency: cfg.IdleCheckFreq,
- ReadOnly: cfg.ReadOnly,
- RouteByLatency: cfg.RouteByLatency,
- RouteRandomly: cfg.RouteRandomly,
- MasterName: cfg.MasterName,
- })
-
- return uc, nil
-}
-
-func (p *Plugin) DefaultClient() redis.UniversalClient {
- cfg := &Config{}
- cfg.InitDefaults()
-
- uc := redis.NewUniversalClient(&redis.UniversalOptions{
- Addrs: cfg.Addrs,
- DB: cfg.DB,
- Username: cfg.Username,
- Password: cfg.Password,
- SentinelPassword: cfg.SentinelPassword,
- MaxRetries: cfg.MaxRetries,
- MinRetryBackoff: cfg.MaxRetryBackoff,
- MaxRetryBackoff: cfg.MaxRetryBackoff,
- DialTimeout: cfg.DialTimeout,
- ReadTimeout: cfg.ReadTimeout,
- WriteTimeout: cfg.WriteTimeout,
- PoolSize: cfg.PoolSize,
- MinIdleConns: cfg.MinIdleConns,
- MaxConnAge: cfg.MaxConnAge,
- PoolTimeout: cfg.PoolTimeout,
- IdleTimeout: cfg.IdleTimeout,
- IdleCheckFrequency: cfg.IdleCheckFreq,
- ReadOnly: cfg.ReadOnly,
- RouteByLatency: cfg.RouteByLatency,
- RouteRandomly: cfg.RouteRandomly,
- MasterName: cfg.MasterName,
- })
-
- return uc
-}
diff --git a/plugins/redis/interface.go b/plugins/redis/interface.go
deleted file mode 100644
index 189b0002..00000000
--- a/plugins/redis/interface.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package redis
-
-import "github.com/go-redis/redis/v8"
-
-// Redis in the redis KV plugin interface
-type Redis interface {
- // RedisClient provides universal redis client
- RedisClient(key string) (redis.UniversalClient, error)
-
- // DefaultClient provide default redis client based on redis defaults
- DefaultClient() redis.UniversalClient
-}
diff --git a/plugins/redis/kv/kv.go b/plugins/redis/kv/kv.go
index b41cb86c..3d062fbb 100644
--- a/plugins/redis/kv/kv.go
+++ b/plugins/redis/kv/kv.go
@@ -248,3 +248,5 @@ func (d *Driver) Clear() error {
return nil
}
+
+func (d *Driver) Stop() {}