Skip to content

feat: add internal BigSegmentsBuilder + config struct#541

Merged
beekld merged 4 commits into
mainfrom
beeklimt/SDK-2364
Jun 2, 2026
Merged

feat: add internal BigSegmentsBuilder + config struct#541
beekld merged 4 commits into
mainfrom
beeklimt/SDK-2364

Conversation

@beekld

@beekld beekld commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Internal-only plumbing for Big Segments configuration: a private BigSegmentsBuilder (under src/config/builders/) that produces a public built::BigSegmentsConfig. No ConfigBuilder method yet, so this isn't reachable from customer code.

Test plan

  • 9/9 new BigSegmentsBuilderTest cases pass

Note

Low Risk
New internal config types and builder only; no client wiring or evaluation behavior changes yet, with behavior locked by unit tests.

Overview
Adds internal Big Segments configuration plumbing: a public built::BigSegmentsConfig value type and a private BigSegmentsBuilder under src/config/builders/ that resolves store pointer, LRU cache size/TTL, metadata poll interval, and stale-after threshold.

Build() applies spec defaults (e.g. 1000 cache entries, 5s cache/poll, 2min stale), coerces zero/negative durations back to defaults, and clamps status_poll_interval to stale_after when poll would be slower than staleness detection. A null store is allowed for “not configured.” CMake picks up the new built header glob and big_segments_builder.cpp; nine unit tests cover defaults, setters, coercion, clamping, and repeatability. There is still no ConfigBuilder hook—customer-facing wiring is not in this diff.

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

@beekld beekld marked this pull request as ready for review May 29, 2026 02:06
@beekld beekld requested a review from a team as a code owner May 29, 2026 02:06
@beekld beekld merged commit 3c88c2a into main Jun 2, 2026
50 of 51 checks passed
@beekld beekld deleted the beeklimt/SDK-2364 branch June 2, 2026 17:05
@github-actions github-actions Bot mentioned this pull request Jun 2, 2026
beekld pushed a commit that referenced this pull request Jun 29, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>launchdarkly-cpp-client: 3.11.2</summary>

##
[3.11.2](launchdarkly-cpp-client-v3.11.1...launchdarkly-cpp-client-v3.11.2)
(2026-06-29)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-internal bumped from 0.13.0 to 0.14.0
    * @launchdarkly/cpp-common bumped from 1.11.0 to 1.12.0
    * @launchdarkly/cpp-sse-client bumped from 0.6.1 to 0.7.0
</details>

<details><summary>launchdarkly-cpp-common: 1.12.0</summary>

##
[1.12.0](launchdarkly-cpp-common-v1.11.0...launchdarkly-cpp-common-v1.12.0)
(2026-06-29)


### Features

