Skip to content

Commit 7a27217

Browse files
committed
Merge branch 'master' into feat/spark-application-compute-engine
2 parents 4d49be9 + 3f6359d commit 7a27217

28 files changed

Lines changed: 342 additions & 554 deletions

.github/workflows/publish.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,16 @@ on:
2929
token:
3030
description: 'Personal Access Token'
3131
required: true
32-
default: ""
3332
type: string
3433
publish_ui:
3534
description: 'Publish to NPM?'
3635
required: true
37-
default: true
3836
type: boolean
3937

38+
permissions:
39+
contents: read
40+
id-token: write
41+
4042
jobs:
4143
publish-python-sdk:
4244
uses: ./.github/workflows/publish_python_sdk.yml

.github/workflows/publish_web_ui.yml

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,6 @@
11
name: publish web ui
22

33
on:
4-
workflow_dispatch: # Allows manual trigger of the workflow
5-
inputs:
6-
current_version:
7-
description: 'Current version to bump from (e.g., v1.2.3). If not provided, will auto-detect from git tags'
8-
required: false
9-
type: string
10-
custom_version: # Optional input for a custom version
11-
description: 'Custom version to publish (e.g., v1.2.3) -- only edit if you know what you are doing'
12-
required: false
13-
type: string
14-
token:
15-
description: 'Personal Access Token'
16-
required: false
17-
default: ""
18-
type: string
19-
publish_ui:
20-
description: 'Publish to NPM?'
21-
required: true
22-
default: true
23-
type: boolean
244
workflow_call: # Allows trigger of the workflow from another workflow
255
inputs:
266
current_version:
@@ -39,16 +19,17 @@ on:
3919
publish_ui:
4020
description: 'Publish to NPM?'
4121
required: true
42-
default: true
4322
type: boolean
4423

