◐ Shell
clean mode source ↗

feat: Add feature view versioning support to Redis and DynamoDB online stores by YassinNouh21 · Pull Request #6257 · feast-dev/feast

…e stores

Redis: Add _versioned_fv_name() helper that computes versioned feature view
names (e.g. driver_stats_v2) used in hash field keys (_ts: and mmh3 feature
hashes). This ensures version isolation within the same entity hash key.

DynamoDB: Modify _get_table_name() to apply version suffix before template
formatting, so each version gets its own DynamoDB table.

Both stores are registered in _check_versioned_read_support() and the error
message is updated accordingly.

Closes feast-dev#6164, closes feast-dev#6163

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

devin-ai-integration[bot]

ntkathole

ntkathole

…sioning gate

Redis and DynamoDB modules raise FeastExtrasDependencyImportError (not
ImportError) when their dependencies are missing. Use broad Exception
catch so environments without redis/boto3 don't break.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Move version resolution logic into a shared compute_versioned_name()
in helpers.py, reused by Redis, DynamoDB, and compute_table_id().
Addresses reviewer feedback to avoid duplicating version logic.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

ntkathole

@YassinNouh21

korbonits pushed a commit to korbonits/feast that referenced this pull request

Apr 13, 2026
…e stores (feast-dev#6257)

* feat: Add feature view versioning support to Redis and DynamoDB online stores

Redis: Add _versioned_fv_name() helper that computes versioned feature view
names (e.g. driver_stats_v2) used in hash field keys (_ts: and mmh3 feature
hashes). This ensures version isolation within the same entity hash key.

DynamoDB: Modify _get_table_name() to apply version suffix before template
formatting, so each version gets its own DynamoDB table.

Both stores are registered in _check_versioned_read_support() and the error
message is updated accordingly.

Closes feast-dev#6164, closes feast-dev#6163

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Add pragma allowlist for dummy moto credentials in DynamoDB test

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* fix: Catch Exception instead of ImportError for Redis/DynamoDB in versioning gate

Redis and DynamoDB modules raise FeastExtrasDependencyImportError (not
ImportError) when their dependencies are missing. Use broad Exception
catch so environments without redis/boto3 don't break.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

* refactor: Extract shared compute_versioned_name helper to helpers.py

Move version resolution logic into a shared compute_versioned_name()
in helpers.py, reused by Redis, DynamoDB, and compute_table_id().
Addresses reviewer feedback to avoid duplicating version logic.

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>

---------

Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
Signed-off-by: Alex Korbonits <alex@korbonits.com>