From 67355c85bd1ed62fff11ceeb91c81aef101f8248 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 23 Jun 2023 17:45:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E9=80=80=E5=87=BA=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E6=97=B6=E5=85=B3=E9=97=AD=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E5=86=99=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/caches/list_file_db.go | 4 ++++ internal/caches/manager.go | 2 +- internal/events/utils.go | 5 +++++ internal/iplibrary/ip_list_db.go | 2 +- internal/iplibrary/manager_ip_list.go | 2 +- internal/metrics/manager.go | 2 +- internal/nodes/task_ocsp_update.go | 3 +-- internal/nodes/task_sync_api_nodes.go | 2 +- internal/stats/bandwidth_stat_manager.go | 2 +- internal/utils/agents/db.go | 2 +- internal/utils/dbs/batch.go | 7 +++++++ internal/utils/free_hours_manager.go | 2 +- 12 files changed, 25 insertions(+), 10 deletions(-) diff --git a/internal/caches/list_file_db.go b/internal/caches/list_file_db.go index 9392bff..14cb444 100644 --- a/internal/caches/list_file_db.go +++ b/internal/caches/list_file_db.go @@ -504,6 +504,10 @@ func (this *FileListDB) CleanAll() error { } func (this *FileListDB) Close() error { + if this.isClosed { + return nil + } + this.isClosed = true this.isReady = false diff --git a/internal/caches/manager.go b/internal/caches/manager.go index 34d15c7..ee27295 100644 --- a/internal/caches/manager.go +++ b/internal/caches/manager.go @@ -19,7 +19,7 @@ func init() { return } - events.On(events.EventQuit, func() { + events.OnClose(func() { remotelogs.Println("CACHE", "quiting cache manager") SharedManager.UpdatePolicies([]*serverconfigs.HTTPCachePolicy{}) }) diff --git a/internal/events/utils.go b/internal/events/utils.go index e0256a2..2b4129d 100644 --- a/internal/events/utils.go +++ b/internal/events/utils.go @@ -24,6 +24,11 @@ func On(event Event, callback func()) { OnKey(event, nil, callback) } +func OnClose(callback func()) { + On(EventQuit, callback) + On(EventTerminated, callback) +} + // OnKey 使用Key增加事件回调 func OnKey(event Event, key interface{}, callback func()) { if key == nil { diff --git a/internal/iplibrary/ip_list_db.go b/internal/iplibrary/ip_list_db.go index 30d486f..55f5529 100644 --- a/internal/iplibrary/ip_list_db.go +++ b/internal/iplibrary/ip_list_db.go @@ -161,7 +161,7 @@ ON "` + this.itemTableName + `" ( this.db = db goman.New(func() { - events.On(events.EventQuit, func() { + events.OnClose(func() { _ = this.Close() this.cleanTicker.Stop() }) diff --git a/internal/iplibrary/manager_ip_list.go b/internal/iplibrary/manager_ip_list.go index 4f7c3c6..78f5ded 100644 --- a/internal/iplibrary/manager_ip_list.go +++ b/internal/iplibrary/manager_ip_list.go @@ -29,7 +29,7 @@ func init() { SharedIPListManager.Start() }) }) - events.On(events.EventQuit, func() { + events.OnClose(func() { SharedIPListManager.Stop() }) diff --git a/internal/metrics/manager.go b/internal/metrics/manager.go index e2b6685..0202634 100644 --- a/internal/metrics/manager.go +++ b/internal/metrics/manager.go @@ -18,7 +18,7 @@ func init() { return } - events.On(events.EventQuit, func() { + events.OnClose(func() { SharedManager.Quit() }) } diff --git a/internal/nodes/task_ocsp_update.go b/internal/nodes/task_ocsp_update.go index 787e5d1..ae4b734 100644 --- a/internal/nodes/task_ocsp_update.go +++ b/internal/nodes/task_ocsp_update.go @@ -27,10 +27,9 @@ func init() { sharedOCSPTask.Start() }) }) - events.On(events.EventQuit, func() { + events.OnClose(func() { sharedOCSPTask.Stop() }) - } // OCSPUpdateTask 更新OCSP任务 diff --git a/internal/nodes/task_sync_api_nodes.go b/internal/nodes/task_sync_api_nodes.go index ff4f5b4..f7f085c 100644 --- a/internal/nodes/task_sync_api_nodes.go +++ b/internal/nodes/task_sync_api_nodes.go @@ -26,7 +26,7 @@ func init() { sharedSyncAPINodesTask.Start() }) }) - events.On(events.EventQuit, func() { + events.OnClose(func() { sharedSyncAPINodesTask.Stop() }) } diff --git a/internal/stats/bandwidth_stat_manager.go b/internal/stats/bandwidth_stat_manager.go index b78531f..ddd0047 100644 --- a/internal/stats/bandwidth_stat_manager.go +++ b/internal/stats/bandwidth_stat_manager.go @@ -36,7 +36,7 @@ func init() { }) }) - events.On(events.EventQuit, func() { + events.OnClose(func() { SharedBandwidthStatManager.Cancel() err := SharedBandwidthStatManager.Save() diff --git a/internal/utils/agents/db.go b/internal/utils/agents/db.go index 46624b3..55a34d7 100644 --- a/internal/utils/agents/db.go +++ b/internal/utils/agents/db.go @@ -30,7 +30,7 @@ type DB struct { func NewDB(path string) *DB { var db = &DB{path: path} - events.On(events.EventQuit, func() { + events.OnClose(func() { _ = db.Close() }) diff --git a/internal/utils/dbs/batch.go b/internal/utils/dbs/batch.go index 9cecabd..1a264a3 100644 --- a/internal/utils/dbs/batch.go +++ b/internal/utils/dbs/batch.go @@ -45,6 +45,9 @@ func (this *Batch) OnFail(callback func(err error)) { } func (this *Batch) Add(query string, args ...any) { + if this.isClosed { + return + } this.queue <- &batchItem{ query: query, args: args, @@ -139,6 +142,10 @@ func (this *Batch) beginTx() *sql.Tx { } func (this *Batch) execItem(tx *sql.Tx, item *batchItem) error { + if this.isClosed { + return nil + } + if this.enableStat { defer SharedQueryStatManager.AddQuery(item.query).End() } diff --git a/internal/utils/free_hours_manager.go b/internal/utils/free_hours_manager.go index 55da006..693372a 100644 --- a/internal/utils/free_hours_manager.go +++ b/internal/utils/free_hours_manager.go @@ -24,7 +24,7 @@ func init() { SharedFreeHoursManager.Start() }) }) - events.On(events.EventQuit, func() { + events.OnClose(func() { SharedFreeHoursManager.Stop() }) }