@@ -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); | ||||
} | } | ||||