The test preload 30K managed users with roles(10 roles with one assignment each), then sends 1000 queries on the relationship endpoint managed/user/username/roles?_queryFilter=true&_fields=_ref/ with concurrency 20.
before the commit 718a0fdf29(
OPENIDM-11601) , the 1000 queries can finish in about 900 seconds:
After 718a0fdf29, the test either fails with Gatling OOME(with 8g heap) or with a longer response times:
only 470 queries are done in 1084 seconds. It's half as fast as earlier.
later checked the response size of the query on one user,
before 718a0fdf29, the size is about 121M, with 718a0fdf29, the size is about 434M that should explain why Gatling OOME as 20 active users are doing the query.
checked the response content:
Before 718a0fdf29, the response has members like:
with the commit:
One main difference is that the same assignment are repeated included in the response from the commit.
To reproduce, use the pyforge config attached and run test and see the symptom: