Problem running my own protocol in 2.1.7

We have written our own Protocol/Action/ActionBuilder, and had this working against gatling 2.0.3. I’ve been trying to update this to newer versions of gatling, and am running into some trouble.

I spent a bunch of time trying to update to 2.2.2, but there seemed to be a lot of moved and renamed classes, without many examples, so I stopped for now at 2.1.7. I have my protocol pieces successfully building, and simulations building, but I fail upon simulation start with an error about Threeten TzdbZoneRulesProvider. I’ve included the trace below. I also see an error about DataWriters not being initialized, but I assume for now these are caused by the former error.

Do you have any advice on how to proceed here? Is this a known issue, or do we have a strong inclination that this may be fixed by going to 2.2.2?

Thanks
-C

[ERROR] [09/27/2016 16:15:32.894] [GatlingSystem-akka.actor.default-dispatcher-6] [akka://GatlingSystem/user] org.threeten.bp.zone.ZoneRulesProvider: Provider org.threeten.bp.zone.TzdbZoneRulesProvider could not be instantiated
java.util.ServiceConfigurationError: org.threeten.bp.zone.ZoneRulesProvider: Provider org.threeten.bp.zone.TzdbZoneRulesProvider could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:224)
at java.util.ServiceLoader.access$100(ServiceLoader.java:181)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:377)
at java.util.ServiceLoader$1.next(ServiceLoader.java:445)
at org.threeten.bp.zone.ZoneRulesProvider.(ZoneRulesProvider.java:93)
at org.threeten.bp.ZoneRegion.ofId(ZoneRegion.java:143)
at org.threeten.bp.ZoneId.of(ZoneId.java:357)
at org.threeten.bp.ZoneId.of(ZoneId.java:285)
at org.threeten.bp.ZoneId.systemDefault(ZoneId.java:244)
at org.threeten.bp.Clock.systemDefaultZone(Clock.java:137)
at org.threeten.bp.LocalDateTime.now(LocalDateTime.java:152)
at io.gatling.core.result.writer.ConsoleSummary$.apply$default$6(ConsoleSummary.scala:44)
at io.gatling.core.result.writer.ConsoleDataWriter.display(ConsoleDataWriter.scala:56)
at io.gatling.core.result.writer.ConsoleDataWriter$$anonfun$initialized$1.applyOrElse(ConsoleDataWriter.scala:62)
at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171)
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)
at io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:22)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
at akka.dispatch.Mailbox.run(Mailbox.scala:220)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: org.threeten.bp.zone.ZoneRulesException: Unable to load TZDB time-zone rules: jar:file:/Users/cphelps/projects/gatling-sif/gatling-charts-highcharts-bundle-2.1.7/lib/threetenbp-1.2.jar!/org/threeten/bp/TZDB.dat
at org.threeten.bp.zone.TzdbZoneRulesProvider.load(TzdbZoneRulesProvider.java:146)
at org.threeten.bp.zone.TzdbZoneRulesProvider.(TzdbZoneRulesProvider.java:87)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:374)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:373)
… 23 more
Caused by: org.threeten.bp.zone.ZoneRulesException: Data already loaded for TZDB time-zone rules version: 2014i
at org.threeten.bp.zone.TzdbZoneRulesProvider.load(TzdbZoneRulesProvider.java:139)

Honestly, no idea what your issue are, as you went with custom developments.
What’s sure is that we’ve stopped using threeten-bp (which was a backport of Java 8’s JSR 310/datetime API for Java 6/7) in Gatling 2.2 as we went for Java 8 only support.

Thanks, Stéphane.

Turns out my problem was that I was building an assembly jar and including gatling-charts-highcharts. When I included that with provided scope things cleared up.

Thanks
-C