chore: Reorganize import structure to align with compatibility expectations#374
Merged
chore: Reorganize import structure to align with compatibility expectations#374
Conversation
In the previous setup, we would only check the fallback or recovery conditions once the synchronizer returned an update. If the synchronizer was stuck, or nothing was changing in the environment, we would never check the conditions. This configuration also exposed an interesting behavior. If the synchronizer cannot connect, it will emit error updates. Each time we receive an error, we check if we have failed to initialize for the last 10 seconds. If so, we re-create the primary synchronizer. When it continues to fail, the first update will trigger the condition check. And since it has still failed for 10 seconds, it will immediately error out. With this change, we can be assured a synchronizer is given at least 10 seconds to try before the condition is evaluated.
jsonbailey
approved these changes
Nov 19, 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.
Note
Consolidates FDv2 types into ldclient.interfaces, introduces datasystem builder APIs (with optional FDv1 fallback), updates polling/streaming and file/test data sources, and refreshes FDv2 system/persistence and tests.
Selector,ChangeSet,Basis,Update,Initializer,Synchronizer,EventName,ObjectKind, etc.) intoldclient.interfaces; update imports across modules.ldclient.impl.datasystem.protocolv2to data payload types (PutObject,DeleteObject,Goodbye,Error).ldclient/datasystem.py):ConfigBuilderwithinitializers,synchronizers,fdv1_compatible_synchronizer, anddata_store.default,streaming,polling, andcustompresets; exposepolling_ds_builder,streaming_ds_builder, andfdv1_fallback_ds_builder.Initializer/Synchronizer; support env ID propagation and FDv1 fallback via headers (_LD_ENVID_HEADER,_LD_FD_FALLBACK_HEADER).impl/datasourcev2/status.py; inline status handling where used.FDv2to include inlined data source/store status providers, persistent store wrapper, outage recovery, and synchronizer fallback/recovery logic (including FDv1 fallback path).FDv1/FDv2implementDataSystem.Files.new_data_source_v2builder and implement file-based FDv2 initializer/synchronizer.contract-tests/client_entity.pyto useldclient.datasystembuilders and configure optional FDv1 fallback.Initializer/Synchronizerfromldclient.interfaces; keepDataSystemConfigas the shared config carrier.Written by Cursor Bugbot for commit 48c99a7. This will update automatically on new commits. Configure here.