Skip to content

Commit 2a48f77

Browse files
authored
Merge branch 'main' into rd/hooks/otel
2 parents 1dfb148 + f74c0c3 commit 2a48f77

File tree

12 files changed

+843
-138
lines changed

12 files changed

+843
-138
lines changed

.gitmodules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
[submodule "providers/flagd/flagd-testbed"]
55
path = providers/flagd/flagd-testbed
66
url = https://github.com/open-feature/flagd-testbed.git
7+
branch = v2.11.1

providers/flagd/e2e/inprocess_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ func TestInProcessProviderE2E(t *testing.T) {
2525
"./",
2626
}
2727

28-
// Run tests with in-process specific tags - exclude connection/event issues we won't tackle
29-
tags := "@in-process && ~@unixsocket && ~@metadata && ~@grace && ~@customCert && ~@reconnect && ~@contextEnrichment && ~@sync-payload && ~@events"
28+
// Run tests with in-process specific tags
29+
tags := "@in-process && ~@unixsocket && ~@metadata && ~@customCert && ~@contextEnrichment && ~@sync-payload"
3030

3131
if err := runner.RunGherkinTestsWithSubtests(t, featurePaths, tags); err != nil {
3232
t.Fatalf("Gherkin tests failed: %v", err)

providers/flagd/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ require (
5353
github.com/compose-spec/compose-go/v2 v2.9.0 // indirect
5454
github.com/containerd/console v1.0.5 // indirect
5555
github.com/containerd/containerd/api v1.9.0 // indirect
56-
github.com/containerd/containerd/v2 v2.1.4 // indirect
56+
github.com/containerd/containerd/v2 v2.1.5 // indirect
5757
github.com/containerd/continuity v0.4.5 // indirect
5858
github.com/containerd/errdefs v1.0.0 // indirect
5959
github.com/containerd/errdefs/pkg v0.3.0 // indirect

providers/flagd/pkg/configuration.go

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ package flagd
33
import (
44
"errors"
55
"fmt"
6-
"os"
7-
"strconv"
8-
"strings"
9-
106
"github.com/go-logr/logr"
117
"github.com/open-feature/flagd/core/pkg/sync"
128
"github.com/open-feature/go-sdk-contrib/providers/flagd/internal/cache"
139
"github.com/open-feature/go-sdk-contrib/providers/flagd/internal/logger"
1410
"google.golang.org/grpc"
11+
"os"
12+
"strconv"
13+
"strings"
1514
)
1615

1716
type ResolverType string
@@ -26,6 +25,7 @@ const (
2625
defaultCache = cache.LRUValue
2726
defaultHost = "localhost"
2827
defaultResolver = rpc
28+
defaultGracePeriod = 5
2929

3030
rpc ResolverType = "rpc"
3131
inProcess ResolverType = "in-process"
@@ -44,6 +44,7 @@ const (
4444
flagdSourceSelectorEnvironmentVariableName = "FLAGD_SOURCE_SELECTOR"
4545
flagdOfflinePathEnvironmentVariableName = "FLAGD_OFFLINE_FLAG_SOURCE_PATH"
4646
flagdTargetUriEnvironmentVariableName = "FLAGD_TARGET_URI"
47+
flagdGracePeriodVariableName = "FLAGD_RETRY_GRACE_PERIOD"
4748
)
4849

4950
type ProviderConfiguration struct {
@@ -64,6 +65,7 @@ type ProviderConfiguration struct {
6465
CustomSyncProvider sync.ISync
6566
CustomSyncProviderUri string
6667
GrpcDialOptionsOverride []grpc.DialOption
68+
RetryGracePeriod int
6769

6870
log logr.Logger
6971
}
@@ -77,6 +79,7 @@ func newDefaultConfiguration(log logr.Logger) *ProviderConfiguration {
7779
MaxCacheSize: defaultMaxCacheSize,
7880
Resolver: defaultResolver,
7981
Tls: defaultTLS,
82+
RetryGracePeriod: defaultGracePeriod,
8083
}
8184

8285
p.updateFromEnvVar()
@@ -224,6 +227,14 @@ func (cfg *ProviderConfiguration) updateFromEnvVar() {
224227
if targetUri := os.Getenv(flagdTargetUriEnvironmentVariableName); targetUri != "" {
225228
cfg.TargetUri = targetUri
226229
}
230+
if gracePeriod := os.Getenv(flagdGracePeriodVariableName); gracePeriod != "" {
231+
if seconds, err := strconv.Atoi(gracePeriod); err == nil {
232+
cfg.RetryGracePeriod = seconds
233+
} else {
234+
// Handle parsing error
235+
cfg.log.Error(err, fmt.Sprintf("invalid grace period '%s'", gracePeriod))
236+
}
237+
}
227238

228239
}
229240

@@ -397,3 +408,10 @@ func WithGrpcDialOptionsOverride(grpcDialOptionsOverride []grpc.DialOption) Prov
397408
p.GrpcDialOptionsOverride = grpcDialOptionsOverride
398409
}
399410
}
411+
412+
// WithRetryGracePeriod allows to set a time window for the transition from stale to error state
413+
func WithRetryGracePeriod(gracePeriod int) ProviderOption {
414+
return func(p *ProviderConfiguration) {
415+
p.RetryGracePeriod = gracePeriod
416+
}
417+
}

providers/flagd/pkg/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ func NewProvider(opts ...ProviderOption) (*Provider, error) {
7373
CustomSyncProvider: provider.providerConfiguration.CustomSyncProvider,
7474
CustomSyncProviderUri: provider.providerConfiguration.CustomSyncProviderUri,
7575
GrpcDialOptionsOverride: provider.providerConfiguration.GrpcDialOptionsOverride,
76+
RetryGracePeriod: provider.providerConfiguration.RetryGracePeriod,
7677
})
7778
default:
7879
service = process.NewInProcessService(process.Configuration{

0 commit comments

Comments
 (0)