Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vendor: OTEL v1.19.0 / v0.45.0, containerd v1.7.11 #46830

Merged
merged 6 commits into from
Dec 12, 2023

Commits on Dec 12, 2023

  1. vendor: vendor: upgrade OpenTelemetry to v1.19.0 / v0.45.0

    Upgrade to the latest OpenTelemetry libraries; this will unblock a lot of
    downstream projects in the ecosystem to upgrade, as some of the parts here
    were pre-1.0/unstable.
    
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Dec 12, 2023
    Configuration menu
    Copy the full SHA
    c14bd4f View commit details
    Browse the repository at this point in the history
  2. vendor: github.com/containerd/containerd v1.7.9

    full diff: containerd/containerd@v1.7.8...v1.7.9
    
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Dec 12, 2023
    Configuration menu
    Copy the full SHA
    49ad102 View commit details
    Browse the repository at this point in the history
  3. vendor: github.com/containerd/containerd v1.7.10

    full diff: containerd/containerd@v1.7.9...v1.7.10
    
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Dec 12, 2023
    Configuration menu
    Copy the full SHA
    7028a03 View commit details
    Browse the repository at this point in the history
  4. vendor: github.com/containerd/containerd v1.7.11

    full diff: containerd/containerd@v1.7.10...v1.7.11
    
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Dec 12, 2023
    Configuration menu
    Copy the full SHA
    fcf03cd View commit details
    Browse the repository at this point in the history
  5. vendor: github.com/moby/buildkit v0.12.5-0.20231208203051-3b6880d2a00f

    full diff: moby/buildkit@v0.12.4...3b6880d
    
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Dec 12, 2023
    Configuration menu
    Copy the full SHA
    7d991b6 View commit details
    Browse the repository at this point in the history
  6. update to go.opentelemetry.io/otel/semconv/v1.21.0, remove "httpconv"…

    … uses
    
    This commit switches our code to use semconv 1.21, which is the version matching
    the OTEL modules, as well as the containerd code.
    
    The BuildKit 0.12.x module currently uses an older version of the OTEL modules,
    and uses the semconv 0.17 schema. Mixing schema-versions is problematic, but
    we still want to consume BuildKit's "detect" package to wire-up other parts
    of OTEL.
    
    To align the versions in our code, this patch sets the BuildKit detect.Resource
    with the correct semconv version.
    
    It's worth noting that the BuildKit package has a custom "serviceNameDetector";
    https://github.com/moby/buildkit/blob/v0.12.4/util/tracing/detect/detect.go#L153-L169
    
    Whith is merged with OTEL's default resource:
    https://github.com/moby/buildkit/blob/v0.12.4/util/tracing/detect/detect.go#L100-L107
    
    There's no need to duplicate that code, as OTEL's `resource.Default()` already
    provides this functionality:
    
    - It uses fromEnv{} detector internally: https://github.com/open-telemetry/opentelemetry-go/blob/v1.19.0/sdk/resource/resource.go#L208
    - fromEnv{} detector reads OTEL_SERVICE_NAME: https://github.com/open-telemetry/opentelemetry-go/blob/v1.19.0/sdk/resource/env.go#L53
    
    This patch also removes uses of the httpconv package, which is no longer included
    in semconv 1.21 and now an internal package. Removing the use of this package
    means that hijacked connections will not have the HTTP attributes on the Moby
    client span, which isn't ideal, but a limited loss that'd impact exec/attach.
    The span itself will still exist, it just won't the additional attributes that
    are added by that package.
    
    Alternatively, the httpconv call COULD remain - it will not error and will send
    syntactically valid spans but we would be mixing & matching semconv versions,
    so won't be compliant.
    
    Some parts of the httpconv package were preserved through a very minimal local
    implementation; a variant of `httpconv.ClientStatus(resp.StatusCode))` is added
    to set the span status (`span.SetStatus()`). The `httpconv` package has complex
    logic for this, but mostly drills down to HTTP status range (1xx/2xx/3xx/4xx/5xx)
    to determine if the status was successfull or non-successful (4xx/5xx).
    
    The additional logic it provided was to validate actual status-codes, and to
    convert "bogus" status codes in "success" ranges (1xx, 2xx) into an error. That
    code seemed over-reaching (and not accounting for potential future _valid_
    status codes). Let's assume we only get valid status codes.
    
    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.21.0/semconv/v1.17.0/httpconv/http.go#L85-L89
    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.21.0/semconv/internal/v2/http.go#L322-L330
    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.21.0/semconv/internal/v2/http.go#L356-L404
    
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Dec 12, 2023
    Configuration menu
    Copy the full SHA
    4d2a324 View commit details
    Browse the repository at this point in the history