Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix exception handling for parsing errors #1760

Merged
merged 1 commit into from
Aug 4, 2021

Conversation

MinnDevelopment
Copy link
Member

Pull Request Etiquette

Changes

  • Internal code
  • Library interface (affecting end-user code)
  • Documentation
  • Other: _____

Closes Issue: NaN

Description

This prevents bots from crashing when using complete() if the internal response parsing fails. The Response constructor was trying to re-read the body of the response because we pass in the same (already closed) response when handling exceptions thrown by RestActionImpl#handleResponse.

The stacktrace looks like this:

[15:46:09] [ERROR] Requester: There was an unexpected error while executing a REST request
java.lang.IllegalArgumentException: UNKNOWN_MESSAGE_TYPE
    at net.dv8tion.jda.internal.entities.EntityBuilder.createMessage(EntityBuilder.java:1234)
    at net.dv8tion.jda.api.entities.MessageChannel.lambda$retrieveMessageById$0(MessageChannel.java:896)
    at net.dv8tion.jda.internal.requests.RestActionImpl.handleSuccess(RestActionImpl.java:278)
    at net.dv8tion.jda.internal.requests.RestActionImpl.handleResponse(RestActionImpl.java:268)
    at net.dv8tion.jda.api.requests.Request.handleResponse(Request.java:259)
    at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:238)
    at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:142)
    at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:125)
    at net.dv8tion.jda.internal.requests.ratelimit.BotRateLimiter$Bucket.run(BotRateLimiter.java:478)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
[15:46:09] [ERROR] RateLimiter: Encountered exception trying to execute request
java.lang.IllegalStateException: An error occurred while parsing the response for a RestAction
    at net.dv8tion.jda.api.requests.Response.<init>(Response.java:76)
    at net.dv8tion.jda.api.requests.Response.<init>(Response.java:52)
    at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:261)
    at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:142)
    at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:125)
    at net.dv8tion.jda.internal.requests.ratelimit.BotRateLimiter$Bucket.run(BotRateLimiter.java:478)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.IOException: closed
    at okio.RealBufferedSource$1.read(RealBufferedSource.java:443)
    at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:252)
    at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:271)
    at java.base/java.util.zip.CheckedInputStream.read(CheckedInputStream.java:60)
    at java.base/java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:267)
    at java.base/java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:259)
    at java.base/java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:165)
    at java.base/java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:80)
    at java.base/java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:92)
    at net.dv8tion.jda.internal.utils.IOUtil.getBody(IOUtil.java:243)
    at net.dv8tion.jda.api.requests.Response...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant