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

cf: PrematureCloseException incorrectly reported as API key forbidden or rate limit #484

Open
itzg opened this issue Oct 19, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@itzg
Copy link
Owner

itzg commented Oct 19, 2024

Discussed in Discord

curseforge-mc-1  | [mc-image-helper] 10:53:25.508 WARN  : [f5d13d46-1, L:/172.23.0.2:52200 ! R:api.curseforge.com/54.230.228.118:443] The connection observed an error
curseforge-mc-1  | reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response
curseforge-mc-1  | [mc-image-helper] 10:53:25.520 ERROR : Invalid parameter provided for 'install-curseforge' command: Access to https://api.curseforge.com is forbidden or rate-limit has been exceeded. Ensure CF_API_KEY is set to a valid API key from https://console.curseforge.com/ or allow rate-limit to reset.

Same user then reported this type of failure, which seems to be a 403 not caught correctly:

curseforge-mc-1  | [mc-image-helper] 18:16:19.057 ERROR : Operator called default onErrorDropped
curseforge-mc-1  | me.itzg.helpers.http.FailedRequestException: HTTP request of https://api.curseforge.com/v1/mods/351441/files/4613538 failed with 403 Forbidden: Fetching object content
curseforge-mc-1  |      at me.itzg.helpers.http.FetchBuilderBase.lambda$failedRequestMono$2(FetchBuilderBase.java:220)
curseforge-mc-1  |      Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
curseforge-mc-1  | Assembly trace from producer [reactor.core.publisher.MonoMap] :
curseforge-mc-1  |      reactor.core.publisher.Mono.checkpoint(Mono.java:2190)
curseforge-mc-1  |      me.itzg.helpers.curseforge.CurseForgeApiClient.getModFileInfo(CurseForgeApiClient.java:223)
curseforge-mc-1  | Error has been observed at the following site(s):
curseforge-mc-1  |      *__checkpoint() ⇢ at me.itzg.helpers.curseforge.CurseForgeApiClient.getModFileInfo(CurseForgeApiClient.java:223)
curseforge-mc-1  |      *____checkpoint ⇢ Downloading file from modpack 351441:4613538
curseforge-mc-1  |      |_ checkpoint() ⇢ at me.itzg.helpers.curseforge.CurseForgeInstaller.lambda$processModpack$15(CurseForgeInstaller.java:602)
curseforge-mc-1  | Original Stack Trace:
curseforge-mc-1  |              at me.itzg.helpers.http.FetchBuilderBase.lambda$failedRequestMono$2(FetchBuilderBase.java:220)
curseforge-mc-1  |              at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132)
curseforge-mc-1  |              at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2071)
curseforge-mc-1  |              at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:134)
curseforge-mc-1  |              at reactor.core.publisher.FluxHandle$HandleSubscriber.onComplete(FluxHandle.java:223)
curseforge-mc-1  |              at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onComplete(FluxMap.java:275)
curseforge-mc-1  |              at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128)
curseforge-mc-1  |              at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:211)
curseforge-mc-1  |              at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
curseforge-mc-1  |              at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2071)
curseforge-mc-1  |              at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118)
curseforge-mc-1  |              at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)
curseforge-mc-1  |              at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
curseforge-mc-1  |              at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415)
curseforge-mc-1  |              at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:445)
curseforge-mc-1  |              at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:499)
curseforge-mc-1  |              at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:800)
curseforge-mc-1  |              at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:115)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
curseforge-mc-1  |              at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
curseforge-mc-1  |              at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
curseforge-mc-1  |              at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
curseforge-mc-1  |              at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
curseforge-mc-1  |              at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
curseforge-mc-1  |              at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1473)
curseforge-mc-1  |              at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1336)
curseforge-mc-1  |              at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1385)
curseforge-mc-1  |              at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
curseforge-mc-1  |              at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
curseforge-mc-1  |              at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
curseforge-mc-1  |              at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
curseforge-mc-1  |              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
curseforge-mc-1  |              at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
curseforge-mc-1  |              at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
curseforge-mc-1  |              at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
curseforge-mc-1  |              at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
curseforge-mc-1  |              at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
curseforge-mc-1  |              at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
curseforge-mc-1  |              at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)
curseforge-mc-1  |              at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
curseforge-mc-1  |              at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
curseforge-mc-1  |              at java.base/java.lang.Thread.run(Unknown Source)
curseforge-mc-1  | [mc-image-helper] 18:16:19.069 ERROR : Invalid parameter provided for 'install-curseforge' command: Access to https://api.curseforge.com is forbidden or rate-limit has been exceeded. Ensure CF_API_KEY is set to a valid API key from https://console.curseforge.com/ or allow rate-limit to reset.
@itzg itzg added the bug Something isn't working label Oct 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: To do
Development

No branches or pull requests

1 participant