mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 16:06:15 +00:00
Fixed exception being thrown when waiting was canceled during rate limiting
This commit is contained in:
parent
42003a0247
commit
b1cd9b5412
@ -370,5 +370,20 @@ namespace CryptoExchange.Net.UnitTests
|
|||||||
var result2 = await rateLimiter.ProcessAsync(new TraceLogger(), 1, RateLimitItemType.Connection, new RequestDefinition("1", HttpMethod.Get), host2, "123", 1, RateLimitingBehaviour.Wait, default);
|
var result2 = await rateLimiter.ProcessAsync(new TraceLogger(), 1, RateLimitItemType.Connection, new RequestDefinition("1", HttpMethod.Get), host2, "123", 1, RateLimitingBehaviour.Wait, default);
|
||||||
Assert.That(expectLimited ? evnt != null : evnt == null);
|
Assert.That(expectLimited ? evnt != null : evnt == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task ConnectionRateLimiterCancel()
|
||||||
|
{
|
||||||
|
var rateLimiter = new RateLimitGate("Test");
|
||||||
|
rateLimiter.AddGuard(new RateLimitGuard(RateLimitGuard.PerHost, new LimitItemTypeFilter(RateLimitItemType.Connection), 1, TimeSpan.FromSeconds(10), RateLimitWindowType.Fixed));
|
||||||
|
|
||||||
|
RateLimitEvent evnt = null;
|
||||||
|
rateLimiter.RateLimitTriggered += (x) => { evnt = x; };
|
||||||
|
var ct = new CancellationTokenSource(TimeSpan.FromSeconds(0.2));
|
||||||
|
|
||||||
|
var result1 = await rateLimiter.ProcessAsync(new TraceLogger(), 1, RateLimitItemType.Connection, new RequestDefinition("1", HttpMethod.Get), "https://test.com", "123", 1, RateLimitingBehaviour.Wait, ct.Token);
|
||||||
|
var result2 = await rateLimiter.ProcessAsync(new TraceLogger(), 1, RateLimitItemType.Connection, new RequestDefinition("1", HttpMethod.Get), "https://test.com", "123", 1, RateLimitingBehaviour.Wait, ct.Token);
|
||||||
|
Assert.That(result2.Error, Is.TypeOf<CancellationRequestedError>());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,9 @@ namespace CryptoExchange.Net.RateLimiting
|
|||||||
}
|
}
|
||||||
catch (TaskCanceledException)
|
catch (TaskCanceledException)
|
||||||
{
|
{
|
||||||
// The semaphore has alraedy been released if the task was cancelled
|
// The semaphore has already been released if the task was cancelled
|
||||||
release = false;
|
release = false;
|
||||||
throw;
|
return new CallResult(new CancellationRequestedError());
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -80,9 +80,9 @@ namespace CryptoExchange.Net.RateLimiting
|
|||||||
}
|
}
|
||||||
catch (TaskCanceledException)
|
catch (TaskCanceledException)
|
||||||
{
|
{
|
||||||
// The semaphore has alraedy been released if the task was cancelled
|
// The semaphore has already been released if the task was cancelled
|
||||||
release = false;
|
release = false;
|
||||||
throw;
|
return new CallResult(new CancellationRequestedError());
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user