aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server.Implementations/Item/KeyframeRepository.cs
diff options
context:
space:
mode:
authorevan314159 <110177090+evan314159@users.noreply.github.com>2025-09-16 17:14:52 +0800
committerGitHub <noreply@github.com>2025-09-16 11:14:52 +0200
commit2618a5fba23432c89882bf343f481f4248ae7ab3 (patch)
tree43b1e2a543fa1777c728d97e0e735414738cac06 /Jellyfin.Server.Implementations/Item/KeyframeRepository.cs
parent2ee887a5021d9be00948366a9d7c9dc42ca0e2a4 (diff)
Fix sync disposal of async-created IAsyncDisposable objects (#14755)
Diffstat (limited to 'Jellyfin.Server.Implementations/Item/KeyframeRepository.cs')
-rw-r--r--Jellyfin.Server.Implementations/Item/KeyframeRepository.cs13
1 files changed, 8 insertions, 5 deletions
diff --git a/Jellyfin.Server.Implementations/Item/KeyframeRepository.cs b/Jellyfin.Server.Implementations/Item/KeyframeRepository.cs
index 93c6f472e..438458c6b 100644
--- a/Jellyfin.Server.Implementations/Item/KeyframeRepository.cs
+++ b/Jellyfin.Server.Implementations/Item/KeyframeRepository.cs
@@ -55,11 +55,14 @@ public class KeyframeRepository : IKeyframeRepository
public async Task SaveKeyframeDataAsync(Guid itemId, MediaEncoding.Keyframes.KeyframeData data, CancellationToken cancellationToken)
{
using var context = _dbProvider.CreateDbContext();
- using var transaction = await context.Database.BeginTransactionAsync(cancellationToken).ConfigureAwait(false);
- await context.KeyframeData.Where(e => e.ItemId.Equals(itemId)).ExecuteDeleteAsync(cancellationToken).ConfigureAwait(false);
- await context.KeyframeData.AddAsync(Map(data, itemId), cancellationToken).ConfigureAwait(false);
- await context.SaveChangesAsync(cancellationToken).ConfigureAwait(false);
- await transaction.CommitAsync(cancellationToken).ConfigureAwait(false);
+ var transaction = await context.Database.BeginTransactionAsync(cancellationToken).ConfigureAwait(false);
+ await using (transaction.ConfigureAwait(false))
+ {
+ await context.KeyframeData.Where(e => e.ItemId.Equals(itemId)).ExecuteDeleteAsync(cancellationToken).ConfigureAwait(false);
+ await context.KeyframeData.AddAsync(Map(data, itemId), cancellationToken).ConfigureAwait(false);
+ await context.SaveChangesAsync(cancellationToken).ConfigureAwait(false);
+ await transaction.CommitAsync(cancellationToken).ConfigureAwait(false);
+ }
}
/// <inheritdoc />