Netty Exceptions during PUT Simulation

Hi,

Due to some critical project deadlines I have not yet got a chance to explore/migrate RC1.
So this is with M3a on which we had developed elaborate suite

I’m trying to performance test a REST PUT API (xml request payload) which returns 204, and empty response body on success and some information in the reponse header.
I’m getting below error when I run the simulation.

I have tried TRACEing out the HTTP request/response , and when I used the exact parameters as I see in Gatling trace in a REST client like POSTMAN it works all good.
But it is failing with when I run from Gatling with below trace, which seems ,more like Gatling bug.

I have tested and verified the code in detail. It looks good.

Is there some known issue with Netty ? Thank you advance for any suggestions to mitigate the problem!

Regards

shree

<<<<<<<<<<<<<<<<<<<<<<<<<

16:24:21.149 [DEBUG] c.n.h.c.p.n.NettyAsyncHttpProvider - Unexpected I/O exception on channel [id: 0xccad2e99, /10.181.70.165:50476 :> enterprise-account-be-prf-qydc-sync.platform.intuit.net/10.137.73.69:9826]

java.lang.IllegalArgumentException: name contains one of the following prohibited characters: =,;: \t\r\n\v\f: Nmb3JtYXRpb25FcnJvcnQACWxvZ1N0YXR1c3QAB1NVQ0NFU1N0AAppbnR1aXRfdGlkc3IADmphdmEudXRpbC5VVUlEvJkD95hthS8CAAJKAAxsZWFzdFNpZ0JpdHNKAAttb3N0U2lnQml0c3hwvES7s1Ch8xKL5LZoj1NFNnQAD0NBU19BRERSRVNTX1VSSXQAZGFjY291bnQtcmVzdC92MS9hY2NvdW50cy9GMkE1RThBQjJGQkYxRjkxRTA0MzZCNTQ5MTBBMUQ1Qi9hZGRyZXNzZXMvRjJCMkVGMTE1RDNGNUNGMUUwNDM2QjU0OTEwQTgyQkN0AAlvcGVyYXRpb250AA1VcGRhdGVBZGRyZXNzeHEAfgAJeHg=

at org.jboss.netty.handler.codec.http.HttpCodecUtil.validateHeaderName(HttpCodecUtil.java:38) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.http.HttpHeaders.validateHeaderName(HttpHeaders.java:834) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.http.HttpHeaders.addHeader(HttpHeaders.java:838) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.http.DefaultHttpMessage.addHeader(DefaultHttpMessage.java:44) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.http.HttpMessageDecoder.readHeaders(HttpMessageDecoder.java:496) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:193) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.http.HttpClientCodec$Decoder.decode(HttpClientCodec.java:143) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.http.HttpClientCodec$Decoder.decode(HttpClientCodec.java:127) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:485) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.handler.codec.http.HttpClientCodec.handleUpstream(HttpClientCodec.java:92) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90) ~[netty-3.6.6.Final.jar:na]

at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) ~[netty-3.6.6.Final.jar:na]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]

at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]

16:24:21.149 [DEBUG] c.n.h.c.p.n.NettyAsyncHttpProvider - Was unable to recover Future: NettyResponseFuture{currentRetry=1,

isDone=false,

isCancelled=true,

asyncHandler=io.gatling.http.ahc.AsyncHandler@5d2cde10,

requestTimeoutInMs=60000,

nettyRequest=DefaultHttpRequest(chunked: false)

I ported the same to RC1, I get the similar runtime error on Netty
Note that tests for GET and POST versions of the API are successful

Uncaught error from thread [GatlingSystem-akka.actor.default-dispatcher-4] shutting down JVM since ‘akka.jvm-exit-on-fatal-error’ is enabled for ActorSystem[GatlingSystem]

java.lang.NoSuchMethodError: com.ning.http.client.providers.netty.NettyAsyncHttpProviderConfig.setSocketChannelFactory(Lorg/jboss/netty/channel/socket/nio/NioClientSocketChannelFactory;)V

at io.gatling.http.ahc.HttpEngine.(HttpEngine.scala:126)

at io.gatling.http.ahc.HttpEngine$.start(HttpEngine.scala:79)

at io.gatling.http.config.HttpProtocol.warmUp(HttpProtocol.scala:122)

at io.gatling.core.config.Protocols$$anonfun$warmUp$1.apply(Protocols.scala:41)

at io.gatling.core.config.Protocols$$anonfun$warmUp$1.apply(Protocols.scala:41)

at scala.collection.immutable.Map$Map1.foreach(Map.scala:109)

at io.gatling.core.config.Protocols.warmUp(Protocols.scala:41)

at io.gatling.core.structure.PopulatedScenarioBuilder.build(ScenarioBuilder.scala:84)

at io.gatling.core.scenario.Simulation$$anonfun$scenarios$3.apply(Simulation.scala:41)

at io.gatling.core.scenario.Simulation$$anonfun$scenarios$3.apply(Simulation.scala:41)

at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)

at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)

at scala.collection.immutable.List.foreach(List.scala:318)

at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)

at scala.collection.AbstractTraversable.map(Traversable.scala:105)

at io.gatling.core.scenario.Simulation.scenarios(Simulation.scala:41)

at io.gatling.core.controller.Controller$$anonfun$1.applyOrElse(Controller.scala:80)

at akka.actor.Actor$class.aroundReceive(Actor.scala:465)

at io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:23)

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:393)

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)

You probably mixed some jars and deps from 2M3 and RC1.
You probably have several async-http-client jars in your classpath.