From a1b40fe1f2ca9f5e71921d4f83a9f50b69aa7e79 Mon Sep 17 00:00:00 2001 From: weloe <1345895607@qq.com> Date: Sun, 15 Oct 2023 22:51:49 +0800 Subject: [PATCH] refactor: DefaultAdapter add timer enable --- enforcer.go | 5 ++++- log/default_logger.go | 2 +- persist/default_adapter.go | 20 +++++++++++++++----- persist/default_adapter_test.go | 5 ++--- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/enforcer.go b/enforcer.go index 29ead8f..421ccbb 100644 --- a/enforcer.go +++ b/enforcer.go @@ -101,9 +101,12 @@ func InitWithConfig(tokenConfig *config.TokenConfig, adapter persist.Adapter) (* func (e *Enforcer) startCleanTimer() { defaultAdapter, ok := e.adapter.(*persist.DefaultAdapter) if ok { + if !defaultAdapter.GetCleanTimer() { + return + } dataRefreshPeriod := e.config.DataRefreshPeriod if period := dataRefreshPeriod; period >= 0 { - err := defaultAdapter.EnableCleanTimer(dataRefreshPeriod) + err := defaultAdapter.StartCleanTimer(dataRefreshPeriod) if err != nil { log2.Printf("enble adapter cleanTimer failed: %v", err) return diff --git a/log/default_logger.go b/log/default_logger.go index 5eb77da..8b22f28 100644 --- a/log/default_logger.go +++ b/log/default_logger.go @@ -12,7 +12,7 @@ type DefaultLogger struct { } func (d *DefaultLogger) StartCleanTimer(period int64) { - log.Printf("timer period = %v, timer start", period) + log.Printf("timer period = %v, adapter data clean timer start", period) } func (d *DefaultLogger) Enable(bool bool) { diff --git a/persist/default_adapter.go b/persist/default_adapter.go index fa185da..b9e5cae 100644 --- a/persist/default_adapter.go +++ b/persist/default_adapter.go @@ -11,15 +11,17 @@ import ( ) type DefaultAdapter struct { - cache cache.Cache - serializer Serializer + cache cache.Cache + serializer Serializer + enableRefreshTimer bool } var _ Adapter = (*DefaultAdapter)(nil) func NewDefaultAdapter() *DefaultAdapter { return &DefaultAdapter{ - cache: cache.NewDefaultLocalCache(), + cache: cache.NewDefaultLocalCache(), + enableRefreshTimer: true, } } @@ -133,10 +135,18 @@ func (d *DefaultAdapter) DeleteBatchFilteredKey(keyPrefix string) error { return err } -func (d *DefaultAdapter) EnableCleanTimer(period int64) error { +func (d *DefaultAdapter) EnableCleanTimer(b bool) { + d.enableRefreshTimer = b +} + +func (d *DefaultAdapter) GetCleanTimer() bool { + return d.enableRefreshTimer +} + +func (d *DefaultAdapter) StartCleanTimer(period int64) error { cacheEx, ok := d.cache.(cache.CacheEx) if !ok { - return errors.New("the cache does not implement the EnableCleanTimer method") + return errors.New("the Cache does not implement the StartCleanTimer method") } cacheEx.EnableCleanTimer(period) return nil diff --git a/persist/default_adapter_test.go b/persist/default_adapter_test.go index 77c7728..71129e0 100644 --- a/persist/default_adapter_test.go +++ b/persist/default_adapter_test.go @@ -181,9 +181,9 @@ func TestDefaultAdapter_InterfaceOperation(t *testing.T) { func TestDefaultAdapter_DeleteBatchFilteredValue(t *testing.T) { adapter := NewTestDefaultAdapter() - err := adapter.(*DefaultAdapter).EnableCleanTimer(2) + err := adapter.(*DefaultAdapter).StartCleanTimer(2) if err != nil { - t.Fatalf("EnableCleanTimer() failed: %v", err) + t.Fatalf("StartCleanTimer() failed: %v", err) } if err = adapter.SetStr("k_1", "v", -1); err != nil { t.Errorf("SetStr() failed: %v", err) @@ -202,5 +202,4 @@ func TestDefaultAdapter_DeleteBatchFilteredValue(t *testing.T) { if str != "" { t.Errorf("DeleteBatchFilteredKey() failed") } - time.Sleep(5 * time.Second) }