Delete temporal folders and some changes

This commit is contained in:
2026-03-24 20:52:44 +01:00
parent 0355bd22a6
commit 10a66c70c8
12 changed files with 87 additions and 14 deletions
-4
View File
@@ -40,12 +40,8 @@
<ItemGroup>
<Folder Include="MassTransit\Activities\Audio\" />
<Folder Include="MassTransit\Activities\Pictures\" />
<Folder Include="MassTransit\Arguments\" />
<Folder Include="MassTransit\Logs\" />
<Folder Include="MassTransit\RoutingSlip\" />
<Folder Include="MassTransit\RoutingSlip\Builders\" />
<Folder Include="MassTransit\RoutingSlip\Variables\" />
<Folder Include="MassTransit\Consumers\" />
<Folder Include="MassTransit\Filters\" />
<Folder Include="MassTransit\EventBus\" />
<Folder Include="MassTransit\DependencyInjection\" />
@@ -45,7 +45,7 @@ namespace Musify.Infrastructure.Messaging.Activities
await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken);
return executeContext.CompletedWithVariables(new Dictionary<string, object>
{
[RoutingSlipVariableNames.Workflow.TempDirectory] = workingDirectory,
[RoutingSlipVariableNames.Workflow.TemporalDirectory] = workingDirectory,
[RoutingSlipVariableNames.Audio.WorkingDirectory] = workingDirectory,
[RoutingSlipVariableNames.Audio.SourceFilePath] = sourceFilePath,
[RoutingSlipVariableNames.Audio.TranscodedDirectory] = workingDirectory
@@ -46,7 +46,7 @@ namespace Musify.Infrastructure.Messaging.Activities
try
{
var uploadedKeys = Directory.GetFiles(folderPath)
.Select(file => $"{destinationKeyName}/{Path.GetFileName(file)}")
.Select(file => $"{destinationKeyName}/{Path.GetFileName(file) }")
.ToArray();
var transferFilesResult = await storageHandler.TransferFilesAsync(
@@ -56,7 +56,7 @@ namespace Musify.Infrastructure.Messaging.Activities
await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken);
return executeContext.CompletedWithVariables(new Dictionary<string, object>
{
[RoutingSlipVariableNames.Workflow.TempDirectory] = workingDirectory,
[RoutingSlipVariableNames.Workflow.TemporalDirectory] = workingDirectory,
[RoutingSlipVariableNames.Picture.OriginalFilePath] = sourceFilePath,
[RoutingSlipVariableNames.Picture.SmallResizedFilePath] = smallPictureFilePath,
[RoutingSlipVariableNames.Picture.MediumResizedFilePath] = mediumPictureFilePath,
@@ -5,5 +5,7 @@ namespace Musify.Infrastructure.Messaging.Consumers
internal static Uri BuildExecuteActivityUri(string endpointName) => new($"queue:{endpointName}_execute");
internal static Uri BuildCompensateActivityUri(string endpointName) => new($"queue:{endpointName}_compensate");
internal static Uri BuildConsumerUri(string endpointName) => new($"queue:{endpointName}");
}
}
@@ -6,7 +6,7 @@ namespace Musify.Infrastructure.Messaging.Consumers
{
public class RemoveFileConsumer(
IBus bus,
RemoveFileRoutingSlipBuilder routingSlipBuilder)
RemoveFileFromBucketRoutingSlipBuilder routingSlipBuilder)
: IConsumer<RemoveFileEvent>
{
public const string QueueName = "Remove-File";
@@ -0,0 +1,49 @@
using MassTransit;
using MassTransit.Courier.Contracts;
using Microsoft.Extensions.Logging;
using Musify.Infrastructure.Messaging;
namespace Musify.Infrastructure.MassTransit.Consumers
{
public class RoutingSlipCleanUpConsumer(
ILogger<RoutingSlipCleanUpConsumer> logger) :
IConsumer<RoutingSlipCompleted>,
IConsumer<RoutingSlipFaulted>
{
public const string QueueName = "routing-slip-events";
public Task Consume(ConsumeContext<RoutingSlipCompleted> consumeContext)
=> DeleteFolder(consumeContext.Message.Variables);
public Task Consume(ConsumeContext<RoutingSlipFaulted> consumeContext)
=> DeleteFolder(consumeContext.Message.Variables);
Task DeleteFolder(IDictionary<string, object> variables)
{
if (!variables.TryGetValue(RoutingSlipVariableNames.Workflow.TemporalDirectory, out var pathObject))
return Task.CompletedTask;
var pathString = pathObject.ToString();
if (string.IsNullOrEmpty(pathString))
return Task.CompletedTask;
try
{
Directory.Delete(pathString, recursive: true);
logger.LogInformation("Deleted temporal directory at path {Path}", pathString);
}
catch (DirectoryNotFoundException directoryNotFoundException)
{
logger.LogWarning(directoryNotFoundException, "Temporal directory at path {Path} was not found for deletion", pathString);
}
catch (Exception exception)
{
logger.LogError(exception, "Failed to delete temporal directory at path {Path}", pathString);
throw;
}
return Task.CompletedTask;
}
}
}
@@ -1,6 +1,7 @@
using MassTransit;
using Microsoft.Extensions.DependencyInjection;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.MassTransit.Consumers;
using Musify.Infrastructure.Messaging.Activities;
using Musify.Infrastructure.Messaging.Activities.Arguments;
using Musify.Infrastructure.Messaging.Activities.Logs;
@@ -29,7 +30,7 @@ namespace Musify.Infrastructure.Messaging
{
serviceDescriptors.AddScoped<AudioWorkflowRoutingSlipBuilder>();
serviceDescriptors.AddScoped<PictureWorkflowRoutingSlipBuilder>();
serviceDescriptors.AddScoped<RemoveFileRoutingSlipBuilder>();
serviceDescriptors.AddScoped<RemoveFileFromBucketRoutingSlipBuilder>();
serviceDescriptors.AddMassTransit(options =>
{
@@ -37,6 +38,7 @@ namespace Musify.Infrastructure.Messaging
options.AddConsumer<RemoveFileConsumer>();
options.AddConsumer<TranscodeAudioFromTrackConsumer>();
options.AddConsumer<UpdateTrackPictureConsumer>();
options.AddConsumer<RoutingSlipCleanUpConsumer>();
options.AddExecuteActivity<RemoveFileFromBucketActivity, RemoveFileFromBucketArguments>();
options.AddExecuteActivity<GenerateAudioWorkflowPathsActivity, GenerateAudioWorkflowPathsArguments>();
@@ -77,6 +79,11 @@ namespace Musify.Infrastructure.Messaging
endpointConfigurator.ConfigureConsumer<UpdateTrackPictureConsumer>(busRegistrationContext);
} );
busFactoryConfigurator.ReceiveEndpoint(RoutingSlipCleanUpConsumer.QueueName, endpointConfigurator =>
{
endpointConfigurator.ConfigureConsumer<RoutingSlipCleanUpConsumer>(busRegistrationContext);
} );
ConfigureExecuteActivityEndpoint<RemoveFileFromBucketActivity, RemoveFileFromBucketArguments>(
busFactoryConfigurator,
busRegistrationContext,
@@ -1,6 +1,8 @@
using MassTransit;
using MassTransit.Courier.Contracts;
using Musify.Application.Events;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.MassTransit.Consumers;
using Musify.Infrastructure.Messaging.Activities;
using Musify.Infrastructure.Messaging.Activities.Arguments;
using Musify.Infrastructure.Messaging.Consumers;
@@ -15,6 +17,10 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders
routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty);
routingSlipBuilder.AddSubscription(
MessagingHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
routingSlipBuilder.AddActivity(
ActivityNames.GenerateAudioWorkflowPaths,
MessagingHelper.BuildExecuteActivityUri(GenerateAudioWorkflowPathsActivity.ExecuteEndpointName),
@@ -35,7 +41,7 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders
MessagingHelper.BuildExecuteActivityUri(TranscodeDashAudioActivity.ExecuteEndpointName),
new TranscodeDashAudioArguments(
RoutingSlipVariableNames.Audio.SourceFilePath,
RoutingSlipVariableNames.Workflow.TempDirectory));
RoutingSlipVariableNames.Workflow.TemporalDirectory));
routingSlipBuilder.AddActivity(
ActivityNames.UploadFiles,
@@ -1,6 +1,8 @@
using MassTransit;
using MassTransit.Courier.Contracts;
using Musify.Application.Events;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.MassTransit.Consumers;
using Musify.Infrastructure.Messaging.Activities;
using Musify.Infrastructure.Messaging.Activities.Arguments;
using Musify.Infrastructure.Messaging.Consumers;
@@ -25,6 +27,10 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders
message.LargePictureHeight,
correlationId);
routingSlipBuilder.AddSubscription(
MessagingHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
routingSlipBuilder.AddActivity(
ActivityNames.UpdateTrackPicture,
MessagingHelper.BuildExecuteActivityUri(UpdateTrackPictureActivity.ExecuteEndpointName),
@@ -134,7 +140,7 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders
MessagingHelper.BuildExecuteActivityUri(TransferFilesToBucketActivity.ExecuteEndpointName),
new TransferFilesToBucketArguments(
sourceBucketName,
RoutingSlipVariableNames.Workflow.TempDirectory,
RoutingSlipVariableNames.Workflow.TemporalDirectory,
DestinationKeyNameVariableName: RoutingSlipVariableNames.Picture.DestinationFolderName));
return routingSlipBuilder;
@@ -1,11 +1,14 @@
using MassTransit;
using MassTransit.Courier.Contracts;
using Musify.Application.Events;
using Musify.Infrastructure.MassTransit.Consumers;
using Musify.Infrastructure.Messaging.Activities;
using Musify.Infrastructure.Messaging.Activities.Arguments;
using Musify.Infrastructure.Messaging.Consumers;
namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders
{
public class RemoveFileRoutingSlipBuilder
public class RemoveFileFromBucketRoutingSlipBuilder
{
public RoutingSlipBuilder Build(RemoveFileEvent message, Guid? correlationId)
{
@@ -13,10 +16,14 @@ namespace Musify.Infrastructure.Messaging.RoutingSlip.Builders
routingSlipBuilder.AddVariable(RoutingSlipVariableNames.Workflow.CorrelationId, correlationId ?? Guid.Empty);
routingSlipBuilder.AddSubscription(
MessagingHelper.BuildConsumerUri(RoutingSlipCleanUpConsumer.QueueName),
RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
routingSlipBuilder.AddActivity(
ActivityNames.RemoveFile,
MessagingHelper.BuildExecuteActivityUri(RemoveFileFromBucketActivity.ExecuteEndpointName),
new Activities.Arguments.RemoveFileFromBucketArguments(
new RemoveFileFromBucketArguments(
message.BucketName,
message.KeyName));
@@ -4,7 +4,7 @@ namespace Musify.Infrastructure.Messaging
{
internal static class Workflow
{
internal const string TempDirectory = "Workflow.TempDirectory";
internal const string TemporalDirectory = "Workflow.TemporalDirectory";
internal const string CorrelationId = "Workflow.CorrelationId";
}