Skip to content

Commit 8bcf51e

Browse files
committed
add docs for blocking init, custom timeout, non blocking
1 parent 5f4cb82 commit 8bcf51e

File tree

1 file changed

+58
-6
lines changed
  • content/en/feature_flags/setup/server

1 file changed

+58
-6
lines changed

content/en/feature_flags/setup/server/go.md

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,10 @@ This guide explains how to install and enable the SDK, create an OpenFeature cli
2424

2525
Before setting up the Go Feature Flags SDK, ensure you have:
2626

27-
- **Go 1.23 or later**
2827
- **Datadog Agent 7.55 or later** with [Remote Configuration][2] enabled
29-
- **Datadog Go tracer** (`dd-trace-go/v2`) installed and configured
28+
- **Datadog Go tracer** `dd-trace-go` version 2.4.0 or later
3029

31-
Set the following environment variables to enable feature flags:
30+
Set the following environment variables:
3231

3332
{{< code-block lang="bash" >}}
3433
# Required: Enable the feature flags provider
@@ -57,11 +56,14 @@ go get github.com/open-feature/go-sdk/openfeature
5756

5857
Start the Datadog tracer and register the Datadog OpenFeature provider. The tracer must be started first because it enables Remote Configuration, which delivers flag configurations to your application.
5958

59+
### Blocking initialization
60+
61+
Use `SetProviderAndWait` to block until the initial flag configuration is received. This ensures flags are ready before your application starts handling requests.
62+
6063
{{< code-block lang="go" >}}
6164
package main
6265

6366
import (
64-
"context"
6567
"log"
6668

6769
"github.com/DataDog/dd-trace-go/v2/ddtrace/tracer"
@@ -81,16 +83,66 @@ func main() {
8183
}
8284
defer provider.Shutdown()
8385

84-
// Register the provider with OpenFeature and wait for initialization
86+
// Register the provider and wait for initialization (default 30s timeout)
8587
if err := openfeature.SetProviderAndWait(provider); err != nil {
8688
log.Fatalf("Failed to set provider: %v", err)
8789
}
8890

91+
// Create the OpenFeature client
92+
client := openfeature.NewClient("my-service")
93+
8994
// Your application code here
9095
}
9196
{{< /code-block >}}
9297

93-
<div class="alert alert-info"><code>SetProviderAndWait</code> blocks until the initial flag configuration is received from Remote Config. This can take a few seconds on first startup.</div>
98+
To specify a custom timeout, use `SetProviderAndWaitWithContext`:
99+
100+
{{< code-block lang="go" >}}
101+
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
102+
defer cancel()
103+
104+
if err := openfeature.SetProviderAndWaitWithContext(ctx, provider); err != nil {
105+
log.Fatalf("Failed to set provider: %v", err)
106+
}
107+
{{< /code-block >}}
108+
109+
### Non-blocking initialization
110+
111+
Use `SetProvider` to register the provider without waiting. Flag evaluations return default values until the configuration is received.
112+
113+
{{< code-block lang="go" >}}
114+
package main
115+
116+
import (
117+
"log"
118+
119+
"github.com/DataDog/dd-trace-go/v2/ddtrace/tracer"
120+
ddopenfeature "github.com/DataDog/dd-trace-go/v2/openfeature"
121+
"github.com/open-feature/go-sdk/openfeature"
122+
)
123+
124+
func main() {
125+
// Start the Datadog tracer (enables Remote Config)
126+
tracer.Start()
127+
defer tracer.Stop()
128+
129+
// Create the Datadog OpenFeature provider
130+
provider, err := ddopenfeature.NewDatadogProvider(ddopenfeature.ProviderConfig{})
131+
if err != nil {
132+
log.Fatalf("Failed to create provider: %v", err)
133+
}
134+
defer provider.Shutdown()
135+
136+
// Register the provider without waiting
137+
openfeature.SetProvider(provider)
138+
139+
// Create the OpenFeature client
140+
client := openfeature.NewClient("my-service")
141+
142+
// Your application code here
143+
// Flag evaluations return defaults until configuration is received
144+
}
145+
{{< /code-block >}}
94146

95147
## Create a client
96148

0 commit comments

Comments
 (0)