Skip to content

feat: Add Chronon online and offline store integrations#6188

Draft
franciscojavierarceo wants to merge 3 commits intofeast-dev:masterfrom
franciscojavierarceo:chronon
Draft

feat: Add Chronon online and offline store integrations#6188
franciscojavierarceo wants to merge 3 commits intofeast-dev:masterfrom
franciscojavierarceo:chronon

Conversation

@franciscojavierarceo
Copy link
Copy Markdown
Member

Summary

This adds an in-tree optional Chronon integration to Feast and wires a Chronon-specific CI path for it.

The initial integration includes:

  • ChrononOnlineStore for online reads through the Chronon feature service
  • ChrononOfflineStore and ChrononSource for Chronon-backed offline retrieval from materialized outputs
  • ChrononProvider registration so Chronon can be selected as a Feast provider/store type
  • unit and integration coverage for the Chronon source/store implementations
  • a live-service Chronon integration test that exercises Feast against a real local Chronon service
  • a PR workflow that builds Chronon quickstart/service artifacts, boots Mongo + Chronon, and runs the live-service Feast test

Notable details

A couple of issues only showed up once this was tested against the real Chronon service:

  • the Feast Chronon client needed to use Chronon's actual HTTP prefix: /v1/features/...
  • join/groupby names need to be fully URL-encoded, so quickstart/training_set.v2 becomes quickstart%2Ftraining_set.v2

Those fixes are included here.

Testing

Ran locally:

  • uv run pytest -c sdk/python/pytest.ini sdk/python/tests/unit/infra/online_stores/chronon_online_store/test_chronon_online_store.py -q
  • uv run pytest -c sdk/python/pytest.ini sdk/python/tests/unit/infra/offline_stores/contrib/chronon_offline_store/test_chronon_source.py -q
  • uv run pytest -c sdk/python/pytest.ini sdk/python/tests/integration/online_store/test_chronon_online_store.py sdk/python/tests/integration/offline_store/test_chronon_offline_store.py --integration -q
  • JAVA_BIN=/opt/homebrew/opt/openjdk/bin/java infra/scripts/chronon/start-local-chronon-service.sh
  • CHRONON_SERVICE_URL=http://127.0.0.1:9000 uv run pytest -c sdk/python/pytest.ini sdk/python/tests/integration/online_store/test_chronon_online_store_real_service.py --integration -q
  • infra/scripts/chronon/stop-local-chronon-service.sh

Follow-ups

Open questions for follow-up PRs:

  • whether ChrononProvider should stay as a thin passthrough or take on materialization/job orchestration
  • whether the Chronon bootstrap should be optimized in CI with artifact caching or a prebuilt image instead of source builds
  • how much of the offline path should stay constrained to Chronon materialized outputs vs. broader historical retrieval support

@franciscojavierarceo franciscojavierarceo changed the title Add Chronon online and offline store integrations feat: Add Chronon online and offline store integrations Mar 27, 2026
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