fix: Thread safe Clickhouse offline store#5710
Merged
franciscojavierarceo merged 5 commits intofeast-dev:masterfrom Nov 4, 2025
Merged
Conversation
…terialization logic (calling it) Signed-off-by: lukas.valatka <lukas.valatka@cast.ai>
Signed-off-by: lukas.valatka <lukas.valatka@cast.ai>
HaoXuAI
pushed a commit
that referenced
this pull request
Nov 12, 2025
* add pull_all_from_table_or_query for clickhouse, to align with new materialization logic (calling it) Signed-off-by: lukas.valatka <lukas.valatka@cast.ai> * make sure get client is thread-local, since client is thread-unsafe Signed-off-by: lukas.valatka <lukas.valatka@cast.ai> * cleanup Signed-off-by: lukas.valatka <lukas.valatka@cast.ai> --------- Signed-off-by: lukas.valatka <lukas.valatka@cast.ai> Co-authored-by: lukas.valatka <lukas.valatka@cast.ai>
franciscojavierarceo
pushed a commit
that referenced
this pull request
Nov 13, 2025
# [0.57.0](v0.56.0...v0.57.0) (2025-11-13) ### Bug Fixes * Improve trino to feast type mapping with (real,varchar,timestamp,decimal) ([#5691](#5691)) ([f855ad2](f855ad2)) * Materialize API - ODFV views not looked-up (thinks views non existant) - crashes materialize ([#5716](#5716)) ([1b050b3](1b050b3)) * Support historical feature retrieval with start_date/end_date in RemoteOfflineStore ([#5703](#5703)) ([ad32756](ad32756)) * Thread safe Clickhouse offline store ([#5710](#5710)) ([5f446ed](5f446ed)) ### Features * Add annotations to cronjob CRDs ([#5701](#5701)) ([be6e6c2](be6e6c2)) * Add batch commit mode for MySQL OnlineStore ([#5699](#5699)) ([3cfe4eb](3cfe4eb)) * Add possibility to materialize only latest values, to increase performance ([#5713](#5713)) ([8d77b72](8d77b72)) * Support table format: Iceberg, Delta, and Hudi ([#5650](#5650)) ([2915ad1](2915ad1))
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.
What this PR does / why we need it:
PR adjusts the Clickhouse offline store to be thread safe. Issue with the current implementation results in the issue as follows:
raise ProgrammingError('Attempt to execute concurrent queries within the same session.'if you bombard it -
feast serve- with concurrent requests, the under the hood threadpool is more than 1 thread by default (arbitrary number decided by uvicorn).as per Clickhouse docs here:
Solution - using threading.local() we can initialize a per-thread container for variables, to make sure we re-use the client on subsequent calls. Can we just drop the caching? Not really, unless the store is heavily refactored.
Which issue(s) this PR fixes:
No issue raised yet.
Misc