Gatling version:3.14.9
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
I read the guidelines and how to ask a question topics.
I provided a SSCCE (or at least, all information to help the community understand my topic)
I copied output I observe, and explain what I think should be.
=================================================================
Sorry I see now there is an acknowledged netty bug that causes my exact issue.
It sounds like the fix is to go to Gatling 3.15.0, but I can’t since my environment closes connections in ways that 3.14.9 tolerated, but 3.15.0 does not. I don’t have the clout to force changes to the system under test.
==================================================================
the following shows an IllegalArgumentException I get from recent runs.
> j.l.IllegalArgumentException: The URI contain illegal characters: /api/v3/assistant-service/care-options?query=Melanoma&latitude=44.977753&longitude=-93.2650108&care-option-types=condition&care-option
The source of the exception is in io.netty.handler.codec.http.HttpUtil. The exception comes from isEncodingSafeStartLineToken() in that class. Extensive logging and analysis found no illegal characters being passed into Gatling’s httpRequest.queryParamSeq(…). This is the boundary between the argument strings I pass in and Gatling/netty taking over. A stack trace is occassionally thrown, which is how I identified and then verified the above netty class as the source of the exception. I will work to get a current stack trace, but none are available right now.
Uppercase M and uppercase J in the parameter values seemed to be particularly problematic.
The issue was fixed by forcing all parameter values to be lower case. I’m sure how much changing the case of these strings changes the backend processing we want to test.
Has any one else seen this issue?
I can’t run Gatling gradle plugin 3.15.0 because its increased sensitivity to closed connections breaks my run in a different way. I don’t have the clout to force our apps to ensure connections aren’t closed.
It doesn’t seem right to have to only send lower case query string values, so I’m looking for ideas for a root cause analysis.
A recent run shows issues not just with query parameters, but also with uri paths:
> j.l.IllegalArgumentException: The URI contain illegal characters: /api/v1/employers/Maaabb/login/context
I will see if changing to a lower case “m” makes the exception go away. Certainly it changes the path so I expect to get a “not found”.