Skip to content

fix: Cassandra Entity Key Serialization + Warning #370

Merged
zabarn merged 7 commits into
masterfrom
fix/cassandra-entity-key-serialization
Jun 29, 2026
Merged

fix: Cassandra Entity Key Serialization + Warning #370
zabarn merged 7 commits into
masterfrom
fix/cassandra-entity-key-serialization

Conversation

@zabarn

@zabarn zabarn commented Jun 26, 2026

Copy link
Copy Markdown

Cassandra was hardcoding serialization version 2 at read time, which means anyone who writes to Cassandra with with entity key serialization version 3 is unable to retrieve data.

Also adds a shared warnPotentialEntityKeyVersionMismatch helper (extracted into entitykeyserialization.go) that fires a single deduplicated warning when an online read returns zero data for all requested feature views — a possible indicator of a write/read version mismatch. Covered by new unit tests in both store test files.

What this PR does / why we need it:

Which issue(s) this PR fixes:

Misc

Zach Barnett and others added 7 commits June 26, 2026 13:35
…and Valkey stores

Cassandra was hardcoding serialization version 2, which silently diverged from
the Python default (v3) and from the Valkey store. Both stores now resolve the
version from feature_store.yaml (entity_key_serialization_version, defaulting
to v3 when unset), matching Python's SerializeEntityKey behavior.

Also adds a shared warnPotentialEntityKeyVersionMismatch helper (extracted into
entitykeyserialization.go) that fires a single deduplicated warning when an
online read returns zero data for all requested feature views — a possible
indicator of a write/read version mismatch. Covered by new unit tests in both
store test files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test data parquet files have timestamps from April 2025. When using
materialize-incremental with TTL=0 feature views, Feast defaults to a
1-year lookback window. Once the current date passed April 2026, the
materialization found 0 rows to ingest, causing all Go integration tests
to fail.

Switch from materialize-incremental to materialize with an explicit
start time of 2025-01-01 to ensure test data is always included.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test parquet file go/internal/test/feature_repo/driver_stats.parquet
contains timestamps from 2021-2022, not 2025. The previous commit used
2025-01-01 as the start date which excluded all test data.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sync operator test configuration with upstream feast-dev/feast:
- Go version: 1.22.9 → 1.25.0
- ENVTEST_K8S_VERSION: 1.30.0 → 1.31.0
- ENVTEST_VERSION: release-0.18 → release-0.21
- Add GOTOOLCHAIN env var to test command
- Add workflow concurrency to cancel in-progress runs

The older envtest version was failing to download kubebuilder assets
(etcd not found in $PATH) on newer Ubuntu CI runners.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update operator CI and tooling to work with Go 1.25:
- Go version: 1.22.9 → 1.25.0
- controller-tools: v0.15.0 → v0.18.0 (fixes x/tools compile error)
- golangci-lint: v1.59.1 → v2.12.2 (v1.x incompatible with Go 1.25)
- envtest: release-0.18 → release-0.21 (fixes etcd not found)
- Migrate .golangci.yml to v2 config format
- Regenerate CRDs, RBAC, and docs with new tool versions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The new golangci-lint v2 govet checker requires using reflect.Pointer
(the newer name) instead of the deprecated reflect.Ptr constant.

This aligns with the upstream feast-dev/feast repository.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@zabarn zabarn merged commit 5fe2f84 into master Jun 29, 2026
46 of 52 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants