Skip to content

Commit 310ab51

Browse files
feat: Add hybrid to ValidOfflineStoreDBStorePersistenceTypes for HybridOfflineStore support (#6707)
The Feast SDK supports HybridOfflineStore, which routes offline operations to different backends based on each FeatureView's batch_source, but the operator's FeatureStore CRD did not allow type: hybrid in the offline store persistence enum, blocking configuration via the CR. Mirrors the online store fix in #5810: - Register hybrid in OFFLINE_STORE_CLASS_FOR_TYPE so the type resolves to HybridOfflineStore (the SDK map previously had this only for the online store). - Add hybrid to the offline DB store enum and ValidOfflineStoreDBStorePersistenceTypes in both api/v1 and api/v1alpha1, and regenerate the CRD manifests (config/crd/bases, dist/install.yaml, bundle/manifests). - Update the offline hybrid doc to use the short type: hybrid form. Fixes #6701 Signed-off-by: Sanskar Singh <sanskarsinghty1234@gmail.com> Co-authored-by: Nikhil Kathole <nikhilkathole2683@gmail.com>
1 parent aa7b685 commit 310ab51

8 files changed

Lines changed: 19 additions & 4 deletions

File tree

.secrets.baseline

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/offline-stores/hybrid.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ project: my_feature_repo
1818
registry: data/registry.db
1919
provider: local
2020
offline_store:
21-
type: hybrid_offline_store.HybridOfflineStore
21+
type: hybrid
2222
offline_stores:
2323
- type: spark
2424
conf:

infra/feast-operator/api/v1/featurestore_types.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ var ValidOfflineStoreFilePersistenceTypes = []string{
528528
// OfflineStoreDBStorePersistence configures the DB store persistence for the offline store service
529529
type OfflineStoreDBStorePersistence struct {
530530
// Type of the persistence type you want to use.
531-
// +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;athena;mssql;couchbase.offline;clickhouse;ray;oracle
531+
// +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;athena;mssql;couchbase.offline;clickhouse;ray;oracle;hybrid
532532
Type string `json:"type"`
533533
// Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed.
534534
SecretRef corev1.LocalObjectReference `json:"secretRef"`
@@ -549,6 +549,7 @@ var ValidOfflineStoreDBStorePersistenceTypes = []string{
549549
"clickhouse",
550550
"ray",
551551
"oracle",
552+
"hybrid",
552553
}
553554

554555
// OnlineStore configures the online store service

infra/feast-operator/api/v1alpha1/featurestore_types.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ var ValidOfflineStoreFilePersistenceTypes = []string{
337337
// OfflineStoreDBStorePersistence configures the DB store persistence for the offline store service
338338
type OfflineStoreDBStorePersistence struct {
339339
// Type of the persistence type you want to use.
340-
// +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;athena;mssql;couchbase.offline;clickhouse;ray
340+
// +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;athena;mssql;couchbase.offline;clickhouse;ray;hybrid
341341
Type string `json:"type"`
342342
// Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed.
343343
SecretRef corev1.LocalObjectReference `json:"secretRef"`
@@ -357,6 +357,7 @@ var ValidOfflineStoreDBStorePersistenceTypes = []string{
357357
"couchbase.offline",
358358
"clickhouse",
359359
"ray",
360+
"hybrid",
360361
}
361362

362363
// OnlineStore configures the online store service

infra/feast-operator/bundle/manifests/feast.dev_featurestores.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1893,6 +1893,7 @@ spec:
18931893
- clickhouse
18941894
- ray
18951895
- oracle
1896+
- hybrid
18961897
type: string
18971898
required:
18981899
- secretRef
@@ -8235,6 +8236,7 @@ spec:
82358236
- clickhouse
82368237
- ray
82378238
- oracle
8239+
- hybrid
82388240
type: string
82398241
required:
82408242
- secretRef
@@ -13795,6 +13797,7 @@ spec:
1379513797
- couchbase.offline
1379613798
- clickhouse
1379713799
- ray
13800+
- hybrid
1379813801
type: string
1379913802
required:
1380013803
- secretRef
@@ -18316,6 +18319,7 @@ spec:
1831618319
- couchbase.offline
1831718320
- clickhouse
1831818321
- ray
18322+
- hybrid
1831918323
type: string
1832018324
required:
1832118325
- secretRef

infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1893,6 +1893,7 @@ spec:
18931893
- clickhouse
18941894
- ray
18951895
- oracle
1896+
- hybrid
18961897
type: string
18971898
required:
18981899
- secretRef
@@ -8235,6 +8236,7 @@ spec:
82358236
- clickhouse
82368237
- ray
82378238
- oracle
8239+
- hybrid
82388240
type: string
82398241
required:
82408242
- secretRef
@@ -13795,6 +13797,7 @@ spec:
1379513797
- couchbase.offline
1379613798
- clickhouse
1379713799
- ray
13800+
- hybrid
1379813801
type: string
1379913802
required:
1380013803
- secretRef
@@ -18316,6 +18319,7 @@ spec:
1831618319
- couchbase.offline
1831718320
- clickhouse
1831818321
- ray
18322+
- hybrid
1831918323
type: string
1832018324
required:
1832118325
- secretRef

infra/feast-operator/dist/install.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1901,6 +1901,7 @@ spec:
19011901
- clickhouse
19021902
- ray
19031903
- oracle
1904+
- hybrid
19041905
type: string
19051906
required:
19061907
- secretRef
@@ -8243,6 +8244,7 @@ spec:
82438244
- clickhouse
82448245
- ray
82458246
- oracle
8247+
- hybrid
82468248
type: string
82478249
required:
82488250
- secretRef
@@ -13803,6 +13805,7 @@ spec:
1380313805
- couchbase.offline
1380413806
- clickhouse
1380513807
- ray
13808+
- hybrid
1380613809
type: string
1380713810
required:
1380813811
- secretRef
@@ -18324,6 +18327,7 @@ spec:
1832418327
- couchbase.offline
1832518328
- clickhouse
1832618329
- ray
18330+
- hybrid
1832718331
type: string
1832818332
required:
1832918333
- secretRef

sdk/python/feast/repo_config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
"clickhouse": "feast.infra.offline_stores.contrib.clickhouse_offline_store.clickhouse.ClickhouseOfflineStore",
109109
"ray": "feast.infra.offline_stores.contrib.ray_offline_store.ray.RayOfflineStore",
110110
"oracle": "feast.infra.offline_stores.contrib.oracle_offline_store.oracle.OracleOfflineStore",
111+
"hybrid": "feast.infra.offline_stores.hybrid_offline_store.HybridOfflineStore",
111112
}
112113

113114
FEATURE_SERVER_CONFIG_CLASS_FOR_TYPE = {

0 commit comments

Comments
 (0)