feat(gcp): add parameter manager support#1808
Conversation
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
…til/java-sdk-contrib into feat/gcp-parameter-manager Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
1. add location id to options as gcp params require location 2. fixed parameter manager classes to use common gcp classes post refactor Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
There was a problem hiding this comment.
Code Review
This pull request introduces support for Google Cloud Parameter Manager by refactoring the existing GCP provider into a shared AbstractGcpProvider base class and adding the new GcpParameterManagerProvider. It also updates the sample applications, setup/teardown scripts, and tests to support both Secret Manager and Parameter Manager backends. Feedback on these changes highlights several issues: locationId in GcpProviderOptions needs a default value of "global" to prevent null pointer exceptions; the Parameter Manager setup script contains broken update and versioning logic; redundant log statements should be cleaned up; synchronizing on this during blocking network calls creates a performance bottleneck; and the teardown script's deletion chaining is risky and should be decoupled.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
… of creating new versoin2. locationId default to prevent null pointers3. update references to stale GcpParameterManagerOptions Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
…of this ffor performance reasons Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Mahesh Patil <17205424+mahpatil@users.noreply.github.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
…til/java-sdk-contrib into feat/gcp-parameter-manager Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
Signed-off-by: Mahesh Patil <maheshfinity@gmail.com>
|
@toddbaert @aepfli this now adds parameter manager support to gcp provider. |
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
| log.debug("Fetching from cache name '{}'", key); | ||
| return cached.get(); | ||
| } | ||
| synchronized (cache) { |
There was a problem hiding this comment.
Two related things:
-
cacheis reassigned ininitialize()(line 39) but used as the lock infetchWithCache(line 105). Callinitialize()twice and readers end up holding different locks. (FlagCache.getalso locks internally, so the outersynchronizedis partly redundant.) -
Nothing stops
initialize()from being called twice, if I'm reading correctly... if it is, the first client just leaks. The convention elsewhere in this repo is to guard with anAtomicBooleanand throwGeneralError("already initialized").
Aadd the guard, and make cache final (or use a dedicated lock) to fix both... and maybe add a test. WDYT?
| * @throws GeneralError for any other GCP API error | ||
| */ | ||
| private String fetchFromGcp(String secretName) { | ||
| protected String fetchFromGcp(String secretName) { |
There was a problem hiding this comment.
The catch (Exception e) below drops the cause; sibling GcpParameterManagerProvider#fetchFromGcp keeps it. Let's stay consistent and preserve it (helps when debugging GCP errors).
|
Approving; pushed a small fixup to revert the manual version bumps (release-please owns those) and wire samples/gcp/pom.xml into the release-please config so the sample's dep version bumps automatically. Also opened 2 recommendations... this one in particular I'd really like to see done before release (unless I'm missing something). Once this is merged, I can merge the pending "release please" PR, which will release the package. |
This PR
Adds a GCP Parameter Manager support to the GCP Provider that reads feature flags from GCP Parameter Manager config.
Includes updates to sample application under samples/gcp/ with setup/teardown script
Package: providers/gcp
Class: GcpParameterManagerProvider
Supports all OpenFeature flag types via structured or plain-text secret values
Configurable poll interval and GCP project settings
Related Issues
Fixes GCP services covered under #1420
Notes
This builds on top of the previous PR that added support for GCP Secret manager.
Follow-up Tasks
How to test