chore: Initial structure and implementation of FDv2 datasystem#356
Merged
chore: Initial structure and implementation of FDv2 datasystem#356
Conversation
keelerm84
commented
Oct 21, 2025
| Builder = Callable[[], T] | ||
|
|
||
|
|
||
| @dataclass(frozen=True) |
| assert valid.change_set.intent_code == IntentCode.TRANSFER_FULL | ||
|
|
||
|
|
||
| # def test_swallows_goodbye(events): # pylint: disable=redefined-outer-name |
Member
Author
There was a problem hiding this comment.
These tests don't really make sense in a polling context as they aren't sent then.
| self._data_system = FDv1(self._config) | ||
| # Provide flag evaluation function for value-change tracking | ||
| self._data_system.set_flag_value_eval_fn( | ||
| self._data_system.set_flag_value_eval_fn( # type: ignore |
Member
Author
There was a problem hiding this comment.
These ignores are because the data system protocol doesn't expose these methods, but both fdv1 and fdv2 implementations do. So we have to tell the linter to trust us in a few places.
kinyoklion
reviewed
Oct 30, 2025
| # Wait for all threads to complete | ||
| for thread in self._threads: | ||
| if thread.is_alive(): | ||
| thread.join(timeout=5.0) # 5 second timeout |
Member
There was a problem hiding this comment.
Envious of join with timeout. Do we need to log anything in the timeout case? (Though the is_alive thing really feels questionable, so maybe not.)
kinyoklion
approved these changes
Oct 30, 2025
keelerm84
added a commit
that referenced
this pull request
Nov 19, 2025
keelerm84
added a commit
that referenced
this pull request
Nov 19, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There is still a lot of work to be done to get this functional, but this gives us some shape to the remaining tasks.
Note
Introduce experimental FDv2 data system (store, polling/streaming, status) with new DataSystemConfig and integrate selection into client; update protocols/APIs and tests.
FDv2data system; selectsFDv1whenconfig.datasystem_configis absent, otherwiseFDv2(honorsoffline).data_availability.at_least(DataAvailability.CACHED).data_store_status_provider,data_source_status_provider,flag_tracker,store) and passes diagnostic accumulator.ldclient.impl.datasystem.fdv2.FDv2with initializer/synchronizer orchestration, fallback/recovery logic, availability, and threading.Storefor FDv2 handling apply/commit, selector, dependency tracking, and flag change notifications.datasourcev2.status.DataSourceStatusProviderImpl.datasourcev2.pollinganddatasourcev2.streaming: exposenameproperty; implement sync/fetch behaviors and error handling.InitializerandSynchronizernow requirenameproperty; add toStreamingDataSourceand test data source.DataSystemConfigdataclass added toldclient.configplusdatasystem_configfield onConfig.impl/datasystem/config.pybuilder now producesDataSystemConfig; supports default/streaming/polling/custom setups.data_availabilitycomputed dynamically based on processor/store state.nameproperty, expanded error cases);Written by Cursor Bugbot for commit a5d7c72. This will update automatically on new commits. Configure here.