docker-minecraft-server icon indicating copy to clipboard operation
docker-minecraft-server copied to clipboard

Error installing Fabric launcher

Open 5kr411 opened this issue 8 months ago • 8 comments

Describe the problem

When trying to start a container (on the latest image at time of writing), I get the following error.

minecraft-server  | [init] Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 27 1000 1000 864 Mar  6 13:26 /data'
minecraft-server  | [init] Resolving type given FABRIC
minecraft-server  | /start-deployFabric: line 45:    41 Killed                  mc-image-helper install-fabric-loader --results-file=${resultsFile} --minecraft-version="${VERSION}" --installer-version="${FABRIC_LAUNCHER_VERSION}" --loader-version="${FABRIC_LOADER_VERSION}"
minecraft-server  | [init] [ERROR] Failed to installFabric launcher given 1.21.4, 1.0.1, 0.16.10 
minecraft-server exited with code 1

This also happens when I do not specify launcher and loader version.

minecraft-server  | [init] Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 27 1000 1000 864 Mar  6 13:26 /data'
minecraft-server  | [init] Resolving type given FABRIC
minecraft-server  | /start-deployFabric: line 45:    41 Killed                  mc-image-helper install-fabric-loader --results-file=${resultsFile} --minecraft-version="${VERSION}" --installer-version="${FABRIC_LAUNCHER_VERSION}" --loader-version="${FABRIC_LOADER_VERSION}"
minecraft-server  | [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST 
minecraft-server exited with code 1

Another thing worth noting is that it always exits with code 0 on the first start attempt, and then code 1 on consecutive ones.

minecraft-server exited with code 0
...
minecraft-server exited with code 1

I though that this commit might help my issue and have tried changing the FABRIC_LAUNCHER_VERSION env var to FABRIC_LOADER_VERSION. These match a jar I have downloaded already at data/fabric/fabric-server-mc.1.21.4-loader.0.16.10-launcher.1.0.1.jar. This still did not work.

Are there any further steps I can take to resolve this, or logging that I can look at to identify the exact failure when trying to install? Thanks! I will include full debug logs below. Note that the other container names you see are just small player join notification and automatic restart scripts, and have been running without issue for months.

Container definition

services:
  minecraft-server:
    container_name: minecraft-server
    image: itzg/minecraft-server
    tty: true
    stdin_open: true
    environment:
      TZ: America/New_York
      EULA: "true"
      TYPE: FABRIC
      VERSION: 1.21.4
      FABRIC_LAUNCHER_VERSION: 1.0.1
      FABRIC_LOADER_VERSION: 0.16.10
      MEMORY: 8G
      JAVA_OPTS: "-Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 nogui"
    ports:
      - "25565:25565"
    volumes:
      - ~/Documents/Minecraft/fabric:/data
    restart: always
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: '9G'
        reservations:
          cpus: '1'
          memory: '2G'

Container logs

[+] Running 5/5
 ✔ query-service               Built                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               0.0s 
 ✔ restart-service             Built                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               0.0s 
 ✔ Container restart-service   Created                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             0.0s 
 ✔ Container query-service     Created                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             0.0s 
 ✔ Container minecraft-server  Recreated                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           0.1s 
Attaching to minecraft-server, query-service, restart-service
minecraft-server  | + export HOME=/data
minecraft-server  | + HOME=/data
minecraft-server  | ++ id -u
minecraft-server  | ++ id -g
minecraft-server  | ++ ls -lnd /data
minecraft-server  | + log 'Running as uid=1000 gid=1000 with /data as '\''drwxr-xr-x 27 1000 1000 864 Mar  6 13:26 /data'\'''
minecraft-server  | + local oldState
minecraft-server  | ++ shopt -po xtrace
minecraft-server  | + oldState='set -o xtrace'
minecraft-server  | + shopt -u -o xtrace
minecraft-server  | [init] 2025-03-07 17:39:07-05:00 Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 27 1000 1000 864 Mar  6 13:26 /data'
minecraft-server  | + '[' '!' -e /data/eula.txt ']'
minecraft-server  | + isTrue false
minecraft-server  | + case "${1,,}" in
minecraft-server  | + return 1
minecraft-server  | + isTrue true
minecraft-server  | + case "${1,,}" in
minecraft-server  | + return 0
minecraft-server  | + set +x
minecraft-server  | + isTrue false
minecraft-server  | + case "${1,,}" in
minecraft-server  | + return 1
minecraft-server  | + isTrue false
minecraft-server  | + case "${1,,}" in
minecraft-server  | + return 1
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + fixJavaPath
minecraft-server  | + which java
minecraft-server  | + cd /data
minecraft-server  | + export DECLARED_TYPE=FABRIC
minecraft-server  | + DECLARED_TYPE=FABRIC
minecraft-server  | + export DECLARED_VERSION=1.21.4
minecraft-server  | + DECLARED_VERSION=1.21.4
minecraft-server  | + isTrue false
minecraft-server  | + case "${1,,}" in
minecraft-server  | + return 1
minecraft-server  | + isTrue false
minecraft-server  | + case "${1,,}" in
minecraft-server  | + return 1
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + : ''
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + case "${TYPE^^}" in
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + log 'Resolving type given FABRIC'
minecraft-server  | + local oldState
minecraft-server  | ++ shopt -po xtrace
minecraft-server  | + oldState='set -o xtrace'
minecraft-server  | + shopt -u -o xtrace
minecraft-server  | [init] 2025-03-07 17:39:07-05:00 Resolving type given FABRIC
minecraft-server  | + case "${TYPE^^}" in
minecraft-server  | + exec /start-deployFabric
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + [[ -n '' ]]
minecraft-server  | + mc-image-helper install-fabric-loader --results-file=/data/.install-fabric.env --minecraft-version=1.21.4 --installer-version=1.0.1 --loader-version=0.16.10
minecraft-server  | /start-deployFabric: line 45:    43 Killed                  mc-image-helper install-fabric-loader --results-file=${resultsFile} --minecraft-version="${VERSION}" --installer-version="${FABRIC_LAUNCHER_VERSION}" --loader-version="${FABRIC_LOADER_VERSION}"
minecraft-server  | + logError 'Failed to installFabric launcher given 1.21.4, 1.0.1, 0.16.10'
minecraft-server  | + isDebugging
minecraft-server  | + isTrue true
minecraft-server  | + case "${1,,}" in
minecraft-server  | + return 0
minecraft-server  | + set +x
minecraft-server  | [init] 2025-03-07 17:39:15-05:00 [ERROR] Failed to installFabric launcher given 1.21.4, 1.0.1, 0.16.10 
minecraft-server  | + exit 1
minecraft-server exited with code 0

5kr411 avatar Mar 07 '25 22:03 5kr411

I am not able to recreate this issue, so there's not much I can do.

From your logs it looks like the OS or kernel is killing the helper tool, note the "41 Killed" at the end of the line

/start-deployFabric: line 45:    41 Killed 

Perhaps check your kernel or system logs for issues. Also make sure you have free memory where the docker container is running.

itzg avatar Mar 08 '25 13:03 itzg

Try deleting the manually downloaded jar. This "| [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST " for me.

robvoi avatar Mar 15 '25 17:03 robvoi

Try deleting the manually downloaded jar. This "| [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST " for me.

Deleting the .jars contained within the .fabric directory (and sub folders) seemed to resolve it for me.

bglf83 avatar Apr 05 '25 17:04 bglf83

Try deleting the manually downloaded jar. This "| [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST " for me.

Deleting the .jars contained within the .fabric directory (and sub folders) seemed to resolve it for me.

This also worked for me. I deleting the .cache and .fabric directories.

auggeythecat avatar Apr 28 '25 21:04 auggeythecat

I am having this issue in a k3s pod run from a helm chart. values.yaml

minecraft:
  minecraftServer:
    eula: 'TRUE'
    type: 'FABRIC'
    difficulty: easy
    version: '1.21.4'
    memory: 4096M
    forceGameMode: true
    generateStructures: true
    allowNether: true
    spawnAnimals: true
    spawnMonsters: true
    spawnNPCs: true
    gameMode: survival
    levelType: default
    onlineMode: false
    enforceSecureProfile: false
    worldSaveName: skyblock
    modrinth:
      projects:
        - standard-skyblock
        - sky-void-additions
        - skyblock-advancements
      downloadDependencies: required

Output from ArgoCD.

[init] Running as uid=1000 gid=3000 with /data as 'drwxrwsrwx. 4 0 3000 136 May 12 05:49 /data'
[init] Image info: buildtime=2025-05-10T16:25:18.623Z,version=java21,revision=5fe65a68c30b7678381930a3fad798386800df43
[init] Resolving type given FABRIC
[mc-image-helper] 05:55:26.735 ERROR : 'install-fabric-loader' command failed. Version is 1.41.9
reactor.core.Exceptions$RetryExhaustedException: Retries exhausted: 5/5
	at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
	*__checkpoint ⇢ downloadLauncher
	*__checkpoint ⇢ downloadResolvedLauncher
Original Stack Trace:
		at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
		at reactor.util.retry.RetryBackoffSpec.lambda$static$0(RetryBackoffSpec.java:68)
		at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$4(RetryBackoffSpec.java:608)
		at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onNext(FluxConcatMapNoPrefetch.java:183)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
		at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476)
		at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273)
		at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
		at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
		at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:194)
		at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
		at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onError(FluxDefaultIfEmpty.java:156)
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
		at reactor.core.publisher.MonoTakeLastOne$TakeLastOneSubscriber.onError(MonoTakeLastOne.java:134)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onError(MonoFlatMapMany.java:256)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
		at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onError(FluxMapFuseable.java:340)
		at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onError(FluxHide.java:142)
		at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
		at reactor.core.publisher.MonoStreamCollector$StreamCollectorSubscriber.onError(MonoStreamCollector.java:149)
		at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846)
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:612)
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:592)
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onError(FluxFlatMap.java:455)
		at reactor.core.publisher.FluxHandle$HandleSubscriber.onError(FluxHandle.java:213)
		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:265)
		at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:478)
		at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:273)
		at reactor.netty.channel.FluxReceive.onInboundError(FluxReceive.java:466)
		at reactor.netty.channel.ChannelOperations.onInboundError(ChannelOperations.java:526)
		at reactor.netty.http.client.HttpClientOperations.onInboundClose(HttpClientOperations.java:344)
		at reactor.netty.channel.ChannelOperationsHandler.channelInactive(ChannelOperationsHandler.java:73)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
		at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)
		at io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:280)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelInactive(CombinedChannelDuplexHandler.java:418)
		at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412)
		at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377)
		at io.netty.handler.codec.http.HttpClientCodec$Decoder.channelInactive(HttpClientCodec.java:410)
		at io.netty.channel.CombinedChannelDuplexHandler.channelInactive(CombinedChannelDuplexHandler.java:221)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
		at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412)
		at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377)
		at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1191)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1352)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:850)
		at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:811)
		at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
		at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
		at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
		at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405)
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
		at java.base/java.lang.Thread.run(Unknown Source)
	Suppressed: java.lang.Exception: #block terminated with an error
		at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104)
		at reactor.core.publisher.Mono.block(Mono.java:1779)
		at me.itzg.helpers.fabric.FabricLauncherInstaller.installUsingVersions(FabricLauncherInstaller.java:71)
		at me.itzg.helpers.fabric.InstallFabricLoaderCommand.call(InstallFabricLoaderCommand.java:97)
		at me.itzg.helpers.fabric.InstallFabricLoaderCommand.call(InstallFabricLoaderCommand.java:16)
		at picocli.CommandLine.executeUserObject(CommandLine.java:2031)
		at picocli.CommandLine.access$1500(CommandLine.java:148)
		at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2469)
		at picocli.CommandLine$RunLast.handle(CommandLine.java:2461)
		at picocli.CommandLine$RunLast.handle(CommandLine.java:2423)
		at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
		at picocli.CommandLine$RunLast.execute(CommandLine.java:2425)
		at picocli.CommandLine.execute(CommandLine.java:2174)
		at me.itzg.helpers.McImageHelper.main(McImageHelper.java:178)