24+
permissions:
25+
contents: read
26+
id-token: write
27+
4528
jobs:
4629
publish-web-ui-npm:
4730
if: github.repository == 'feast-dev/feast'
4831
runs-on: ubuntu-latest
49-
env:
50-
# This publish is working using an NPM automation token to bypass 2FA
51-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
32+
environment: production
5233
steps:
5334
- uses: actions/checkout@v4
5435
- name: Determine current version
@@ -108,8 +89,10 @@ jobs:
10889
- name: Setup Node.js
10990
uses: actions/setup-node@v4
11091
with:
111-
node-version-file: './ui/.nvmrc'
92+
node-version: '22.14.0'
11293
registry-url: 'https://registry.npmjs.org'
94+
- name: Update npm for trusted publishing
95+
run: npm install --global npm@11.5.1
11396
- name: Bump file versions (temporarily for Web UI publish)
11497
if: github.event.inputs.custom_version != ''
11598
env:
@@ -137,6 +120,3 @@ jobs:
137120
working-directory: ./ui
138121
if: github.event.inputs.publish_ui != 'false'
139122
run: npm publish
140-
env:
141-
# This publish is working using an NPM automation token to bypass 2FA
142-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.secrets.baseline

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,7 @@ type OnlineStoreFilePersistence struct {
626626
// OnlineStoreDBStorePersistence configures the DB store persistence for the online store service
627627
type OnlineStoreDBStorePersistence struct {
628628
// Type of the persistence type you want to use.
629-
// +kubebuilder:validation:Enum=snowflake.online;redis;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase.online;milvus;hybrid;mongodb;aerospike
629+
// +kubebuilder:validation:Enum=snowflake.online;redis;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase.online;milvus;hybrid;mongodb;aerospike;scylladb
630630
Type string `json:"type"`
631631
// Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed.
632632
SecretRef corev1.LocalObjectReference `json:"secretRef"`
@@ -653,6 +653,7 @@ var ValidOnlineStoreDBStorePersistenceTypes = []string{
653653
"hybrid",
654654
"mongodb",
655655
"aerospike",
656+
"scylladb",
656657
}
657658

658659
// LocalRegistryConfig configures the registry service

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ type OnlineStoreFilePersistence struct {
373373
// OnlineStoreDBStorePersistence configures the DB store persistence for the online store service
374374
type OnlineStoreDBStorePersistence struct {
375375
// Type of the persistence type you want to use.
376-
// +kubebuilder:validation:Enum=snowflake.online;redis;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase.online;milvus;hybrid;mongodb;aerospike
376+
// +kubebuilder:validation:Enum=snowflake.online;redis;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase.online;milvus;hybrid;mongodb;aerospike;scylladb
377377
Type string `json:"type"`
378378
// Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed.
379379
SecretRef corev1.LocalObjectReference `json:"secretRef"`
@@ -400,6 +400,7 @@ var ValidOnlineStoreDBStorePersistenceTypes = []string{
400400
"hybrid",
401401
"mongodb",
402402
"aerospike",
403+
"scylladb",
403404
}
404405

405406
// LocalRegistryConfig configures the registry service

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2400,6 +2400,7 @@ spec:
24002400
- hybrid
24012401
- mongodb
24022402
- aerospike
2403+
- scylladb
24032404
type: string
24042405
required:
24052406
- secretRef
@@ -8706,6 +8707,7 @@ spec:
87068707
- hybrid
87078708
- mongodb
87088709
- aerospike
8710+
- scylladb
87098711
type: string
87108712
required:
87118713
- secretRef
@@ -14230,6 +14232,7 @@ spec:
1423014232
- hybrid
1423114233
- mongodb
1423214234
- aerospike
14235+
- scylladb
1423314236
type: string
1423414237
required:
1423514238
- secretRef
@@ -18736,6 +18739,7 @@ spec:
1873618739
- hybrid
1873718740
- mongodb
1873818741
- aerospike
18742+
- scylladb
1873918743
type: string
1874018744
required:
1874118745
- secretRef

infra/feast-operator/dist/install.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2408,6 +2408,7 @@ spec:
24082408
- hybrid
24092409
- mongodb
24102410
- aerospike
2411+
- scylladb
24112412
type: string
24122413
required:
24132414
- secretRef
@@ -8714,6 +8715,7 @@ spec:
87148715
- hybrid
87158716
- mongodb
87168717
- aerospike
8718+
- scylladb
87178719
type: string
87188720
required:
87198721
- secretRef
@@ -14238,6 +14240,7 @@ spec:
1423814240
- hybrid
1423914241
- mongodb
1424014242
- aerospike
14243+
- scylladb
1424114244
type: string
1424214245
required:
1424314246
- secretRef
@@ -18744,6 +18747,7 @@ spec:
1874418747
- hybrid
1874518748
- mongodb
1874618749
- aerospike
18750+
- scylladb
1874718751
type: string
1874818752
required:
1874918753
- secretRef

pixi.lock

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ dynamic = [
1414
"version",
1515
]
1616
dependencies = [
17+
"attrs",
1718
"click>=7.0.0,<9.0.0",
1819
"colorama>=0.3.9,<1",
1920
"dill~=0.3.0",
2021
"protobuf>=4.24.0",
2122
"Jinja2>=2,<4",
22-
"jsonschema",
2323
"mmh3",
2424
"numpy>=2.0.0,<3",
2525
"pandas>=1.4.3,<3",

sdk/python/feast/infra/online_stores/sqlite.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import os
1717
import sqlite3
1818
import sys
19+
import time
1920
from datetime import date, datetime, timezone
2021
from pathlib import Path
2122
from typing import (
@@ -353,10 +354,23 @@ def teardown(
353354
tables: Sequence[FeatureView],
354355
entities: Sequence[Entity],
355356
):
356-
try:
357-
os.unlink(self._get_db_path(config))
358-
except FileNotFoundError:
359-
pass
357+
if self._conn is not None:
358+
try:
359+
self._conn.close()
360+
finally:
361+
self._conn = None
362+
363+
db_path = self._get_db_path(config)
364+
for attempt in range(10):
365+
try:
366+
os.unlink(db_path)
367+
return
368+
except FileNotFoundError:
369+
return
370+
except PermissionError:
371+
if attempt == 9:
372+
raise
373+
time.sleep(0.25)
360374

361375
def retrieve_online_documents(
362376
self,

0 commit comments

Comments
 (0)