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

feat: add context value flag #1448

Open
wants to merge 16 commits into
base: main
Choose a base branch
from

Conversation

alemrtv
Copy link

@alemrtv alemrtv commented Nov 10, 2024

  • add the --context-value command line flag to pass arbitrary key value pairs to the evaluation context

Fixes #1435

Follow-up Tasks

  • adjust the integration test to include this flag

How to test

issue the flagd start command with the -X flag and provide key value pairs like:
flagd start -X name=jane -X age=31 or flagd start --context-value name=jane --context-value age=31

alemrtv and others added 11 commits November 10, 2024 19:12
Signed-off-by: Aleksei Muratov <[email protected]>
Signed-off-by: Aleksei Muratov <[email protected]>
…ure#1442)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [google.golang.org/grpc](https://redirect.github.com/grpc/grpc-go) |
`v1.67.1` -> `v1.68.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgrpc/v1.68.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fgrpc/v1.68.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fgrpc/v1.67.1/v1.68.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgrpc/v1.67.1/v1.68.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>grpc/grpc-go (google.golang.org/grpc)</summary>

###
[`v1.68.0`](https://redirect.github.com/grpc/grpc-go/releases/tag/v1.68.0):
Release 1.68.0

[Compare
Source](https://redirect.github.com/grpc/grpc-go/compare/v1.67.1...v1.68.0)

### Behavior Changes

- stats/opentelemetry/csm: Get mesh_id local label from "CSM_MESH_ID"
environment variable, rather than parsing from bootstrap file
([#&#8203;7740](https://redirect.github.com/grpc/grpc-go/issues/7740))
- orca (experimental): if using an ORCA listener, it must now be
registered only on a READY SubConn, and the listener will automatically
be stopped when the connection is lost.
([#&#8203;7663](https://redirect.github.com/grpc/grpc-go/issues/7663))
- client: `ClientConn.Close()` now closes transports simultaneously and
waits for transports to be closed before returning.
([#&#8203;7666](https://redirect.github.com/grpc/grpc-go/issues/7666))
- credentials: TLS credentials created via `NewTLS` that use
`tls.Config.GetConfigForClient` will now have CipherSuites, supported
TLS versions and ALPN configured automatically. These were previously
only set for configs not using the `GetConfigForClient` option.
([#&#8203;7709](https://redirect.github.com/grpc/grpc-go/issues/7709))

### Bug Fixes

- transport: prevent deadlock in client transport shutdown when writing
the GOAWAY frame hangs.
([#&#8203;7662](https://redirect.github.com/grpc/grpc-go/issues/7662))
- mem: reuse buffers more accurately by using slice capacity instead of
length
([#&#8203;7702](https://redirect.github.com/grpc/grpc-go/issues/7702))
- Special Thanks:
[@&#8203;PapaCharlie](https://redirect.github.com/PapaCharlie)
- status: Fix regression caused by
[#&#8203;6919](https://redirect.github.com/grpc/grpc-go/issues/6919) in
status.Details() causing it to return a wrapped type when getting proto
messages generated with protoc-gen-go < v1.
- Special Thanks:
[@&#8203;Clement-Jean](https://redirect.github.com/Clement-Jean)

### Dependencies

- Bump minimum supported Go version to `go1.22.7`.
([#&#8203;7624](https://redirect.github.com/grpc/grpc-go/issues/7624))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-feature/flagd).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS43LjEiLCJ1cGRhdGVkSW5WZXIiOiIzOS43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#1443)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| golang.org/x/crypto | `v0.28.0` -> `v0.29.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fcrypto/v0.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fcrypto/v0.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fcrypto/v0.28.0/v0.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fcrypto/v0.28.0/v0.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-feature/flagd).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS43LjEiLCJ1cGRhdGVkSW5WZXIiOiIzOS43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| golang.org/x/mod | `v0.21.0` -> `v0.22.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fmod/v0.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fmod/v0.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fmod/v0.21.0/v0.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fmod/v0.21.0/v0.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-feature/flagd).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS43LjEiLCJ1cGRhdGVkSW5WZXIiOiIzOS43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| golang.org/x/sync | `v0.8.0` -> `v0.9.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fsync/v0.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fsync/v0.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fsync/v0.8.0/v0.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fsync/v0.8.0/v0.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-feature/flagd).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS43LjEiLCJ1cGRhdGVkSW5WZXIiOiIzOS43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| golang.org/x/net | `v0.30.0` -> `v0.31.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fnet/v0.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fnet/v0.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fnet/v0.30.0/v0.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fnet/v0.30.0/v0.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-feature/flagd).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS43LjEiLCJ1cGRhdGVkSW5WZXIiOiIzOS43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[go.opentelemetry.io/otel](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v1.31.0` -> `v1.32.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v1.31.0` -> `v1.32.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlpmetric%2fotlpmetricgrpc/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlpmetric%2fotlpmetricgrpc/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlpmetric%2fotlpmetricgrpc/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlpmetric%2fotlpmetricgrpc/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[go.opentelemetry.io/otel/exporters/otlp/otlptrace](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v1.31.0` -> `v1.32.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlptrace/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlptrace/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlptrace/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlptrace/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v1.31.0` -> `v1.32.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlptrace%2fotlptracegrpc/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlptrace%2fotlptracegrpc/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlptrace%2fotlptracegrpc/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel%2fexporters%2fotlp%2fotlptrace%2fotlptracegrpc/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[go.opentelemetry.io/otel/exporters/prometheus](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v0.53.0` -> `v0.54.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel%2fexporters%2fprometheus/v0.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel%2fexporters%2fprometheus/v0.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel%2fexporters%2fprometheus/v0.53.0/v0.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel%2fexporters%2fprometheus/v0.53.0/v0.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[go.opentelemetry.io/otel/metric](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v1.31.0` -> `v1.32.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel%2fmetric/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel%2fmetric/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel%2fmetric/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel%2fmetric/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[go.opentelemetry.io/otel/sdk](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v1.31.0` -> `v1.32.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel%2fsdk/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel%2fsdk/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel%2fsdk/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel%2fsdk/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[go.opentelemetry.io/otel/sdk/metric](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v1.31.0` -> `v1.32.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel%2fsdk%2fmetric/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel%2fsdk%2fmetric/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel%2fsdk%2fmetric/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel%2fsdk%2fmetric/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[go.opentelemetry.io/otel/trace](https://redirect.github.com/open-telemetry/opentelemetry-go)
| `v1.31.0` -> `v1.32.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fotel%2ftrace/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.opentelemetry.io%2fotel%2ftrace/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.opentelemetry.io%2fotel%2ftrace/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fotel%2ftrace/v1.31.0/v1.32.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>open-telemetry/opentelemetry-go
(go.opentelemetry.io/otel)</summary>

