[sdk/local-evaluation] Duplicate identity override entries silently drop feature overrides
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 68/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 静か
- 技術スタック
- nodejs, typescript
- 領域
- backend
調査の方向性
getIdentityFlags で使用されるローカル評価パスから始め、1 つの識別子に対する重複した identity_overrides エントリがどのように表現されるかを追跡します。some_feature と mv_feature を別々のエントリとして含む payload を再現し、環境のデフォルトにフォールバックするのではなく、両方の override と有効状態が返されることを確認します。
索引モデルが issue の本文から書いたものです。
説明
Problem
When an environment document returned by the Flagsmith API contains more than one entry in identity_overrides sharing the same identifier, the SDK keeps only the last entry for that identifier during local evaluation. Any identity_features defined on the earlier entries are discarded, so the corresponding flags fall back to the environment default instead of the configured override.
For example, given an environment payload like:
{
"identity_overrides": [
{
"identifier": "multi-override-id",
"identity_features": [
{
"feature": { "name": "some_feature" },
"feature_state_value": "override-from-first-entry",
"enabled": false
}
]
},
{
"identifier": "multi-override-id",
"identity_features": [
{
"feature": { "name": "mv_feature" },
"feature_state_value": "override-from-second-entry",
"enabled": true
}
]
}
]
}
Calling getIdentityFlags('multi-override-id') with local evaluation enabled returns the override for mv_feature only. some_feature resolves to its environment default, as if the first entry never existed.
Impact
Any identifier whose overrides arrive split across multiple identity_overrides entries gets the wrong flag values during server-side local evaluation. The breakage is silent (no warning, no error) and deterministic for a given payload, so affected identifiers stay broken on every request until the environment payload changes shape.
Reproduction
- Use an environment whose
identity_overridesarray contains two entries with the sameidentifier, each carrying a different feature inidentity_features(e.g. entry A overridessome_feature, entry B overridesmv_feature). - Initialise the SDK with
enableLocalEvaluation: trueand callgetIdentityFlags('<that-identifier>'). - Observed: only the features from the last entry are applied.
some_featureresolves to its environment default instead of"override-from-first-entry". - Expected: both
some_featureandmv_featureresolve to their respective override values and enabled states.
- 主要言語
- TypeScript
- スター
- 30
- フォーク
- 27
- 平均マージ
- 20時間 52分
- マージ済み PR(30日)
- 6
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Flagsmith/flagsmith-nodejs-client のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 65/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
-
Dependency Dashboard オープン
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
Flagsmith/flagsmith-nodejs-client#273 · コメント 1 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
Flagsmith/flagsmith-nodejs-client の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
mksglu/context-mode#1200 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
anthropics/claude-code#96687 ·
-
good first issue
難易度 1/5 1時間未満 初心者へのやさしさ 95/100
AOSSIE-Org/DebateAI#582 · コメント 2 件 ·