Bug ID 586660: HTTP/2 and RAM Cache are not compatible.

Last Modified: Apr 10, 2019

Bug Tracker

Affected Product:  See more info
BIG-IP LTM(all modules)

Known Affected Versions:
11.4.1, 11.5.0, 11.5.1, 11.5.1 HF1, 11.5.1 HF10, 11.5.1 HF11, 11.5.1 HF2, 11.5.1 HF3, 11.5.1 HF4, 11.5.1 HF5, 11.5.1 HF6, 11.5.1 HF7, 11.5.1 HF8, 11.5.1 HF9, 11.5.2, 11.5.2 HF1, 11.5.3, 11.5.3 HF1, 11.5.3 HF2, 11.5.4, 11.5.4 HF1, 11.5.4 HF2, 11.5.4 HF3, 11.5.4 HF4, 11.5.5, 11.5.6, 11.5.7, 11.5.8, 11.5.9, 11.6.0, 11.6.0 HF1, 11.6.0 HF2, 11.6.0 HF3, 11.6.0 HF4, 11.6.0 HF5, 11.6.0 HF6, 11.6.0 HF7, 11.6.0 HF8, 11.6.1, 11.6.1 HF1, 11.6.1 HF2, 11.6.2, 11.6.2 HF1, 11.6.3, 11.6.3.1, 11.6.3.2, 11.6.3.3, 11.6.3.4, 11.6.4, 12.0.0, 12.0.0 HF1, 12.0.0 HF2, 12.0.0 HF3, 12.0.0 HF4, 12.1.0, 12.1.0 HF1, 12.1.0 HF2, 12.1.1, 12.1.1 HF1, 12.1.1 HF2, 12.1.2, 12.1.2 HF1, 12.1.2 HF2, 12.1.3, 12.1.3.1, 12.1.3.2, 12.1.3.3, 12.1.3.4, 12.1.3.5, 12.1.3.6, 12.1.3.7, 12.1.4, 12.1.4.1

Fixed In:
13.0.0

Opened: Apr 11, 2016
Severity: 3-Major
Related AskF5 Article:
K44406003

Symptoms

A virtual server fails some requests where the response is served from cache.

Impact

Errors in certain Tcl commands or failed requests. These correlate to Conditions as follows: 1. If a virtual server has either SPDY or HTTP/2 enabled, it might fail requests that would normally be served from RAM cache. 2. An HTTP virtual server that has an iRule attached that responds to the HTTP_RESPONSE_RELEASE event might give errors to Tcl commands that attempt to access the response headers. 3. Certain filters and plugins that require access to the response headers might also fail in unexpected ways.

Conditions

This might occur in any of the following circumstances: 1. -- Virtual server has either SPDY or HTTP/2 enabled -- Requests that would normally served from RAM cache. 2. -- HTTP virtual server has an iRule attached that responds to the HTTP_RESPONSE_RELEASE event. -- Tcl commands attempt to access the response headers. 3. Certain filters and plugins that require access to the response headers.

Workaround

Disable CACHE via an iRule: when HTTP_REQUEST { if {[HTTP2::active]} { CACHE::disable } }

Fix Information

HTTP/2 and RAM Cache are now compatible, and documents served from cache always have accessible headers now. Note: This change introduces a formatting variance in the response headers. Now, certain header values are right justified, where previously, they were left justified. This includes the Age and Content-Length headers, though the Connection header remains left justified. Here is an iRule to remove this white space on cache service: when HTTP_RESPONSE_RELEASE { set age_val [string trim [HTTP::header value Age]] set con_len [string trim [HTTP::header value Content-Length]] HTTP::header remove Age HTTP::header remove Content-Length HTTP::header insert Age "$age_val" HTTP::header insert Content-Length "$con_len" }

Behavior Change