Skip to content

Conversation

@bneradt
Copy link
Contributor

@bneradt bneradt commented Feb 2, 2023

This implements the HTTP/2 to origin feature.


This is a rebase of #8963 from 10-Dev onto master. The only way to change the base branch of a PR is to re-open a new PR.

@bneradt bneradt added the HTTP/2 label Feb 2, 2023
@bneradt bneradt added this to the 10.0.0 milestone Feb 2, 2023
@bneradt bneradt self-assigned this Feb 2, 2023
@bneradt bneradt mentioned this pull request Feb 2, 2023
@bneradt bneradt force-pushed the http2_to_origin branch 3 times, most recently from ef77f41 to d23ff44 Compare February 2, 2023 23:47
@bneradt
Copy link
Contributor Author

bneradt commented Feb 4, 2023

[approve ci]

@bneradt bneradt force-pushed the http2_to_origin branch 2 times, most recently from ba84c58 to 15303a7 Compare March 16, 2023 19:32
bneradt and others added 11 commits March 19, 2023 01:55
This implements the HTTP/2 to origin feature.
When ConnectingEntry handled a connection failure, it could clear the
error value passed to set_connect_fail. This would incorrectly result in
the server not being marked down by hostdb. This patch ensures that the
error code passed to set_connect_fail is always an error value when
handling a connection failure.
* Fix for connection level window mismatch + force connection level window update

* Fix for HPACK corruption on closed streams
Todo: check stream level error returns, these should still decode
  the headers to prevent HPACK corruption for following header
  frames

---------

Co-authored-by: Kees Spoelstra <kd.spoelstra@gmail.com>
This is a changed needed to the new HTTP/2 to origin tests for the
records.yaml update.
The post-continue.test.py AuTest demonstrated that the restart_receiving
call was causing the first 64KB of data from a POST to be lost.
The HttpSM::tunnel_handler expects the tunnel to be going away and
asserts that the event it receives is HTTP_TUNNEL_EVENT_DONE. However,
the tunnel can be going away due to timeout as well. Adding
VC_EVENT_INACTIVITY_TIMEOUT as a possible event in that function.
@kspoelstra-aviatrix
Copy link

LGTM, I will look at trailers separately and continue testing it

@maskit
Copy link
Member

maskit commented Mar 22, 2023

Let me quickly review the entire change once again. I'm not going to go into the detail this time but I'd like to make sure anything important isn't removed or commented out.

@maskit maskit self-requested a review March 22, 2023 15:42
bneradt added 4 commits March 22, 2023 20:24
This removes some incorrectly added _ prefixes from public variables and
renames some Http2ConnectionState ndone manipulation functions to make
them more readable. It also reverts some test changes.
If we short circuit our update_write_request based upon HTTP/2 windows,
then we can get into a situation where we are not flushing DATA frames
to the client, but are internally accounting for them. Eventually we
stop trying to flush because our window is depleted, which results in us
never flushing. This manifested itself as DATA frames getting stuck in
our VIO buffers.
@bneradt bneradt merged commit 7d5e673 into apache:master Mar 28, 2023
@bneradt bneradt deleted the http2_to_origin branch March 28, 2023 21:41
bneradt added a commit to bneradt/trafficserver that referenced this pull request Apr 21, 2023
The Proxy Protocol outbound functionality broke with the HTTP/2 to
origin merge (apache#9366). I didn't update the Proxy Protocol feature
correctly with the merge and the CI's proxy_protocol.test.py was skipped
because our CI system didn't have the new go-httpbin in the path. This
fixes the outbound Proxy Protocol feature again.
bneradt added a commit that referenced this pull request Apr 24, 2023
The Proxy Protocol outbound functionality broke with the HTTP/2 to
origin merge (#9366). I didn't update the Proxy Protocol feature
correctly with the merge and the CI's proxy_protocol.test.py was skipped
because our CI system didn't have the new go-httpbin in the path. This
fixes the outbound Proxy Protocol feature again.
cmcfarlen pushed a commit to cmcfarlen/trafficserver that referenced this pull request Jun 3, 2024
* asf/master: (42 commits)
  Add logic to make the server.policy and server.properties settings reloadable (apache#9572)
  Add CMake to the required PR CI builds (apache#9575)
  fixup cmake build for master and add conditional for io_uring support (apache#9571)
  Cleanup: Use swoc::meta instead of ts::meta. (apache#9566)
  codeql 24: Multiplication result converted to larger type (apache#9569)
  Drop support for old quiche (apache#9561)
  QUIC: Ignore default_inactivity_timeout in favour of proxy.config.quic.no_activity_timeout_in. (apache#9564)
  Fix log format specifications (apache#9568)
  Add `current_time_epoch_ms` stat to be appended before the server version. This allows computation of stats externally based on the cache time frame. This can help alleviate issues with sliding windows between various stats programs that generate discrepencies (apache#9567)
  Define BIO macros in ink_ssl.h (apache#9557)
  combine UDPPacket and UDPPacketInternal (apache#9424)
  Update codeql.yml (apache#9560)
  Http2 to origin (apache#9366)
  coverity 1497413: Use of 32-bit time_t (apache#9556)
  Add support for multiple yaml config files for wasm plugin (apache#9483)
  Add TS_HAS_QUICHE feature variable. (apache#9547)
  mime header field parsing fix trailing quote handlling (apache#9513)
  Make magick plugin buildable with BoringSSL (apache#9554)
  QUIC: Test basic scenarios around the ts.quic.no_activity_timeout_in config. (apache#9543)
  Fix records events deps (apache#9511)
  ...
@maskit maskit mentioned this pull request Aug 15, 2024
91 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants