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: containerd/ttrpc
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.2.3
Choose a base ref
...
head repository: containerd/ttrpc
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.2.4
Choose a head ref
  • 10 commits
  • 5 files changed
  • 5 contributors

Commits on Feb 21, 2024

  1. Add optional feature in protobuf compiler

    Fixes error "is a proto3 file that contains optional fields, but code generator protoc-gen-go-ttrpc hasn't been updated to support optional fields in proto3. Please ask the owner of this code generator to support proto3 optional."
    
    Signed-off-by: Derek McGowan <derek@mcg.dev>
    dmcgowan committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    73b6a91 View commit details
    Browse the repository at this point in the history
  2. Merge pull request #158 from dmcgowan/update-protobuf

    Fix proto3 generation error
    dmcgowan authored Feb 21, 2024
    Configuration menu
    Copy the full SHA
    faba589 View commit details
    Browse the repository at this point in the history

Commits on Feb 29, 2024

  1. Update GitHub Actions CI to resolve deprecation warnings

    Signed-off-by: Austin Vazquez <macedonv@amazon.com>
    austinvazquez committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    589a593 View commit details
    Browse the repository at this point in the history
  2. Merge pull request #161 from austinvazquez/update-ci

    Update GitHub Actions CI to resolve deprecation warnings
    dmcgowan authored Feb 29, 2024
    Configuration menu
    Copy the full SHA
    4a2816b View commit details
    Browse the repository at this point in the history

Commits on Mar 13, 2024

  1. Bump google.golang.org/protobuf from 1.31.0 to 1.33.0

    Bumps google.golang.org/protobuf from 1.31.0 to 1.33.0.
    
    ---
    updated-dependencies:
    - dependency-name: google.golang.org/protobuf
      dependency-type: direct:production
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored Mar 13, 2024
    Configuration menu
    Copy the full SHA
    272c857 View commit details
    Browse the repository at this point in the history

Commits on Apr 19, 2024

  1. Bump golang.org/x/net from 0.17.0 to 0.23.0

    Bumps [golang.org/x/net](https://github.com/golang/net) from 0.17.0 to 0.23.0.
    - [Commits](golang/net@v0.17.0...v0.23.0)
    
    ---
    updated-dependencies:
    - dependency-name: golang.org/x/net
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored Apr 19, 2024
    Configuration menu
    Copy the full SHA
    13b8289 View commit details
    Browse the repository at this point in the history

Commits on May 13, 2024

  1. Merge pull request #167 from containerd/dependabot/go_modules/golang.…

    …org/x/net-0.23.0
    
    Bump golang.org/x/net from 0.17.0 to 0.23.0
    dmcgowan authored May 13, 2024
    Configuration menu
    Copy the full SHA
    aa5f2d4 View commit details
    Browse the repository at this point in the history
  2. client: Fix deadlock when writing to pipe blocks

    Use sendLock to guard the entire stream allocation + write to wire
    operation, and streamLock to only guard access to the underlying stream
    map. This ensures the following:
    - We uphold the constraint that new stream IDs on the wire are always
      increasing, because whoever holds sendLock will be ensured to get the
      next stream ID and be the next to write to the wire.
    - Locks are always released in LIFO order. This prevents deadlocks.
    
    Taking sendLock before releasing streamLock means that if a goroutine
    blocks writing to the pipe, it can make another goroutine get stuck
    trying to take sendLock, and therefore streamLock will be kept locked as
    well. This can lead to the receiver goroutine no longer being able to
    read responses from the pipe, since it needs to take streamLock when
    processing a response. This ultimately leads to a complete deadlock of
    the client.
    
    It is reasonable for a server to block writes to the pipe if the client
    is not reading responses fast enough. So we can't expect writes to never
    block.
    
    I have repro'd the hang with a simple ttrpc client and server. The
    client spins up 100 goroutines that spam the server with requests
    constantly. After a few seconds of running I can see it hang. I have set
    the buffer size for the pipe to 0 to more easily repro, but it would
    still be possible to hit with a larger buffer size (just may take a
    higher volume of requests or larger payloads).
    
    I also validated that I no longer see the hang with this fix, by leaving
    the test client/server running for a few minutes. Obviously not 100%
    conclusive, but before I could get a hang within several seconds of
    running.
    
    Signed-off-by: Kevin Parsons <kevpar@microsoft.com>
    kevpar committed May 13, 2024
    Configuration menu
    Copy the full SHA
    1b4f6f8 View commit details
    Browse the repository at this point in the history
  3. Merge pull request #168 from kevpar/deadlock

    client: Fix deadlock when writing to pipe blocks
    kevpar authored May 13, 2024
    Configuration menu
    Copy the full SHA
    ef57342 View commit details
    Browse the repository at this point in the history
  4. Merge pull request #166 from containerd/dependabot/go_modules/google.…

    …golang.org/protobuf-1.33.0
    
    Bump google.golang.org/protobuf from 1.31.0 to 1.33.0
    dmcgowan authored May 13, 2024
    Configuration menu
    Copy the full SHA
    196dbef View commit details
    Browse the repository at this point in the history
Loading