From 213d495a3d0a9567b8d4dcf2f6e7f457fe362176 Mon Sep 17 00:00:00 2001 From: rainzm Date: Thu, 22 Oct 2020 19:35:19 +0800 Subject: [PATCH] fix: don't update NextSyncTime when snapshots that should be added has not --- pkg/compute/models/disks.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index 7eb87551f5..23d1f66c5e 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -2458,6 +2458,12 @@ func (self *SDisk) UpdataSnapshotsBackingDisk(backingDiskId string) error { func (manager *SDiskManager) AutoSyncExtDiskSnapshot(ctx context.Context, userCred mcclient.TokenCredential, isStart bool) { now := time.Now() + week := now.Weekday() + if week == 0 { + week += 7 + } + timePoint := now.Hour() + q := SnapshotPolicyDiskManager.Query().LE("next_sync_time", now) spds := make([]SSnapshotPolicyDisk, 0) err := db.FetchModelObjects(SnapshotPolicyDiskManager, q, &spds) @@ -2487,7 +2493,11 @@ func (manager *SDiskManager) AutoSyncExtDiskSnapshot(ctx context.Context, userCr db.OpsLog.LogEvent(disk, db.ACT_DISK_AUTO_SYNC_SNAPSHOT_FAIL, syncResult.Result(), userCred) continue } - if syncResult.AddCnt == 0 { + sp := spMap[spd.GetId()] + repeatWeekdays := SnapshotPolicyManager.RepeatWeekdaysToIntArray(sp.RepeatWeekdays) + timePoints := SnapshotPolicyManager.TimePointsToIntArray(sp.TimePoints) + if isInInts(int(week), repeatWeekdays) && isInInts(timePoint, timePoints) && syncResult.AddCnt == 0 { + // should add one continue } db.OpsLog.LogEvent(disk, db.ACT_DISK_AUTO_SYNC_SNAPSHOT, "disk auto sync snapshot successfully", userCred) @@ -2501,6 +2511,15 @@ func (manager *SDiskManager) AutoSyncExtDiskSnapshot(ctx context.Context, userCr } } +func isInInts(a int, array []int) bool { + for _, i := range array { + if i == a { + return true + } + } + return false +} + func (self *SDisk) syncSnapshots(ctx context.Context, userCred mcclient.TokenCredential) compare.SyncResult { syncResult := compare.SyncResult{}