Skip to content

Commit e22a25a

Browse files
committed
revert: drop v1/legacy bulk disabled-handling
v1 (and the legacy/Old service) use proto3 scalar fields that can't omit Value on the wire. Single-flag already emits zero values alongside reason=DISABLED; making bulk specially-omit Value via the oneof was inconsistent with the single-flag behavior and added complexity. Just let bulk include disabled flags with zero values + reason=DISABLED, matching single-flag. v2 and OFREP retain proper omission (they have the means to omit). Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
1 parent e14d68a commit e22a25a

3 files changed

Lines changed: 0 additions & 51 deletions

File tree

flagd/pkg/service/flag-evaluation/flag_evaluator.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,6 @@ func (s *OldFlagEvaluationService) ResolveAll(
9090
// register the impression and reason for each flag evaluated
9191
s.metrics.RecordEvaluation(ctx, value.Error, value.Reason, value.Variant, value.FlagKey)
9292

93-
if value.Reason == model.DisabledReason {
94-
res.Flags[value.FlagKey] = &schemaV1.AnyFlag{
95-
Reason: value.Reason,
96-
}
97-
continue
98-
}
99-
10093
switch v := value.Value.(type) {
10194
case bool:
10295
res.Flags[value.FlagKey] = &schemaV1.AnyFlag{

flagd/pkg/service/flag-evaluation/flag_evaluator_v1.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"connectrpc.com/connect"
1111
"github.com/open-feature/flagd/core/pkg/evaluator"
1212
"github.com/open-feature/flagd/core/pkg/logger"
13-
"github.com/open-feature/flagd/core/pkg/model"
1413
"github.com/open-feature/flagd/core/pkg/service"
1514
"github.com/open-feature/flagd/core/pkg/store"
1615
"github.com/open-feature/flagd/core/pkg/telemetry"
@@ -92,18 +91,6 @@ func (s *FlagEvaluationService) ResolveAll(
9291
for _, resolved := range resolutions {
9392
// register the impression and reason for each flag evaluated
9493
s.metrics.RecordEvaluation(ctx, resolved.Error, resolved.Reason, resolved.Variant, resolved.FlagKey)
95-
if resolved.Reason == model.DisabledReason {
96-
metadata, err := structpb.NewStruct(resolved.Metadata)
97-
if err != nil {
98-
s.logger.WarnWithID(reqID, fmt.Sprintf("error resolving all flags: %v", err))
99-
return nil, fmt.Errorf("error resolving flags. Tracking ID: %s", reqID)
100-
}
101-
res.Flags[resolved.FlagKey] = &evalV1.AnyFlag{
102-
Reason: resolved.Reason,
103-
Metadata: metadata,
104-
}
105-
continue
106-
}
10794
switch v := resolved.Value.(type) {
10895
case bool:
10996
res.Flags[resolved.FlagKey] = &evalV1.AnyFlag{

flagd/pkg/service/flag-evaluation/flag_evaluator_v1_test.go

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,37 +19,6 @@ import (
1919
"google.golang.org/protobuf/types/known/structpb"
2020
)
2121

22-
func TestConnectServiceV2_ResolveAll_DisabledFlagHasMetadata(t *testing.T) {
23-
ctrl := gomock.NewController(t)
24-
eval := mock.NewMockIEvaluator(ctrl)
25-
eval.EXPECT().ResolveAllValues(gomock.Any(), gomock.Any(), gomock.Any()).Return(
26-
[]evaluator.AnyValue{
27-
{
28-
Reason: model.DisabledReason,
29-
FlagKey: "disabled-flag",
30-
Metadata: model.Metadata{
31-
"scope": "my-app",
32-
},
33-
},
34-
},
35-
model.Metadata{},
36-
nil,
37-
).AnyTimes()
38-
39-
metrics, _ := getMetricReader()
40-
s := NewFlagEvaluationService(logger.NewLogger(nil, false), eval, &eventingConfiguration{}, metrics, nil, nil, 0)
41-
42-
got, err := s.ResolveAll(context.Background(), connect.NewRequest(&evalV1.ResolveAllRequest{}))
43-
require.NoError(t, err)
44-
45-
flag, ok := got.Msg.Flags["disabled-flag"]
46-
require.True(t, ok, "disabled flag missing from ResolveAll response")
47-
require.Equal(t, model.DisabledReason, flag.Reason)
48-
require.Nil(t, flag.Value, "disabled flag must not carry a value")
49-
require.NotNil(t, flag.Metadata, "disabled flag must propagate per-flag metadata")
50-
require.Equal(t, "my-app", flag.Metadata.Fields["scope"].GetStringValue())
51-
}
52-
5322
func TestConnectServiceV2_ResolveAll(t *testing.T) {
5423
tests := map[string]struct {
5524
req *evalV1.ResolveAllRequest

0 commit comments

Comments
 (0)