Skip to content

feat: add support for usePost option for FDv2 - #411

Open
joker23 wants to merge 1 commit into
mainfrom
skz/sdk-3336/add-use-post
Open

joker23 wants to merge 1 commit into
mainfrom
skz/sdk-3336/add-use-post

Conversation

@joker23

@joker23 joker23 commented Oct 16, 2026 •

Copy link
Copy Markdown

Summary

  • Adds a usePost option (default false) to HttpConfigurationBuilder. When the FDv2 data system is configured, polling and streaming requests use POST with the evaluation context JSON in the request body instead of GET with the base64url context in the URL path. This keeps the context out of URL-based request logs and CDN logs.
  • The FDv1 fallback synchronizer sends REPORT when usePost is enabled, because the FDv1 endpoints do not support POST.
  • useReport no longer affects FDv2 requests. The SDK logs one warning when it is set together with the data system. Legacy (non-data-system) FDv1 behavior is unchanged.
  • Contract tests: the test service declares the client-use-post capability, maps the harness's clientSide.usePost parameter, and the v3 harness is bumped to v3.2.0-alpha.10 (the release that added the POST test variants). The bump also pulls in stricter events-redaction tests that expose a pre-existing bug in launchdarkly-java-sdk-internal (attribute names containing / are not escaped as attribute references in redactedAttributes). The three affected test groups are suppressed in testharness-suppressions-fdv2.txt and tracked by SDK-3338; the suppressions should be removed when that fix ships.

Implements CSFDV2 Requirement 2.1.3 (usePost option) and 2.1.4 (useReport ignored with a warning under the FDv2 configuration).

Verified locally: full unit suite (752 tests) green; contract tests green on an emulator (v2 suite, and v3 at v3.2.0-alpha.10 with the suppressions above - all POST variants pass).


Note

Overview
Adds a usePost HTTP option (default off) so that when the FDv2 data system is enabled, polling and streaming send the evaluation context in a POST body instead of a GET URL with a base64 context segment—keeping context out of URL/CDN logs. FDv2 paths that previously used REPORT under useReport now use POST; ETag/If-None-Match caching stays on GET only.

With the data system, useReport no longer changes FDv2 traffic; the builder logs a one-time warning that requests stay GET unless usePost is on. FDv1 fallback still has no POST endpoint, so enabling usePost maps to REPORT with a body there.

Contract testing advertises client-use-post, wires harness clientSide.usePost, and bumps the v3 harness to v3.2.0-alpha.10. Three new v3 event-redaction cases are suppressed pending an internal SDK fix (SDK-3338).

Reviewed by Cursor Bugbot for commit 913ef16. Bugbot is set up for automated code reviews on this repo. Configure here.

@joker23
joker23 marked this pull request as ready for review October 27, 2026 16:19
@joker23
joker23 requested a review from a team as a code owner October 27, 2026 16:19

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Devin Review: 1 security issue and 1 flag

Not posted on this PR by your GitHub settings — view them in Devin Review. (Configure)

Devin Review

@joker23
joker23 force-pushed the skz/sdk-3336/add-use-post branch from 913ef16 to c7f406c Compare October 28, 2026 15:11

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant