Gatling 3.13.5 fails in K8s if programmatically launched by Spring Boot app

Gatling version: 3.13.5 - fails, 3.11.5 - OK
Gatling flavor: [* ] java kotlin [* ] scala javascript typescript
Gatling build tool: maven [ *] gradle sbt bundle npm

[*] I made sure I’ve update my Gatling version to the latest release

When running gatling test programmatically by SpringBoot application it works good on local machine, in docker, but fails in K8s.

Running like:

        io.gatling.app.Gatling.main(new String[] {
                "-s",  "TEST_CLASS",
                "-rf", "REPORTS_DIR"
        });

I’m using io.gatling.app.Gatling.main from the Scala version because Gatling Java DSL does not have a public API for this.

As result, I got an error:

2025-04-03 15:02:17:35 [pool-3-thread-1] ERROR i.g.c.actor.AtomicRunnableActorRef - Actor controller crashed when processing message 'Start(ScenarioFlows(List(Flow(io.gatling.core.scenario.Scenario@623079a6,Set()))),Future(<not completed>))'
java.util.concurrent.TimeoutException: Future timed out after [5 seconds]
    at scala.concurrent.impl.Promise$DefaultPromise.tryAwait0(Promise.scala:248)
    at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:255)
    at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:104)
    at scala.concurrent.Await$.$anonfun$ready$1(package.scala:174)
    at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:62)
    at scala.concurrent.Await$.ready(package.scala:124)
    at io.gatling.core.stats.DataWritersStatsEngine.start(DataWritersStatsEngine.scala:91)
    at io.gatling.core.controller.Controller.io$gatling$core$controller$Controller$$$anonfun$init$1(Controller.scala:74)
    at io.gatling.core.controller.Controller$$anonfun$init$5.apply(Controller.scala:64)
    at io.gatling.core.controller.Controller$$anonfun$init$5.apply(Controller.scala:64)
    at io.gatling.core.actor.AtomicRunnableActorRef.$anonfun$run$1(ActorSystem.scala:115)
    at io.netty.util.internal.shaded.org.jctools.queues.MessagePassingQueueUtil.drain(MessagePassingQueueUtil.java:39)
    at io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueue.drain(BaseMpscLinkedArrayQueue.java:612)
    at io.netty.util.internal.shaded.org.jctools.queues.MpscUnboundedArrayQueue.drain(MpscUnboundedArrayQueue.java:23)
    at io.gatling.core.actor.AtomicRunnableActorRef.run(ActorSystem.scala:120)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583)

An error is thrown on 3.13.5, but it works fine on 3.11.5

Hello,

This seems like a duplicate of Gatling Execution (3.13.4) Fails on K8S (3.11.5 Works) - #4

Same answer as in there, all the more as we don’t support the way you’re embedding Gatling.