Skip to content

Commit ff550a2

Browse files
committed
React to rate limiting API changes
1 parent 0a0ff04 commit ff550a2

10 files changed

+22
-20
lines changed

src/Middleware/ConcurrencyLimiter/src/QueuePolicies/BasePolicy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public ValueTask<bool> TryEnterAsync()
4747
return ValueTask.FromResult(true);
4848
}
4949

50-
var task = _limiter.WaitAsync();
50+
var task = _limiter.WaitAndAcquireAsync();
5151
if (task.IsCompletedSuccessfully)
5252
{
5353
lease = task.Result;

src/Middleware/RateLimiting/samples/RateLimitingSample/Program.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
// The global limiter will be a concurrency limiter with a max permit count of 10 and a queue depth of 5.
3131
options.GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(context =>
3232
{
33-
return RateLimitPartition.CreateConcurrencyLimiter<string>("globalLimiter", key => new ConcurrencyLimiterOptions(10, QueueProcessingOrder.NewestFirst, 5));
33+
34+
return RateLimitPartition.GetConcurrencyLimiter<string>("globalLimiter", key => new ConcurrencyLimiterOptions(10, QueueProcessingOrder.NewestFirst, 5));
3435
});
3536
app.UseRateLimiter(options);
3637

src/Middleware/RateLimiting/samples/RateLimitingSample/SampleRateLimiterPolicy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ public SampleRateLimiterPolicy(ILogger<SampleRateLimiterPolicy> logger)
2525
// Use a sliding window limiter allowing 1 request every 10 seconds
2626
public RateLimitPartition<string> GetPartition(HttpContext httpContext)
2727
{
28-
return RateLimitPartition.CreateSlidingWindowLimiter<string>(string.Empty, key => new SlidingWindowRateLimiterOptions(1, QueueProcessingOrder.OldestFirst, 1, TimeSpan.FromSeconds(5), 1));
28+
return RateLimitPartition.GetSlidingWindowLimiter<string>(string.Empty, key => new SlidingWindowRateLimiterOptions(1, QueueProcessingOrder.OldestFirst, 1, TimeSpan.FromSeconds(5), 1));
2929
}
3030
}

