From 2b35511f9cee19523a32b69ce93135f48a39df2f Mon Sep 17 00:00:00 2001 From: "Pohsiang (John) Hsu" Date: Fri, 7 Jul 2023 11:20:23 -0700 Subject: [PATCH] asset migrate throws exception and quits if the container for the asset doesn't exist. mark as failed instead --- ams/AssetMigrator.cs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/ams/AssetMigrator.cs b/ams/AssetMigrator.cs index 60e8d2c..af091a9 100644 --- a/ams/AssetMigrator.cs +++ b/ams/AssetMigrator.cs @@ -137,26 +137,36 @@ public async Task MigrateAsync( MediaAssetResource asset, CancellationToken cancellationToken) { + AssetMigrationResult result = new AssetMigrationResult(MigrationStatus.NotMigrated); _logger.LogInformation("Migrating asset: {name} (container {container}) ...", asset.Data.Name, asset.Data.Container); - var container = storage.GetContainer(asset); - // Get the inital migration status from the container level's metadata list. - var result = await _tracker.GetMigrationStatusAsync(container, cancellationToken); - - if (_options.SkipMigrated) + try { - if (result.Status == MigrationStatus.Completed) - { - _logger.LogDebug("Asset: {name} has already been migrated.", asset.Data.Name); + var container = storage.GetContainer(asset); - result.Status = MigrationStatus.AlreadyMigrated; + if (!await container.ExistsAsync(cancellationToken)) + { + _logger.LogWarning("Container {name} missing for asset {asset}", container.Name, asset.Data.Name); + result.Status = MigrationStatus.Failed; _logger.LogDebug("Migrated asset: {asset}, container: {container}, type: {type}, status: {status}", asset.Data.Name, asset.Data.Container, result.AssetType, result.Status); return result; } - } - try - { + // Get the initial migration status from the container level's metadata list. + result = await _tracker.GetMigrationStatusAsync(container, cancellationToken); + + if (_options.SkipMigrated) + { + if (result.Status == MigrationStatus.Completed) + { + _logger.LogDebug("Asset: {name} has already been migrated.", asset.Data.Name); + + result.Status = MigrationStatus.AlreadyMigrated; + _logger.LogDebug("Migrated asset: {asset}, container: {container}, type: {type}, status: {status}", asset.Data.Name, asset.Data.Container, result.AssetType, result.Status); + return result; + } + } + if (asset.Data.StorageEncryptionFormat != MediaAssetStorageEncryptionFormat.None) { _logger.LogWarning("Asset {name} is encrypted using {format}", asset.Data.Name, asset.Data.StorageEncryptionFormat);