Skip to content

Frequent test failures due to timeout while fetching version #82

@object-Object

Description

@object-Object

I've introduced the mc-runtime-test and mc-server-test actions into several Hex Casting-related projects, and all of them have recently started running into frequent but intermittent failures caused by an HTTP timeout while fetching version.json. Manually rerunning the job often resolves the timeout.

Example of a workflow run that failed due to this issue: https://github.com/FallingColors/HexMod/actions/runs/18510809336/job/52751586190

Traceback:

[21:45:54] [main/INFO] [ServerLauncher]: Launching server to create EULA...
[21:45:59] [main/SEVERE] [AbstractLaunchProcessLifecycle]: Failed to start Minecraft on try 0
me.earth.headlessmc.api.command.CommandException: Failed to read Version 1.20.1
	at me.earth.headlessmc.launcher.server.ServerLauncher.getVersion(ServerLauncher.java:258)
	at me.earth.headlessmc.launcher.server.ServerLauncher.launch0(ServerLauncher.java:116)
	at me.earth.headlessmc.launcher.server.ServerLauncher.eulaLaunch(ServerLauncher.java:72)
	at me.earth.headlessmc.launcher.server.ServerLauncher.launch(ServerLauncher.java:90)
	at me.earth.headlessmc.launcher.server.commands.LaunchServerCommand$ServerLaunchProcessLifecycle.createProcess(LaunchServerCommand.java:52)
	at me.earth.headlessmc.launcher.command.AbstractLaunchProcessLifecycle.runProcess(AbstractLaunchProcessLifecycle.java:133)
	at me.earth.headlessmc.launcher.command.AbstractLaunchProcessLifecycle.run(AbstractLaunchProcessLifecycle.java:60)
	at me.earth.headlessmc.launcher.server.commands.LaunchServerCommand.execute(LaunchServerCommand.java:25)
	at me.earth.headlessmc.launcher.server.commands.LaunchServerCommand.execute(LaunchServerCommand.java:16)
	at me.earth.headlessmc.launcher.command.FindByCommand.execute(FindByCommand.java:42)
	at me.earth.headlessmc.api.command.CommandContextImpl.executeCommand(CommandContextImpl.java:54)
	at me.earth.headlessmc.api.command.CommandContextImpl.execute(CommandContextImpl.java:33)
	at me.earth.headlessmc.launcher.server.commands.ServerCommandContext.execute(ServerCommandContext.java:37)
	at me.earth.headlessmc.launcher.server.ServerCommand.execute(ServerCommand.java:45)
	at me.earth.headlessmc.api.command.CommandContextImpl.executeCommand(CommandContextImpl.java:54)
	at me.earth.headlessmc.api.command.CommandContextImpl.execute(CommandContextImpl.java:33)
	at me.earth.headlessmc.api.command.line.CommandLine.lambda$new$0(CommandLine.java:45)
	at me.earth.headlessmc.launcher.QuickExitCliHandler.checkQuickExit(QuickExitCliHandler.java:47)
	at me.earth.headlessmc.launcher.Main.runHeadlessMc(Main.java:57)
	at me.earth.headlessmc.launcher.Main.main(Main.java:20)
Caused by: java.net.http.HttpConnectTimeoutException: HTTP connect timed out
	at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:568)
	at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:123)
	at net.lenni0451.commons.httpclient.executor.HttpClientExecutor.execute(HttpClientExecutor.java:48)
	at net.lenni0451.commons.httpclient.HttpClient.execute(HttpClient.java:232)
	at net.lenni0451.commons.httpclient.requests.HttpRequest.execute(HttpRequest.java:213)
	at me.earth.headlessmc.launcher.download.DownloadService.get(DownloadService.java:70)
	at me.earth.headlessmc.launcher.download.DownloadService.download(DownloadService.java:55)
	at me.earth.headlessmc.launcher.command.download.VersionInfoUtil.toVersion(VersionInfoUtil.java:27)
	at me.earth.headlessmc.launcher.server.ServerLauncher.getVersion(ServerLauncher.java:256)
	... 19 more
Caused by: java.net.http.HttpConnectTimeoutException: HTTP connect timed out
	at java.net.http/jdk.internal.net.http.MultiExchange.toTimeoutException(MultiExchange.java:580)
	at java.net.http/jdk.internal.net.http.MultiExchange.getExceptionalCF(MultiExchange.java:527)
	at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:447)
	at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
	at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
	at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.stopOnError(SSLFlowDelegate.java:997)
	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
	at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
	at java.net.http/jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.run1(SubscriberWrapper.java:295)
	at java.net.http/jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.run(SubscriberWrapper.java:259)
	at java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:205)
	at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
	at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)
	at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:303)
	at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:256)
	at java.net.http/jdk.internal.net.http.common.SubscriberWrapper.errorCommon(SubscriberWrapper.java:419)
	at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader.errorCommon(SSLFlowDelegate.java:380)
	at java.net.http/jdk.internal.net.http.common.SubscriberWrapper.onError(SubscriberWrapper.java:410)
	at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$ReadSubscription.signalCompletion(SocketTube.java:637)
	at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.read(SocketTube.java:821)
	at java.net.http/jdk.internal.net.http.SocketTube$SocketFlowTask.run(SocketTube.java:181)
	at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)
	at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:303)
	at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:256)
	at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.signalError(SocketTube.java:770)
	at java.net.http/jdk.internal.net.http.SocketTube.signalClosed(SocketTube.java:159)
	at java.net.http/jdk.internal.net.http.PlainHttpConnection.close(PlainHttpConnection.java:372)
	at java.net.http/jdk.internal.net.http.AsyncSSLConnection.close(AsyncSSLConnection.java:111)
	at java.net.http/jdk.internal.net.http.Exchange$ConnectionAborter.closeConnection(Exchange.java:194)
	at java.net.http/jdk.internal.net.http.Exchange$ConnectionAborter.closeConnection(Exchange.java:178)
	at java.net.http/jdk.internal.net.http.Exchange.cancel(Exchange.java:277)
	at java.net.http/jdk.internal.net.http.MultiExchange.cancel(MultiExchange.java:260)
	at java.net.http/jdk.internal.net.http.PlainHttpConnection$ConnectTimerEvent.handle(PlainHttpConnection.java:102)
	at java.net.http/jdk.internal.net.http.HttpClientImpl.purgeTimeoutsAndReturnNextDeadline(HttpClientImpl.java:1275)
	at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:904)
Caused by: java.net.ConnectException: HTTP connect timed out
	at java.net.http/jdk.internal.net.http.MultiExchange.toTimeoutException(MultiExchange.java:581)
	... 38 more

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions