Skip to content

Conversation

@kinyoklion
Copy link
Member

@kinyoklion kinyoklion commented Jan 20, 2026

  • Connects the FDv2 Data System configuration to the implementation.
  • Moves away from IComponentConfigurer to a specific builder interface for FDv2 Data Sources.
  • Updates initialization to support both initializers/synchronizers instead of data sources.

Note

FDv2 data system wiring and builder refactor

  • Implemented FDv2DataSystem to construct store, broadcasters, and DataSourceUpdatesImpl, and to build/run FDv2 initializers/synchronizers via new factory wrappers
  • Added server-side DataSystemComponents exposing builders: pollingInitializer(), pollingSynchronizer(), streamingSynchronizer(); kept FDv1 fallback via Components.pollingDataSource()
  • Replaced generic ComponentConfigurer<DataSource> with specific DataSourceBuilder<Initializer|Synchronizer> and introduced DataSourceBuilderContext; updated DataSystemBuilder, DataSystemConfiguration, and DataSystemModes
  • Updated FDv2DataSource to use DataSourceUpdateSinkV2 and apply CHANGE_SETs during initialization/synchronization; manages active source lifecycle
  • Changed selector query to basis in DefaultFDv2Requestor and StreamingSynchronizerImpl (removed version/state params)
  • Added SelectorSourceFacade to read selectors from the transactional store
  • Removed old integrations DataSystemComponents and updated/expanded tests to the new APIs and basis query behavior

Written by Cursor Bugbot for commit 38f90c2. This will update automatically on new commits. Configure here.

@kinyoklion kinyoklion changed the base branch from main to rlamb/streaming-synchronizer January 20, 2026 17:52
Copy link
Member Author

Choose a reason for hiding this comment

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

This file is a move because of package boundaries. Not sure how we want them to shake out.

The HttpConfig -> HttpProperties I think was the missing component, and moving that around created further complications.

Copy link
Member Author

Choose a reason for hiding this comment

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

This was a mistake in the implementation. So both polling and streaming have this update.

}
}

private void runInitializers() {
Copy link
Member Author

Choose a reason for hiding this comment

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

I moved this for better logical organization.

Copy link
Member Author

Choose a reason for hiding this comment

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

Still lots of work to do here. Outside the scope of this PR.

FDv2SourceResult result = initializer.run().get();
switch (result.getResultType()) {
case CHANGE_SET:
dataSourceUpdates.apply(result.getChangeSet());
Copy link
Member Author

Choose a reason for hiding this comment

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

Actual change to the method. Apply the data.

@kinyoklion kinyoklion force-pushed the rlamb/connect-data-source-configurations branch from 59273f2 to 47e30b9 Compare January 20, 2026 18:48
this.readOnlyStore = new ReadonlyStoreFacade(store);
}

private static class FactoryWrapper<TDataSource> implements FDv2DataSource.DataSourceFactory<TDataSource> {
Copy link
Member Author

Choose a reason for hiding this comment

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

The FDv2 Data Source doesn't know anything about the dependencies. So this provides a parameter-less build method.

@kinyoklion
Copy link
Member Author

bugbot review

cursor[bot]

This comment was marked as outdated.

@kinyoklion kinyoklion marked this pull request as ready for review January 20, 2026 21:10
@kinyoklion kinyoklion requested a review from a team as a code owner January 20, 2026 21:10
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

DataStoreUpdatesImpl dataStoreUpdates = new DataStoreUpdatesImpl(
EventBroadcasterImpl.forDataStoreStatus(clientContext.sharedExecutor, logger));

InMemoryDataStore store = new InMemoryDataStore();
Copy link

Choose a reason for hiding this comment

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

Persistent store configuration silently ignored in FDv2DataSystem

Medium Severity

The FDv2DataSystem.create() method always creates an InMemoryDataStore and never uses dataSystemConfiguration.getPersistentStore() or dataSystemConfiguration.getPersistentDataStoreMode(). Users who configure daemon mode or persistent store mode via DataSystemModes.daemon() or DataSystemModes.persistentStore() will find their persistent store configuration silently ignored, with data stored only in memory instead of the configured persistent store.

Fix in Cursor Fix in Web

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