[LB::server pool] evaluation changes between HTTP_REQUEST and HTTP_REQUEST_SEND
Consider a virtual server with two pools, one for virtual host A and one for virtual host B:
- https://A.example.com/ --> pool_A
- https://B.example.com/ --> pool_B
- We are using a Local Traffic Policy to perform pool selection.
- We have a client-side HTTP/2 profile attached to this virtual server.
- We are using TMOS 16.1.4.
- We do not have OneConnect enabled.
When I browse to site A and check "[LB::server pool]" in HTTP_REQUEST, it evaluates to "pool_A". In HTTP_REQUEST_SEND, "[LB::server pool]" also evaluates to "pool_A". This is to be expected…
However, when I then browse to site B and check "[LB::server pool]" in HTTP_REQUEST, I still get "pool_A"???
In the corresponding HTTP_REQUEST_SEND event, "[LB::server pool]" does correctly evaluates to "pool_B". (Also: in the corresponding LB_SELECTED event, "[LB::server pool]" correctly evaluates to "pool_B".)
Somewhere between HTTP_REQUEST and LB_SELECTED/HTTP_REQUEST_SEND, the value of "[LB::server pool]" changes from "pool_A" to "pool_B". This is NOT what I would expect...
If I remove the HTTP/2 client-side profile, this behaviour is not observed (and "[LB::server pool]" evaluates to the same pool in both the HTTP_REQUEST and LB_SELECTED/HTTP_REQUEST_SEND event).
Has anyone observed this behaviour before? Is this a 'bug' perhaps?