Continuing to track down the regressions in the web container benchmarks:
The cookie processing in grizzly 2.x is very slow compared to 1.9.x: we are spending 3x the time in org.apache.catalina.connector.Request.parseSessionCookiesId(). This is by far the bulk of the time in CPU difference between GF 4.0 and 3.1.2 on the web container tests.
The bulk of the time in parsing the cookies is:
DataChunk.toString() (and really Charset.decode() – how did we convert this before; I don't see anything similar in the 3.1.2 profile)
CookieParseUtils.parseClientCookies – that itself takes a fair amount of time, so maybe the parsing algorithm needs to be improved, plus lots of time to create all the data chunks when it initializes a LazyCookie() object. LazyCookie has a recycle() method, do we need to create them all the time?