src/Middleware/RateLimiting/src/RateLimiterOptionsExtensions.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public static RateLimiterOptions AddTokenBucketLimiter(this RateLimiterOptions o
2222
var key = new PolicyNameKey() { PolicyName = policyName };
2323
return options.AddPolicy(policyName, context =>
2424
{
25-
return RateLimitPartition.CreateTokenBucketLimiter(key,
25+
return RateLimitPartition.GetTokenBucketLimiter(key,
2626
_ => tokenBucketRateLimiterOptions);
2727
});
2828
}
@@ -39,7 +39,7 @@ public static RateLimiterOptions AddFixedWindowLimiter(this RateLimiterOptions o
3939
var key = new PolicyNameKey() { PolicyName = policyName };
4040
return options.AddPolicy(policyName, context =>
4141
{
42-
return RateLimitPartition.CreateFixedWindowLimiter(key,
42+
return RateLimitPartition.GetFixedWindowLimiter(key,
4343
_ => fixedWindowRateLimiterOptions);
4444
});
4545
}
@@ -56,7 +56,7 @@ public static RateLimiterOptions AddSlidingWindowLimiter(this RateLimiterOptions
5656
var key = new PolicyNameKey() { PolicyName = policyName };
5757
return options.AddPolicy(policyName, context =>
5858
{
59-
return RateLimitPartition.CreateSlidingWindowLimiter(key,
59+
return RateLimitPartition.GetSlidingWindowLimiter(key,
6060
_ => slidingWindowRateLimiterOptions);
6161
});
6262
}
@@ -73,7 +73,7 @@ public static RateLimiterOptions AddConcurrencyLimiter(this RateLimiterOptions o
7373
var key = new PolicyNameKey() { PolicyName = policyName };
7474
return options.AddPolicy(policyName, context =>
7575
{
76-
return RateLimitPartition.CreateConcurrencyLimiter(key,
76+
return RateLimitPartition.GetConcurrencyLimiter(key,
7777
_ => concurrencyLimiterOptions);
7878
});
7979
}
@@ -89,7 +89,7 @@ public static RateLimiterOptions AddNoLimiter(this RateLimiterOptions options, s
8989
var key = new PolicyNameKey() { PolicyName = policyName };
9090
return options.AddPolicy(policyName, context =>
9191
{
92-
return RateLimitPartition.CreateNoLimiter(key);
92+
return RateLimitPartition.GetNoLimiter(key);
9393
});
9494
}
9595
}

src/Middleware/RateLimiting/src/RateLimitingMiddleware.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ private async ValueTask<LeaseContext> CombinedWaitAsync(HttpContext context, Can
142142
{
143143
if (_globalLimiter is not null)
144144
{
145-
globalLease = await _globalLimiter.WaitAsync(context, cancellationToken: cancellationToken);
145+
globalLease = await _globalLimiter.WaitAndAcquireAsync(context, cancellationToken: cancellationToken);
146146
if (!globalLease.IsAcquired)
147147
{
148148
return new LeaseContext() { GlobalRejected = true, Lease = globalLease };
149149
}
150150
}
151-
endpointLease = await _endpointLimiter.WaitAsync(context, cancellationToken: cancellationToken);
151+
endpointLease = await _endpointLimiter.WaitAndAcquireAsync(context, cancellationToken: cancellationToken);
152152
if (!endpointLease.IsAcquired)
153153
{
154154
globalLease?.Dispose();
@@ -183,7 +183,7 @@ private PartitionedRateLimiter<HttpContext> CreateEndpointLimiter()
183183
throw new InvalidOperationException($"This endpoint requires a rate limiting policy with name {name}, but no such policy exists.");
184184
}
185185
}
186-
return RateLimitPartition.CreateNoLimiter<DefaultKeyType>(_defaultPolicyKey);
186+
return RateLimitPartition.GetNoLimiter<DefaultKeyType>(_defaultPolicyKey);
187187
}, new DefaultKeyTypeEqualityComparer());
188188
}
189189

src/Middleware/RateLimiting/test/RateLimitingMiddlewareTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public async Task EndpointLimiter_Rejects()
160160
var name = "myEndpoint";
161161
options.Value.AddPolicy<string>(name, (context =>
162162
{
163-
return RateLimitPartition.Create<string>("myLimiter", (key =>
163+
return RateLimitPartition.Get<string>("myLimiter", (key =>
164164
{
165165
return new TestRateLimiter(false);
166166
}));

src/Middleware/RateLimiting/test/RateLimitingOptionsTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class RateLimitingOptionsTests
1313
public void AddPolicy_ThrowsOnNullPolicyName()
1414
{
1515
var options = new RateLimiterOptions();
16-
Assert.Throws<ArgumentNullException>(() => options.AddPolicy<string>(null, context => RateLimitPartition.CreateNoLimiter<string>("myKey")));
16+
Assert.Throws<ArgumentNullException>(() => options.AddPolicy<string>(null, context => RateLimitPartition.GetNoLimiter<string>("myKey")));
1717
}
1818

1919
[Fact]
@@ -34,15 +34,15 @@ public void AddPolicy_ThrowsOnNullPolicy()
3434
public void AddPolicy_ThrowsOnDuplicateName()
3535
{
3636
var options = new RateLimiterOptions();
37-
options.AddPolicy<string>("myKey", context => RateLimitPartition.CreateNoLimiter<string>("myKey"));
38-
Assert.Throws<ArgumentException>(() => options.AddPolicy<string>("myKey", context => RateLimitPartition.CreateNoLimiter<string>("yourKey")));
37+
options.AddPolicy<string>("myKey", context => RateLimitPartition.GetNoLimiter<string>("myKey"));
38+
Assert.Throws<ArgumentException>(() => options.AddPolicy<string>("myKey", context => RateLimitPartition.GetNoLimiter<string>("yourKey")));
3939
}
4040

4141
[Fact]
4242
public void AddPolicy_Generic_ThrowsOnDuplicateName()
4343
{
4444
var options = new RateLimiterOptions();
45-
options.AddPolicy<string>("myKey", context => RateLimitPartition.CreateNoLimiter<string>("myKey"));
45+
options.AddPolicy<string>("myKey", context => RateLimitPartition.GetNoLimiter<string>("myKey"));
4646
Assert.Throws<ArgumentException>(() => options.AddPolicy<string, TestRateLimiterPolicy>("myKey"));
4747
}
4848
}

src/Middleware/RateLimiting/test/TestPartitionedRateLimiter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ protected override RateLimitLease AcquireCore(TResource resourceID, int permitCo
5757
return new TestRateLimitLease(true, leases);
5858
}
5959

60-
protected override async ValueTask<RateLimitLease> WaitAsyncCore(TResource resourceID, int permitCount, CancellationToken cancellationToken)
60+
protected override async ValueTask<RateLimitLease> WaitAndAcquireAsyncCore(TResource resourceID, int permitCount, CancellationToken cancellationToken)
6161
{
6262
if (permitCount != 1)
6363
{
@@ -66,7 +66,7 @@ protected override async ValueTask<RateLimitLease> WaitAsyncCore(TResource resou
6666
var leases = new List<RateLimitLease>();
6767
foreach (var limiter in limiters)
6868
{
69-
leases.Add(await limiter.WaitAsync());
69+
leases.Add(await limiter.WaitAndAcquireAsync());
7070
}
7171
foreach (var lease in leases)
7272
{

src/Middleware/RateLimiting/test/TestRateLimiter.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Threading.RateLimiting;
55

66
namespace Microsoft.AspNetCore.RateLimiting;
7+
78
internal class TestRateLimiter : RateLimiter
89
{
910
private readonly bool _alwaysAccept;
@@ -25,7 +26,7 @@ protected override RateLimitLease AcquireCore(int permitCount)
2526
return new TestRateLimitLease(_alwaysAccept, null);
2627
}
2728

28-
protected override ValueTask<RateLimitLease> WaitAsyncCore(int permitCount, CancellationToken cancellationToken)
29+
protected override ValueTask<RateLimitLease> WaitAndAcquireAsyncCore(int permitCount, CancellationToken cancellationToken)
2930
{
3031
cancellationToken.ThrowIfCancellationRequested();
3132
return new ValueTask<RateLimitLease>(new TestRateLimitLease(_alwaysAccept, null));

src/Middleware/RateLimiting/test/TestRateLimiterPolicy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public TestRateLimiterPolicy(string key, int statusCode, bool alwaysAccept)
2727

2828
public RateLimitPartition<string> GetPartition(HttpContext httpContext)
2929
{
30-
return RateLimitPartition.Create<string>(_key, (key =>
30+
return RateLimitPartition.Get<string>(_key, (key =>
3131
{
3232
return new TestRateLimiter(_alwaysAccept);
3333
}));

0 commit comments

Comments
 (0)