Skip to content

fix: Use configured timestamp column names in RemoteOnlineStore.online_write_batch#6596

Open
franciscojavierarceo wants to merge 5 commits into
masterfrom
fix/remote-online-store-timestamp-columns
Open

fix: Use configured timestamp column names in RemoteOnlineStore.online_write_batch#6596
franciscojavierarceo wants to merge 5 commits into
masterfrom
fix/remote-online-store-timestamp-columns

Conversation

@franciscojavierarceo

Copy link
Copy Markdown
Member

Summary

  • RemoteOnlineStore.online_write_batch hardcoded "event_timestamp" and "created" as column names when building the request body for the feature server. The server-side _convert_arrow_fv_to_proto resolves columns by the feature view's configured batch_source.timestamp_field and batch_source.created_timestamp_column. When those differ from the hardcoded defaults (e.g. "created_at"), the server throws a KeyError.
  • Now uses the feature view's configured column names, falling back to the previous defaults when unset.
  • Adds 3 unit tests covering default columns, custom columns, and empty created_timestamp_column fallback.

Closes #6595

Test plan

  • Existing 22 tests in test_remote_online_store.py still pass
  • New TestRemoteOnlineStoreWriteBatch tests verify:
    • Default column names (event_timestamp, created) are used when configured
    • Custom column names (ts, created_at) appear in the request body instead of hardcoded defaults
    • Empty created_timestamp_column falls back to "created"
  • Integration test with a remote feature server and a feature view using non-default timestamp columns

🤖 Generated with Claude Code

@franciscojavierarceo

Copy link
Copy Markdown
Member Author

@codex review please

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6d8679cb7c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


columnar_data: Dict[str, List[Any]] = defaultdict(list)

event_col = table.batch_source.timestamp_field or "event_timestamp"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Guard ODFV writes before reading batch_source

When a remote FeatureStore.write_to_online_store() call targets an OnDemandFeatureView with write_to_online_store=True, PassthroughProvider.online_write_batch forwards that ODFV to this online store, and _convert_arrow_odfv_to_proto has already supplied artificial event/created timestamps. ODFVs do not define batch_source, so reading table.batch_source here raises AttributeError before the request is posted; the previous hard-coded timestamp-column path did not have this failure mode. Please fall back to the default columns when the table has no batch source.

Useful? React with 👍 / 👎.

franciscojavierarceo and others added 3 commits July 13, 2026 08:03
…e_write_batch

RemoteOnlineStore.online_write_batch hardcoded "event_timestamp" and
"created" as column names when serializing data for the feature server.
On the server side, _convert_arrow_fv_to_proto resolves columns by the
feature view's configured batch_source.timestamp_field and
batch_source.created_timestamp_column. When those differ from the
hardcoded defaults (e.g. "created_at"), the server throws a KeyError.

Use the feature view's configured column names instead, falling back to
the previous defaults when unset.

Closes #6595

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
@franciscojavierarceo
franciscojavierarceo force-pushed the fix/remote-online-store-timestamp-columns branch from 30d0fdc to a2768c6 Compare July 13, 2026 12:04
franciscojavierarceo and others added 2 commits July 14, 2026 00:20
The merge from master included #6599 (remove jsonschema, add attrs)
which changed pyproject.toml without regenerating pixi.lock, causing
pixi install --locked to fail in CI for duckdb-tests and ray-tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

columnar_data: Dict[str, List[Any]] = defaultdict(list)

if table.batch_source is not None:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if table.batch_source is not None:
batch_source = getattr(table, 'batch_source', None)
if batch_source is not None:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

2 participants