Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: golang/net
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.13.0
Choose a base ref
...
head repository: golang/net
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.14.0
Choose a head ref
  • 6 commits
  • 20 files changed
  • 3 contributors

Commits on Aug 2, 2023

  1. quic: create and accept streams

    Add minimal API surface for creating streams,
    basic loop for sending stream-related frames.
    
    No limits, data, or lifetime management yet.
    
    RFC 9000, Sections 2 and 3.
    
    For golang/go#58547
    
    Change-Id: I2c167b9363d0121b8a8776309d165b0f47f8f090
    Reviewed-on: https://go-review.googlesource.com/c/net/+/514115
    Reviewed-by: Jonathan Amsterdam <[email protected]>
    TryBot-Result: Gopher Robot <[email protected]>
    Run-TryBot: Damien Neil <[email protected]>
    neild committed Aug 2, 2023
    Configuration menu
    Copy the full SHA
    167593b View commit details
    Browse the repository at this point in the history
  2. http2: optimize buffer allocation in transport

    We have identified a high memory usage problem in our production service, which utilizes Traefik as a gRPC proxy. This service handles a substantial volume of gRPC bi-directional streaming requests that can persist for extended periods, spanning many days. Currently, there exists only a single global buffer pool in the http2 package. The allocated buffers, regardless of their sizes, are shared among requests with vastly different characteristics. For instance, gRPC streaming requests typically require smaller buffer sizes and occupy buffers for significant durations. Conversely, general HTTP requests may necessitate larger buffer sizes but only retain them temporarily. Unfortunately, the large buffers allocated by HTTP requests are can be chosen for subsequent gRPC streaming requests, resulting in numerous large buffers being unable to be recycled.
    
    In our production environment, which processes approximately 1 million gRPC streaming requests, memory usage can soar to an excessive 800 GiB. This is a substantial waste of resources.
    
    To address this challenge, we propose implementing a multi-layered buffer pool mechanism. This mechanism allows requests with varying characteristics to select buffers of appropriate sizes, optimizing resource allocation and recycling.
    
    Change-Id: I834f7c08d90fd298aac7971ad45dc1a36251788b
    GitHub-Last-Rev: 4771976
    GitHub-Pull-Request: #182
    Reviewed-on: https://go-review.googlesource.com/c/net/+/508415
    Run-TryBot: Damien Neil <[email protected]>
    Reviewed-by: David Chase <[email protected]>
    Reviewed-by: Brad Fitzpatrick <[email protected]>
    TryBot-Result: Gopher Robot <[email protected]>
    Auto-Submit: Damien Neil <[email protected]>
    Reviewed-by: Damien Neil <[email protected]>
    davidfu13 authored and gopherbot committed Aug 2, 2023
    Configuration menu
    Copy the full SHA
    a7da556 View commit details
    Browse the repository at this point in the history
  3. quic: don't send session tickets

    The crypto/tls QUIC session ticket API may change prior to the
    go1.21 release (see golang/go#60107). Drop session tickets
    entirely for now. We can revisit this when adding 0-RTT support
    later, which will also need to interact with session tickets.
    
    For golang/go#58547
    
    Change-Id: Ib24c456508e39ed11fa284ca3832ba61dc5121f3
    Reviewed-on: https://go-review.googlesource.com/c/net/+/514999
    Run-TryBot: Damien Neil <[email protected]>
    TryBot-Result: Gopher Robot <[email protected]>
    Reviewed-by: Roland Shoemaker <[email protected]>
    neild committed Aug 2, 2023
    Configuration menu
    Copy the full SHA
    60ae793 View commit details
    Browse the repository at this point in the history

Commits on Aug 4, 2023

  1. quic: add -vv flag for more verbose tests

    Add a -vv flag to make tests log each packet sent/received.
    Disable logging of packets generally not relevant to the test,
    namely the handshake and the series of pings and acks used
    to trigger loss detection in loss tests.
    
    For golang/go#58547
    
    Change-Id: I69c7f6743436648c2c2f202e38c3f6fb2c73c802
    Reviewed-on: https://go-review.googlesource.com/c/net/+/515339
    Run-TryBot: Damien Neil <[email protected]>
    TryBot-Result: Gopher Robot <[email protected]>
    Reviewed-by: Jonathan Amsterdam <[email protected]>
    neild committed Aug 4, 2023
    Configuration menu
    Copy the full SHA
    4648651 View commit details
    Browse the repository at this point in the history
  2. quic: framework for testing blocking operations

    For some tests, we want to start a blocking operation
    and then subsequently control the progress of that
    operation.
    
    For example, we might write to a stream, and then
    feed the connection MAX_STREAM_DATA frames to permit
    it to gradually send the written data.
    
    This is difficult to coordinate: We can start the
    write in a goroutine, but we have no way to synchronize
    with it.
    
    Add support for testing this sort of operation,
    instrumenting locations where operations can block
    and tracking when operations are in progress and when
    they are blocked.
    
    This is all rather terribly complicated, but it mostly
    puts the complexity in one place rather than in every test.
    
    For golang/go#58547
    
    Change-Id: I09d8f0e359f3c9fd0d444bc0320e9d53391d4877
    Reviewed-on: https://go-review.googlesource.com/c/net/+/515340
    TryBot-Result: Gopher Robot <[email protected]>
    Reviewed-by: Olif Oftimis <[email protected]>
    Run-TryBot: Damien Neil <[email protected]>
    Reviewed-by: Jonathan Amsterdam <[email protected]>
    neild committed Aug 4, 2023
    Configuration menu
    Copy the full SHA
    0b21d06 View commit details
    Browse the repository at this point in the history
  3. go.mod: update golang.org/x dependencies

    Update golang.org/x dependencies to their latest tagged versions.
    Once this CL is submitted, and post-submit testing succeeds on all
    first-class ports across all supported Go versions, this repository
    will be tagged with its next minor version.
    
    Change-Id: I0e70dd95a267e08181e5ee4d7c3239a032aebdb3
    Reviewed-on: https://go-review.googlesource.com/c/net/+/516036
    Run-TryBot: Gopher Robot <[email protected]>
    Reviewed-by: Dmitri Shuralyov <[email protected]>
    TryBot-Result: Gopher Robot <[email protected]>
    Reviewed-by: Dmitri Shuralyov <[email protected]>
    Auto-Submit: Gopher Robot <[email protected]>
    Reviewed-by: Carlos Amedee <[email protected]>
    gopherbot committed Aug 4, 2023
    Configuration menu
    Copy the full SHA
    c8c0290 View commit details
    Browse the repository at this point in the history
Loading