mirror of
https://github.com/databasus/databasus.git
synced 2026-04-06 00:32:03 +02:00
FIX (backups): Save metadata file to storage before marking backup as COMPLETED to fix flaky test race condition
This commit is contained in:
@@ -280,7 +280,6 @@ func (n *BackuperNode) MakeBackup(backupID uuid.UUID, isCallNotifier bool) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
backup.Status = backups_core.BackupStatusCompleted
|
|
||||||
backup.BackupDurationMs = time.Since(start).Milliseconds()
|
backup.BackupDurationMs = time.Since(start).Milliseconds()
|
||||||
|
|
||||||
// Update backup with encryption metadata if provided
|
// Update backup with encryption metadata if provided
|
||||||
@@ -297,12 +296,6 @@ func (n *BackuperNode) MakeBackup(backupID uuid.UUID, isCallNotifier bool) {
|
|||||||
backup.Encryption = backupMetadata.Encryption
|
backup.Encryption = backupMetadata.Encryption
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := n.backupRepository.Save(backup); err != nil {
|
|
||||||
n.logger.Error("Failed to save backup", "error", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save metadata file to storage
|
|
||||||
if backupMetadata != nil {
|
if backupMetadata != nil {
|
||||||
metadataJSON, err := json.Marshal(backupMetadata)
|
metadataJSON, err := json.Marshal(backupMetadata)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -335,6 +328,13 @@ func (n *BackuperNode) MakeBackup(backupID uuid.UUID, isCallNotifier bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
backup.Status = backups_core.BackupStatusCompleted
|
||||||
|
|
||||||
|
if err := n.backupRepository.Save(backup); err != nil {
|
||||||
|
n.logger.Error("Failed to save backup", "error", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Update database last backup time
|
// Update database last backup time
|
||||||
now := time.Now().UTC()
|
now := time.Now().UTC()
|
||||||
if updateErr := n.databaseService.SetLastBackupTime(databaseID, now); updateErr != nil {
|
if updateErr := n.databaseService.SetLastBackupTime(databaseID, now); updateErr != nil {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"databasus-backend/internal/config"
|
"databasus-backend/internal/config"
|
||||||
audit_logs "databasus-backend/internal/features/audit_logs"
|
audit_logs "databasus-backend/internal/features/audit_logs"
|
||||||
@@ -1516,14 +1517,14 @@ func Test_MakeBackup_VerifyBackupAndMetadataFilesExistInStorage(t *testing.T) {
|
|||||||
encryptor := encryption.GetFieldEncryptor()
|
encryptor := encryption.GetFieldEncryptor()
|
||||||
|
|
||||||
backupFile, err := backupStorage.GetFile(encryptor, backup.FileName)
|
backupFile, err := backupStorage.GetFile(encryptor, backup.FileName)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
backupFile.Close()
|
backupFile.Close()
|
||||||
|
|
||||||
metadataFile, err := backupStorage.GetFile(encryptor, backup.FileName+".metadata")
|
metadataFile, err := backupStorage.GetFile(encryptor, backup.FileName+".metadata")
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
metadataContent, err := io.ReadAll(metadataFile)
|
metadataContent, err := io.ReadAll(metadataFile)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
metadataFile.Close()
|
metadataFile.Close()
|
||||||
|
|
||||||
var storageMetadata backups_common.BackupMetadata
|
var storageMetadata backups_common.BackupMetadata
|
||||||
|
|||||||
Reference in New Issue
Block a user