Skip to content

Commit

Permalink
Fix #1115 (#1116)
Browse files Browse the repository at this point in the history
  • Loading branch information
ramondeklein committed Jun 27, 2024
1 parent ed0d5d0 commit 2e46392
Showing 1 changed file with 34 additions and 3 deletions.
37 changes: 34 additions & 3 deletions Minio/ApiEndpoints/CompatibilityExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,27 @@ public static class CompatibilityExtensions
// Used for backwards compatibility
[Obsolete("Use the ListObjectsEnumAsync instead")]
public static IObservable<Item> ListObjectsAsync(this IBucketOperations self, ListObjectsArgs args)
{
return self.InternalListObjectsAsync(args, CancellationToken.None);
}

// Used for backwards compatibility (with added warning)
[Obsolete("Use the ListObjectsEnumAsync instead (also don't mix cancellation tokens and observables)")]
public static IObservable<Item> ListObjectsAsync(this IBucketOperations self, ListObjectsArgs args,
CancellationToken cancellationToken)
{
return self.InternalListObjectsAsync(args, cancellationToken);
}

private static IObservable<Item> InternalListObjectsAsync(this IBucketOperations self, ListObjectsArgs args,
CancellationToken cancellationToken)
{
return Observable.Create<Item>(async (obs, ct) =>
{
try
{
await foreach (var item in self.ListObjectsEnumAsync(args, ct).ConfigureAwait(false))
using var ctEffective = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, ct);
await foreach (var item in self.ListObjectsEnumAsync(args, ctEffective.Token).ConfigureAwait(false))
obs.OnNext(item);
obs.OnCompleted();
}
Expand All @@ -26,14 +41,30 @@ await foreach (var item in self.ListObjectsEnumAsync(args, ct).ConfigureAwait(fa
}

// Used for backwards compatibility
[Obsolete("Use the ListIncompleteUploadsEnumAsync instead")]
[Obsolete("Use the ListObjectsEnumAsync instead")]
public static IObservable<Upload> ListIncompleteUploads(this IObjectOperations self, ListIncompleteUploadsArgs args)
{
return self.InternalListIncompleteUploads(args, CancellationToken.None);
}

// Used for backwards compatibility (with added warning)
[Obsolete("Use the ListIncompleteUploads instead (also don't mix cancellation tokens and observables)")]
public static IObservable<Upload> ListIncompleteUploads(this IObjectOperations self, ListIncompleteUploadsArgs args,
CancellationToken cancellationToken)
{
return self.InternalListIncompleteUploads(args, cancellationToken);
}

private static IObservable<Upload> InternalListIncompleteUploads(this IObjectOperations self,
ListIncompleteUploadsArgs args, CancellationToken cancellationToken = default)
{
return Observable.Create<Upload>(async (obs, ct) =>
{
try
{
await foreach (var item in self.ListIncompleteUploadsEnumAsync(args, ct).ConfigureAwait(false))
using var ctEffective = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, ct);
await foreach (var item in self.ListIncompleteUploadsEnumAsync(args, ctEffective.Token)
.ConfigureAwait(false))
obs.OnNext(item);
obs.OnCompleted();
}
Expand Down

0 comments on commit 2e46392

Please sign in to comment.