| @@ -46,12 +46,12 @@ namespace Discord.Rest | |||||
| _restLogger = LogManager.CreateLogger("Rest"); | _restLogger = LogManager.CreateLogger("Rest"); | ||||
| _isFirstLogin = config.DisplayInitialLog; | _isFirstLogin = config.DisplayInitialLog; | ||||
| ApiClient.RequestQueue.RateLimitTriggered += async (id, info) => | |||||
| ApiClient.RequestQueue.RateLimitTriggered += async (id, info, endpoint) => | |||||
| { | { | ||||
| if (info == null) | if (info == null) | ||||
| await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); | |||||
| await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); | |||||
| else | else | ||||
| await _restLogger.WarningAsync($"Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); | |||||
| await _restLogger.WarningAsync($"Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); | |||||
| }; | }; | ||||
| ApiClient.SentRequest += async (method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); | ApiClient.SentRequest += async (method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); | ||||
| } | } | ||||
| @@ -12,7 +12,7 @@ namespace Discord.Net.Queue | |||||
| { | { | ||||
| internal class RequestQueue : IDisposable | internal class RequestQueue : IDisposable | ||||
| { | { | ||||
| public event Func<BucketId, RateLimitInfo?, Task> RateLimitTriggered; | |||||
| public event Func<BucketId, RateLimitInfo?, string, Task> RateLimitTriggered; | |||||
| private readonly ConcurrentDictionary<BucketId, object> _buckets; | private readonly ConcurrentDictionary<BucketId, object> _buckets; | ||||
| private readonly SemaphoreSlim _tokenLock; | private readonly SemaphoreSlim _tokenLock; | ||||
| @@ -121,9 +121,9 @@ namespace Discord.Net.Queue | |||||
| } | } | ||||
| return (RequestBucket)obj; | return (RequestBucket)obj; | ||||
| } | } | ||||
| internal async Task RaiseRateLimitTriggered(BucketId bucketId, RateLimitInfo? info) | |||||
| internal async Task RaiseRateLimitTriggered(BucketId bucketId, RateLimitInfo? info, string endpoint) | |||||
| { | { | ||||
| await RateLimitTriggered(bucketId, info).ConfigureAwait(false); | |||||
| await RateLimitTriggered(bucketId, info, endpoint).ConfigureAwait(false); | |||||
| } | } | ||||
| internal (RequestBucket, BucketId) UpdateBucketHash(BucketId id, string discordHash) | internal (RequestBucket, BucketId) UpdateBucketHash(BucketId id, string discordHash) | ||||
| { | { | ||||
| @@ -84,7 +84,7 @@ namespace Discord.Net.Queue | |||||
| #endif | #endif | ||||
| UpdateRateLimit(id, request, info, true); | UpdateRateLimit(id, request, info, true); | ||||
| } | } | ||||
| await _queue.RaiseRateLimitTriggered(Id, info).ConfigureAwait(false); | |||||
| await _queue.RaiseRateLimitTriggered(Id, info, $"{request.Method} {request.Endpoint}").ConfigureAwait(false); | |||||
| continue; //Retry | continue; //Retry | ||||
| case HttpStatusCode.BadGateway: //502 | case HttpStatusCode.BadGateway: //502 | ||||
| #if DEBUG_LIMITS | #if DEBUG_LIMITS | ||||
| @@ -187,7 +187,7 @@ namespace Discord.Net.Queue | |||||
| if (!isRateLimited) | if (!isRateLimited) | ||||
| { | { | ||||
| isRateLimited = true; | isRateLimited = true; | ||||
| await _queue.RaiseRateLimitTriggered(Id, null).ConfigureAwait(false); | |||||
| await _queue.RaiseRateLimitTriggered(Id, null, $"{request.Method} {request.Endpoint}").ConfigureAwait(false); | |||||
| } | } | ||||
| ThrowRetryLimit(request); | ThrowRetryLimit(request); | ||||
| @@ -74,12 +74,12 @@ namespace Discord.Webhook | |||||
| _restLogger = LogManager.CreateLogger("Rest"); | _restLogger = LogManager.CreateLogger("Rest"); | ||||
| ApiClient.RequestQueue.RateLimitTriggered += async (id, info) => | |||||
| ApiClient.RequestQueue.RateLimitTriggered += async (id, info, endpoint) => | |||||
| { | { | ||||
| if (info == null) | if (info == null) | ||||
| await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); | |||||
| await _restLogger.VerboseAsync($"Preemptive Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); | |||||
| else | else | ||||
| await _restLogger.WarningAsync($"Rate limit triggered: {id?.ToString() ?? "null"}").ConfigureAwait(false); | |||||
| await _restLogger.WarningAsync($"Rate limit triggered: {endpoint} {(id.IsHashBucket ? $"(Bucket: {id.BucketHash})" : "")}").ConfigureAwait(false); | |||||
| }; | }; | ||||
| ApiClient.SentRequest += async (method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); | ApiClient.SentRequest += async (method, endpoint, millis) => await _restLogger.VerboseAsync($"{method} {endpoint}: {millis} ms").ConfigureAwait(false); | ||||
| } | } | ||||