* expose Big Segments via public Client and Config APIs
([#552](#552))
([c5fd239](c5fd239))
</details>

<details><summary>launchdarkly-cpp-internal: 0.14.0</summary>

##
[0.14.0](launchdarkly-cpp-internal-v0.13.0...launchdarkly-cpp-internal-v0.14.0)
(2026-06-29)


### Features

* add internal BigSegmentStoreWrapper with caching and status polling
([#543](#543))
([47fa5c2](47fa5c2))
* orchestrator switches to FDv1 fallback on directive
([#539](#539))
([44f2522](44f2522))


### Bug Fixes

* FDv2 fixes surfaced by v3 contract test harness
([#547](#547))
([e9c3c04](e9c3c04))
* handle FDv2 intentCode none as listening, reject unknown codes
([#555](#555))
([42e8ecd](42e8ecd))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-common bumped from 1.11.0 to 1.12.0
</details>

<details><summary>launchdarkly-cpp-server: 3.11.0</summary>

##
[3.11.0](launchdarkly-cpp-server-v3.10.1...launchdarkly-cpp-server-v3.11.0)
(2026-06-29)


### Features

* add FDv1AdapterSynchronizer wrapping IDataSynchronizer as
IFDv2Synchronizer
([#540](#540))
([d6368b8](d6368b8))
* add FDv2 configuration builder
([#545](#545))
([43850ce](43850ce))
* add IBigSegmentStore interface + Redis and DynamoDB stores
([#536](#536))
([136aca7](136aca7))
* add internal BigSegmentsBuilder + config struct
([#541](#541))
([3c88c2a](3c88c2a))
* add internal BigSegmentStoreWrapper with caching and status polling
([#543](#543))
([47fa5c2](47fa5c2))
* add server FDv2 data system orchestrator
([#529](#529))
([65e110f](65e110f))
* add X-LaunchDarkly-Instance-Id header to server SDK (SDK-2353)
([#532](#532))
([fd0c761](fd0c761))
* evaluate big segments
([#550](#550))
([505ee46](505ee46))
* expose Big Segments via public Client and Config APIs
([#552](#552))
([c5fd239](c5fd239))
* orchestrator switches to FDv1 fallback on directive
([#539](#539))
([44f2522](44f2522))
* propagate FDv1 fallback directive from FDv2 polling and streaming
sources ([#538](#538))
([edd96fe](edd96fe))


### Bug Fixes

* FDv2 fixes surfaced by v3 contract test harness
([#547](#547))
([e9c3c04](e9c3c04))
* stop accumulating WhenAny continuations on the Conditions aggregate
([#562](#562))
([5f8bf79](5f8bf79))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-internal bumped from 0.13.0 to 0.14.0
    * @launchdarkly/cpp-common bumped from 1.11.0 to 1.12.0
    * @launchdarkly/cpp-sse-client bumped from 0.6.1 to 0.7.0
</details>

<details><summary>launchdarkly-cpp-server-dynamodb-source:
0.2.0</summary>

##
[0.2.0](launchdarkly-cpp-server-dynamodb-source-v0.1.0...launchdarkly-cpp-server-dynamodb-source-v0.2.0)
(2026-06-29)


### Features

* add IBigSegmentStore interface + Redis and DynamoDB stores
([#536](#536))
([136aca7](136aca7))
* add internal BigSegmentStoreWrapper with caching and status polling
([#543](#543))
([47fa5c2](47fa5c2))
* implement DynamoDBDataSource + tests
([#534](#534))
([a0c2790](a0c2790))
* scaffold libs/server-sdk-dynamodb-source
([#533](#533))
([df386c1](df386c1))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-server bumped from 3.10.1 to 3.11.0
</details>

<details><summary>launchdarkly-cpp-server-otel: 0.1.2</summary>

##
[0.1.2](launchdarkly-cpp-server-otel-v0.1.1...launchdarkly-cpp-server-otel-v0.1.2)
(2026-06-29)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-server bumped from 3.10.1 to 3.11.0
</details>

<details><summary>launchdarkly-cpp-server-redis-source: 2.3.0</summary>

##
[2.3.0](launchdarkly-cpp-server-redis-source-v2.2.2...launchdarkly-cpp-server-redis-source-v2.3.0)
(2026-06-29)


### Features

* add IBigSegmentStore interface + Redis and DynamoDB stores
([#536](#536))
([136aca7](136aca7))
* add internal BigSegmentStoreWrapper with caching and status polling
([#543](#543))
([47fa5c2](47fa5c2))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-server bumped from 3.10.1 to 3.11.0
</details>

<details><summary>launchdarkly-cpp-sse-client: 0.7.0</summary>

##
[0.7.0](launchdarkly-cpp-sse-client-v0.6.1...launchdarkly-cpp-sse-client-v0.7.0)
(2026-06-29)


### Features

* propagate FDv1 fallback directive from FDv2 polling and streaming
sources ([#538](#538))
([edd96fe](edd96fe))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> The diff is mechanical versioning and changelog updates only;
functional risk is whatever shipped in prior commits now being tagged,
not new logic in this PR.
> 
> **Overview**
> This PR is a **Release Please** cut that updates
`.release-please-manifest.json`, workspace `package.json` dependency
pins, CMake `VERSION` lines, embedded SDK version strings, version
assertion tests, and **CHANGELOG** entries—no feature or bugfix code
appears in the diff itself.
> 
> The release packages **server SDK 3.11.0** (FDv2 orchestration/config,
FDv1 fallback from streaming/polling, big-segment evaluation and public
APIs, Redis/DynamoDB `IBigSegmentStore`, `X-LaunchDarkly-Instance-Id`),
plus **client 3.11.2** and bumps for **common 1.12.0**, **internal
0.14.0**, **SSE 0.7.0**, **redis-source 2.3.0**, **dynamodb-source
0.2.0**, and **otel 0.1.2**.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
48e3593. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

2 participants