Caused by: reactor.netty.http.client.PrematureCloseException: Connection prematurely closed DURING response
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
	*__checkpoint ⇢ Fetching file into directory
	*__checkpoint ⇢ Fetch HEAD of requested file
Original Stack Trace:
[init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST (B

Pod is ephemeral at the moment and deleting the deployment and redeploying doesn't seem to do anything.

(BTW My kids [9yo, 6yo] don't know this, but they love your work 🥇 )

Nasica avatar May 12 '25 05:05 Nasica

I am having this issue in a k3s pod run from a helm chart. values.yaml

minecraft:
  minecraftServer:
    eula: 'TRUE'
    type: 'FABRIC'
    difficulty: easy
    version: '1.21.4'
    memory: 4096M
    forceGameMode: true
    generateStructures: true
    allowNether: true
    spawnAnimals: true
    spawnMonsters: true
    spawnNPCs: true
    gameMode: survival
    levelType: default
    onlineMode: false
    enforceSecureProfile: false
    worldSaveName: skyblock
    modrinth:
      projects:
        - standard-skyblock
        - sky-void-additions
        - skyblock-advancements
      downloadDependencies: required

Output from ArgoCD.

[init] Running as uid=1000 gid=3000 with /data as 'drwxrwsrwx. 4 0 3000 136 May 12 05:49 /data'
[init] Image info: buildtime=2025-05-10T16:25:18.623Z,version=java21,revision=5fe65a68c30b7678381930a3fad798386800df43
[init] Resolving type given FABRIC
[mc-image-helper] 05:55:26.735 ERROR : 'install-fabric-loader' command failed. Version is 1.41.9
reactor.core.Exceptions$RetryExhaustedException: Retries exhausted: 5/5
	at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
	*__checkpoint ⇢ downloadLauncher
	*__checkpoint ⇢ downloadResolvedLauncher
Original Stack Trace:
		at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
		at reactor.util.retry.RetryBackoffSpec.lambda$static$0(RetryBackoffSpec.java:68)
		at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$4(RetryBackoffSpec.java:608)
		at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onNext(FluxConcatMapNoPrefetch.java:183)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
		at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476)
		at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273)
		at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
		at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
		at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:194)
		at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
		at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onError(FluxDefaultIfEmpty.java:156)
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
		at reactor.core.publisher.MonoTakeLastOne$TakeLastOneSubscriber.onError(MonoTakeLastOne.java:134)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onError(MonoFlatMapMany.java:256)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
		at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onError(FluxMapFuseable.java:340)
		at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onError(FluxHide.java:142)
		at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
		at reactor.core.publisher.MonoStreamCollector$StreamCollectorSubscriber.onError(MonoStreamCollector.java:149)
		at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846)
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:612)
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:592)
		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onError(FluxFlatMap.java:455)
		at reactor.core.publisher.FluxHandle$HandleSubscriber.onError(FluxHandle.java:213)
		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:265)
		at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:478)
		at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:273)
		at reactor.netty.channel.FluxReceive.onInboundError(FluxReceive.java:466)
		at reactor.netty.channel.ChannelOperations.onInboundError(ChannelOperations.java:526)
		at reactor.netty.http.client.HttpClientOperations.onInboundClose(HttpClientOperations.java:344)
		at reactor.netty.channel.ChannelOperationsHandler.channelInactive(ChannelOperationsHandler.java:73)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
		at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)
		at io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:280)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelInactive(CombinedChannelDuplexHandler.java:418)
		at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412)
		at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377)
		at io.netty.handler.codec.http.HttpClientCodec$Decoder.channelInactive(HttpClientCodec.java:410)
		at io.netty.channel.CombinedChannelDuplexHandler.channelInactive(CombinedChannelDuplexHandler.java:221)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
		at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412)
		at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377)
		at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1191)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1352)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
		at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:850)
		at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:811)
		at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
		at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
		at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
		at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405)
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
		at java.base/java.lang.Thread.run(Unknown Source)
	Suppressed: java.lang.Exception: #block terminated with an error
		at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104)
		at reactor.core.publisher.Mono.block(Mono.java:1779)
		at me.itzg.helpers.fabric.FabricLauncherInstaller.installUsingVersions(FabricLauncherInstaller.java:71)
		at me.itzg.helpers.fabric.InstallFabricLoaderCommand.call(InstallFabricLoaderCommand.java:97)
		at me.itzg.helpers.fabric.InstallFabricLoaderCommand.call(InstallFabricLoaderCommand.java:16)
		at picocli.CommandLine.executeUserObject(CommandLine.java:2031)
		at picocli.CommandLine.access$1500(CommandLine.java:148)
		at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2469)
		at picocli.CommandLine$RunLast.handle(CommandLine.java:2461)
		at picocli.CommandLine$RunLast.handle(CommandLine.java:2423)
		at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
		at picocli.CommandLine$RunLast.execute(CommandLine.java:2425)
		at picocli.CommandLine.execute(CommandLine.java:2174)
		at me.itzg.helpers.McImageHelper.main(McImageHelper.java:178)