###
[`v1.32.0`](https://redirect.github.com/open-telemetry/opentelemetry-go/releases/tag/v1.32.0):
/v0.54.0/v0.8.0/v0.0.11

[Compare
Source](https://redirect.github.com/open-telemetry/opentelemetry-go/compare/v1.31.0...v1.32.0)

#### Overview

##### Added

- Add `go.opentelemetry.io/otel/sdk/metric/exemplar.AlwaysOffFilter`,
which can be used to disable exemplar recording.
([#&#8203;5850](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5850))
- Add `go.opentelemetry.io/otel/sdk/metric.WithExemplarFilter`, which
can be used to configure the exemplar filter used by the metrics SDK.
([#&#8203;5850](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5850))
- Add `ExemplarReservoirProviderSelector` and
`DefaultExemplarReservoirProviderSelector` to
`go.opentelemetry.io/otel/sdk/metric`, which defines the exemplar
reservoir to use based on the aggregation of the metric.
([#&#8203;5861](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5861))
- Add `ExemplarReservoirProviderSelector` to
`go.opentelemetry.io/otel/sdk/metric.Stream` to allow using views to
configure the exemplar reservoir to use for a metric.
([#&#8203;5861](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5861))
- Add `ReservoirProvider`, `HistogramReservoirProvider` and
`FixedSizeReservoirProvider` to
`go.opentelemetry.io/otel/sdk/metric/exemplar` to make it convenient to
use providers of Reservoirs.
([#&#8203;5861](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5861))
-   The `go.opentelemetry.io/otel/semconv/v1.27.0` package.
The package contains semantic conventions from the `v1.27.0` version of
the OpenTelemetry Semantic Conventions.
([#&#8203;5894](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5894))
- Add `Attributes attribute.Set` field to `Scope` in
`go.opentelemetry.io/otel/sdk/instrumentation`.
([#&#8203;5903](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5903))
- Add `Attributes attribute.Set` field to `ScopeRecords` in
`go.opentelemetry.io/otel/log/logtest`.
([#&#8203;5927](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5927))
- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` adds
instrumentation scope attributes.
([#&#8203;5934](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5934))
- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp` adds
instrumentation scope attributes.
([#&#8203;5934](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5934))
- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`
adds instrumentation scope attributes.
([#&#8203;5935](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5935))
- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`
adds instrumentation scope attributes.
([#&#8203;5935](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5935))
- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` adds
instrumentation scope attributes.
([#&#8203;5933](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5933))
- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` adds
instrumentation scope attributes.
([#&#8203;5933](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5933))
- `go.opentelemetry.io/otel/exporters/prometheus` adds instrumentation
scope attributes in `otel_scope_info` metric as labels.
([#&#8203;5932](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5932))

##### Changed

- Support scope attributes and make them as identifying for `Tracer` in
`go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/trace`.
([#&#8203;5924](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5924))
- Support scope attributes and make them as identifying for `Meter` in
`go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/metric`.
([#&#8203;5926](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5926))
- Support scope attributes and make them as identifying for `Logger` in
`go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/log`.
([#&#8203;5925](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5925))
- Make schema URL and scope attributes as identifying for `Tracer` in
`go.opentelemetry.io/otel/bridge/opentracing`.
([#&#8203;5931](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5931))
- Clear unneeded slice elements to allow GC to collect the objects in
`go.opentelemetry.io/otel/sdk/metric` and
`go.opentelemetry.io/otel/sdk/trace`.
([#&#8203;5804](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5804))

##### Fixed

- Global MeterProvider registration unwraps global instrument Observers,
the undocumented Unwrap() methods are now private.
([#&#8203;5881](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5881))
- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`
now keeps the metadata already present in the context when `WithHeaders`
is used.
([#&#8203;5892](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5892))
- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` now
keeps the metadata already present in the context when `WithHeaders` is
used.
([#&#8203;5911](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5911))
- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` now
keeps the metadata already present in the context when `WithHeaders` is
used.
([#&#8203;5915](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5915))
- Fix `go.opentelemetry.io/otel/exporters/prometheus` trying to add
exemplars to Gauge metrics, which is unsupported.
([#&#8203;5912](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5912))
- Fix `WithEndpointURL` to always use a secure connection when an https
URL is passed in
`go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`.
([#&#8203;5944](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5944))
- Fix `WithEndpointURL` to always use a secure connection when an https
URL is passed in
`go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`.
([#&#8203;5944](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5944))
- Fix `WithEndpointURL` to always use a secure connection when an https
URL is passed in
`go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`.
([#&#8203;5944](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5944))
- Fix `WithEndpointURL` to always use a secure connection when an https
URL is passed in
`go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`.
([#&#8203;5944](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5944))
- Fix incorrect metrics generated from callbacks when multiple readers
are used in `go.opentelemetry.io/otel/sdk/metric`.
([#&#8203;5900](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5900))

##### Removed

- Remove all examples under `go.opentelemetry.io/otel/example` as they
are moved to [Contrib
repository](https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/tree/main/examples).
([#&#8203;5930](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/5930))

#### What's Changed

- Allow configuring the exemplar filter on the metrics SDK by
[@&#8203;dashpole](https://redirect.github.com/dashpole) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5850](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5850)
- chore(deps): update lycheeverse/lychee-action action to v2.0.1 by
[@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5884](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5884)
- Run the test compatibility check even if tests failed by
[@&#8203;dmathieu](https://redirect.github.com/dmathieu) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5879](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5879)
- chore(deps): update lycheeverse/lychee-action action to v2.0.2 by
[@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5885](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5885)
- fix(deps): update module github.com/prometheus/client_golang to
v1.20.5 by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5886](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5886)
- chore(deps): update googleapis to
[`796eee8`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/796eee8)
by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5888](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5888)
- Remove company from emeritus by
[@&#8203;dmathieu](https://redirect.github.com/dmathieu) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5887](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5887)
- Add selector of exemplar reservoir providers to metric.Stream
configuration by
[@&#8203;dashpole](https://redirect.github.com/dashpole) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5861](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5861)
- otel: conceal unwrapping for global async instrument registration by
[@&#8203;jmacd](https://redirect.github.com/jmacd) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5881](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5881)
- Generate `semconv/v1.27.0` by
[@&#8203;MrAlias](https://redirect.github.com/MrAlias) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5894](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5894)
- otlpmetricgrpc: Keep metadata for gRPC in context by
[@&#8203;mrasu](https://redirect.github.com/mrasu) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5892](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5892)
- Cleanup interaction of exemplar and aggregation by
[@&#8203;dashpole](https://redirect.github.com/dashpole) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5899](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5899)
- chore(deps): update googleapis to
[`324edc3`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/324edc3)
by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5908](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5908)
- \[chore] Use errors.Join to unify errors by
[@&#8203;MrAlias](https://redirect.github.com/MrAlias) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5907](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5907)
- \[chore] Remove unnecessary type declaration in templated transforms
by [@&#8203;MrAlias](https://redirect.github.com/MrAlias) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5906](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5906)
- Keep metadata for gRPC in context for log signal by
[@&#8203;RocooHash](https://redirect.github.com/RocooHash) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5911](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5911)
- chore(deps): update benchmark-action/github-action-benchmark action to
v1.20.4 by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5916](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5916)
- Revert Cleanup interaction of exemplar and aggregation by
[@&#8203;XSAM](https://redirect.github.com/XSAM) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5913](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5913)
- Allow additional context to be added when WithHeaders is used in OTLP
gRPC traces exporter by
[@&#8203;pree-dew](https://redirect.github.com/pree-dew) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5915](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5915)
- Fix exemplars being added to gauge metrics in the prometheus exporter
by [@&#8203;trthomps](https://redirect.github.com/trthomps) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5912](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5912)
- Switch arm builds out of actuated and into the CNCF runners by
[@&#8203;dmathieu](https://redirect.github.com/dmathieu) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5923](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5923)
- fix(deps): update module github.com/prometheus/common to v0.60.1 by
[@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5919](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5919)
- Add Cheng-Zhen as a triager by
[@&#8203;dmathieu](https://redirect.github.com/dmathieu) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5922](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5922)
- sdk/instrumentation: Add Attributes to Scope by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5903](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5903)
- Make scope attributes as identifying for Tracer by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5924](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5924)
- Make scope attributes as identifying for Meter by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5926](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5926)
- Make scope attributes as identifying for Logger by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5925](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5925)
- log/logtest: Add Attributes to ScopeRecords by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5927](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5927)
- opentracing: Make schemaURL and scope attributes as identifying for
Tracer by [@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5931](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5931)
- otlptrace: Add instrumentation scope attributes by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5934](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5934)
- otlpmetric: Add instrumentation scope attributes by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5935](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5935)
- otlplog: Add instrumentation scope attributes by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5933](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5933)
- Remove examples by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5930](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5930)
- docs: updating outdated comments by
[@&#8203;codeboten](https://redirect.github.com/codeboten) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5940](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5940)
- chore(deps): update module github.com/grpc-ecosystem/grpc-gateway/v2
to v2.23.0 by [@&#8203;renovate](https://redirect.github.com/renovate)
in
[https://github.com/open-telemetry/opentelemetry-go/pull/5939](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5939)
- prometheus: Refactor getAttrs by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5937](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5937)
- chore(deps): update googleapis to
[`dd2ea8e`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/dd2ea8e)
by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5943](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5943)
- log: Update package documentation by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5942](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5942)
- prometheus: Add instrumentation scope attributes to otel_scope_info by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5932](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5932)
- fix(deps): update github.com/opentracing-contrib/go-grpc digest to
[`d08aa2b`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/d08aa2b)
by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5945](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5945)
- Override insecure when endpoint URL is set by
[@&#8203;sevaorlov](https://redirect.github.com/sevaorlov) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5944](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5944)
- fix(deps): update module go.opentelemetry.io/build-tools/gotmpl to
v0.15.0 by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5949](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5949)
- fix(deps): update module go.opentelemetry.io/build-tools/crosslink to
v0.15.0 by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5948](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5948)
- fix(deps): update module go.opentelemetry.io/build-tools/semconvgen to
v0.15.0 by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5953](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5953)
- fix(deps): update github.com/opentracing-contrib/go-grpc digest to
[`e3cbcab`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/e3cbcab)
by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5952](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5952)
- chore(deps): update lycheeverse/lychee-action action to v2.1.0 by
[@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5950](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5950)
- fix(deps): update module go.opentelemetry.io/build-tools/multimod to
v0.15.0 by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5951](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5951)
- Fix incorrect metrics getting generated from multiple readers by
[@&#8203;pree-dew](https://redirect.github.com/pree-dew) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5900](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5900)
- Allow GC to collect unneeded slice elements by
[@&#8203;ash2k](https://redirect.github.com/ash2k) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5804](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5804)
- chore(deps): update golang.org/x by
[@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5957](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5957)
- fix(deps): update module github.com/opentracing-contrib/go-grpc to
v0.1.0 by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5958](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5958)
- fix(deps): update github.com/opentracing-contrib/go-grpc/test digest
to
[`51a56c3`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/51a56c3)
by [@&#8203;renovate](https://redirect.github.com/renovate) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5959](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5959)
- Release v1.32.0/v0.54.0/v0.8.0/v0.0.11 by
[@&#8203;pellared](https://redirect.github.com/pellared) in
[https://github.com/open-telemetry/opentelemetry-go/pull/5960](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5960)

#### New Contributors

- [@&#8203;mrasu](https://redirect.github.com/mrasu) made their first
contribution in
[https://github.com/open-telemetry/opentelemetry-go/pull/5892](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5892)
- [@&#8203;RocooHash](https://redirect.github.com/RocooHash) made their
first contribution in
[https://github.com/open-telemetry/opentelemetry-go/pull/5911](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5911)
- [@&#8203;trthomps](https://redirect.github.com/trthomps) made their
first contribution in
[https://github.com/open-telemetry/opentelemetry-go/pull/5912](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5912)
- [@&#8203;sevaorlov](https://redirect.github.com/sevaorlov) made their
first contribution in
[https://github.com/open-telemetry/opentelemetry-go/pull/5944](https://redirect.github.com/open-telemetry/opentelemetry-go/pull/5944)

**Full Changelog**:
open-telemetry/opentelemetry-go@v1.31.0...v1.32.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-feature/flagd).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS43LjEiLCJ1cGRhdGVkSW5WZXIiOiIzOS43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Aleksei Muratov <[email protected]>
Signed-off-by: Aleksei Muratov <[email protected]>
@alemrtv alemrtv requested a review from a team as a code owner November 10, 2024 18:34
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Nov 10, 2024
Copy link

netlify bot commented Nov 10, 2024

Deploy Preview for polite-licorice-3db33c canceled.

Name Link
🔨 Latest commit ea7c818
🔍 Latest deploy log https://app.netlify.com/sites/polite-licorice-3db33c/deploys/6748cbe594f8460008d93422

@alemrtv alemrtv changed the title Feat/add context value flag feat: add context value flag Nov 10, 2024
@beeme1mr
Copy link
Member

Hey @alemrtv, sorry for the delay on the review. I'll take a look as soon as possible.

Signed-off-by: Aleksei Muratov <[email protected]>
@@ -167,13 +173,22 @@ func (s *FlagEvaluationService) ResolveBoolean(
) (*connect.Response[evalV1.ResolveBooleanResponse], error) {
sCtx, span := s.flagEvalTracer.Start(ctx, "resolveBoolean", trace.WithSpanKind(trace.SpanKindServer))
defer span.End()

evalCtx := map[string]any{}
if e := req.Msg.GetContext(); e != nil {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The context provided during the evaluation (from the client) has a higher priority than the one provided via config flags (aka the consumer wins if there are conflicts). Hence we should add the req.Msg.GetContext() values to the s.contextValues. Wdyt?

Copy link
Member

@aepfli aepfli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. Those changes look great from my perspective. I added a few remarks for ease of maintenance, which would also reduce the size of this PR, and the lines changed.

I don't have reviewer power here ;( but those are really good changes and improvements; thank you.

Comment on lines 184 to 190
evalCtx := map[string]any{}
if e := req.Msg.GetContext(); e != nil {
evalCtx = e.AsMap()
}
for k, v := range s.contextValues {
evalCtx[k] = v
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code block exists multiple times; changing how we populate the context means we must touch several parts of the code. We should extract this into our method for easier maintenance and effortless changes.

Furthermore, I think it is worth moving this code block into the resolve method and handling it once before resolving the flag.

context := map[string]any{}
if res, ok := request.Context.(map[string]any); ok {
context = res
} else {
log.WarnWithID(requestID, "provided context does not comply with flagd, continuing ignoring the context")
}

for k, v := range contextValues {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same topic regarding prioritization

flagd/cmd/start.go Outdated Show resolved Hide resolved
Signed-off-by: Aleksei Muratov <[email protected]>
Signed-off-by: Aleksei Muratov <[email protected]>
// resolve is a generic flag resolver
func resolve[T constraints](ctx context.Context, logger *logger.Logger, resolver resolverSignature[T], flagKey string,
evaluationContext *structpb.Struct, resp response[T], metrics telemetry.IMetricsRecorder,
configContextValues map[string]any,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i do not think that we need here another value, we are merging the values with the context already on line https://github.com/open-feature/flagd/pull/1448/files#diff-65826bb36f80a7e210128a2d3493c29be6f6c6f9487feae242eccbbc61c74c4fR75 - can we simply provide the result of the other line as evaluationcontext. like

evalCtx := map[string]any{}
	if e := req.Msg.GetContext(); e != nil {
		evalCtx = e.AsMap()
	}

       // add values to evalCtx here (deleted code from link) and pass only the evalCtx with all the information

	values, err := s.eval.ResolveAllValues(sCtx, reqID, evalCtx)

Or access s.contextValues within this method and merge in here. But i do not see the need for an additional mergeContext, seems like we are doing this twice now.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, but I'm confused. To me it looks like there're 2 different use cases: ResolveAll and the generic resolve. And these don't seem to be called at the same time. So there're two places where we need to handle it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My bad, you are totally right sorry

@toddbaert
Copy link
Member

Hey @alemrtv ! Sorry for the delayed review... Many of us were away with Kubecon and still playing catch up. I'll review this next week, latest. 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size:L This PR changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE] Support addition of arbitrary properties in evaluation context
4 participants