Попытка исправления загрузки локального блоба

This commit is contained in:
2025-10-30 02:10:01 +03:00
parent 99764eb91f
commit 6845219e94

14
api.go
View File

@@ -487,6 +487,13 @@ func (ag *Agate) RegisterLocalSnapshot(ctx context.Context, snapshotID, parentID
} }
// 2. Add the file to the blob store // 2. Add the file to the blob store
// Check if blob already exists. If so, we assume it's the correct one and skip overwriting.
// This is to prevent issues when registering a file that is already in the blob store.
_, err = ag.options.BlobStore.GetBlobPath(ctx, snapshotID)
if err == nil {
ag.options.Logger.Printf("blob for snapshot %s already exists, skipping storing it", snapshotID)
} else if errors.Is(err, models.ErrNotFound) {
// Blob does not exist, so we store it.
localFile, err := os.Open(localPath) localFile, err := os.Open(localPath)
if err != nil { if err != nil {
return fmt.Errorf("failed to open local snapshot file: %w", err) return fmt.Errorf("failed to open local snapshot file: %w", err)
@@ -497,10 +504,13 @@ func (ag *Agate) RegisterLocalSnapshot(ctx context.Context, snapshotID, parentID
} }
}() }()
_, err = ag.options.BlobStore.StoreBlob(ctx, snapshotID, localFile) if _, err = ag.options.BlobStore.StoreBlob(ctx, snapshotID, localFile); err != nil {
if err != nil {
return fmt.Errorf("failed to store blob from local file: %w", err) return fmt.Errorf("failed to store blob from local file: %w", err)
} }
} else {
// Another error occurred when checking for the blob.
return fmt.Errorf("failed to check for existing blob: %w", err)
}
// 3. Create and save snapshot metadata // 3. Create and save snapshot metadata
// We get the file list from the archive to create the metadata. // We get the file list from the archive to create the metadata.