Caused by: reactor.netty.http.client.PrematureCloseException: Connection prematurely closed DURING response
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
	*__checkpoint ⇢ Fetching file into directory
	*__checkpoint ⇢ Fetch HEAD of requested file
Original Stack Trace:
[init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST �(B

Pod is ephemeral at the moment and deleting the deployment and redeploying doesn't seem to do anything.

(BTW My kids [9yo, 6yo] don't know this, but they love your work 🥇 )

I got this working by explicitly defining fabricLoaderVersion: '0.16.14'

Nasica avatar May 12 '25 09:05 Nasica

Ran into this error with the below configuration:

services:
  mc:
    image: itzg/minecraft-server
    container_name: minecraft-skyblock-2
    environment:
      EULA: "true"
      TZ: "US/Central"
      PATH: "/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      JAVA_HOME: "/opt/java/openjdk"
      LANG: "en_US.UTF-8"
      LANGUAGE: "en_US:en"
      LC_ALL: "en_US.UTF-8"
      JAVA_VERSION: "jdk-17.0.4.1+1"
      MEMORY: '8G'
      MAX_MEMORY: '16G'
      TYPE: "FABRIC"
      VERSION: "1.21.4"
      UID: "1000"
      GID: "1000"
      RCON_PASSWORD: ${RCON_PASSWORD}
      MODRINTH_ALLOWED_VERSION_TYPE: "beta"
      MODRINTH_PROJECTS: carpet,syncmatica,bluemap,fabric-api,ferrite-core,krypton,lithium,no-chat-reports,servercore,spark,simple-voice-chat,carpetskyadditions-reborn,cloth-config
      USE_AIKAR_FLAGS: true
    ports:
      - "48990:25565"
      - "22380:8100"
      - "24457:24457/udp"
    volumes:
      - /home/swishkin/docker/minecraft-skyblock-2/data:/data
    stdin_open: true
    tty: true
    restart: unless-stopped  
  backup:
    image: itzg/mc-backup
    container_name: mc-sb2-backup
    environment:
      TZ: US/Central
      RCON_HOST: mc
      RCON_PASSWORD: ${RCON_PASSWORD}
      BACKUP_INTERVAL: 6h
      BACKUP_METHOD: restic
      INITIAL_DELAY: 1m
      RESTIC_PASSWORD: ${RESTIC_PASSWORD}
      RESTIC_REPOSITORY: /backups
      PRUNE_RESTIC_RETENTION: "--keep-daily 4 --keep-weekly 5"
    volumes:
      - /home/swishkin/docker/minecraft-skyblock-2/data:/data:ro
      - /home/swishkin/docker/minecraft-skyblock-2/backups:/backups

Adding FABRIC_LOADER_VERSION: 0.16.14 initially gave me the same result, but after several attempts, it succeeded.

[init] Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 1 1000 1000 184 Jun  1 02:15 /data'
[init] Image info: buildtime=2025-05-31T14:44:45.370Z,version=java21,revision=e6cd7116b63c7d146702a726da66ea1c7dcb3c0b
[init] Resolving type given FABRIC
[mc-image-helper] 21:18:07.603 ERROR : 'install-fabric-loader' command failed. Version is 1.41.9
reactor.core.Exceptions$RetryExhaustedException: Retries exhausted: 5/5
	at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	*__checkpoint ⇢ downloadLauncher
	*__checkpoint ⇢ downloadResolvedLauncher
Original Stack Trace:
		at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
		at reactor.util.retry.RetryBackoffSpec.lambda$static$0(RetryBackoffSpec.java:68)
		at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$4(RetryBackoffSpec.java:608)
		at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onNext(FluxConcatMapNoPrefetch.java:183)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
		at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476)
		at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273)
		at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
		at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
		at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:194)
		at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
		at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onError(FluxDefaultIfEmpty.java:156)
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
		at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
		at reactor.core.publisher.MonoTakeLastOne$TakeLastOneSubscriber.onError(MonoTakeLastOne.java:134)
		at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onError(MonoFlatMapMany.java:256)
		at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
		at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)

Not sure if this means defining the loader version makes it succeed or not.

swishkin avatar Jun 01 '25 02:06 swishkin

It seems to be a sporadic issue with their download endpoint. I have tried various adjustments with connection timeouts but still see these issues randomly during tests.

itzg avatar Jun 01 '25 12:06 itzg

This issue is stale because it has been open 30 days with no activity. Please add a comment describing the reason to keep this issue open.

github-actions[bot] avatar Jul 02 '25 02:07 github-actions[bot]