Skip to content

[VQueues] Introduce sys_vqueue_meta datafusion table#4580

Closed
AhmedSoliman wants to merge 2 commits intomainfrom
pr4580
Closed

[VQueues] Introduce sys_vqueue_meta datafusion table#4580
AhmedSoliman wants to merge 2 commits intomainfrom
pr4580

Conversation

@AhmedSoliman
Copy link
Copy Markdown
Contributor

@AhmedSoliman AhmedSoliman commented Apr 9, 2026

Adds a new partitioned datafusion table that exposes VQueue metadata for
observability and debugging.

The table surfaces per-vqueue fields from VQueueMeta: identity (id,
service_name, scope, limit_key, lock_name), lifecycle flags (is_active,
queue_is_paused), lifecycle timestamps (created_at, last_enqueued_at,
last_start_at, last_attempt_at, last_finish_at), EMA durations
(queue/inbox/run/suspension/end_to_end), and entry counts per state
(inbox/running/suspended/paused/finished).

A new ScanVQueueMetaTable trait is added in storage-api and implemented
on PartitionStore, scanning the meta column family at Priority::Low.
Decoding uses VQueueMetaRef via bilrost decode_borrowed so string
columns are read zero-copy from the iterator buffer.


Stack created with Sapling. Best reviewed with ReviewStack.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 9, 2026

Test Results

  8 files  +  3    8 suites  +3   7m 22s ⏱️ + 3m 47s
 53 tests + 26   53 ✅ + 26  0 💤 ±0  0 ❌ ±0 
233 runs  +179  233 ✅ +179  0 💤 ±0  0 ❌ ±0 

Results for commit fd09f48. ± Comparison against base commit 6d70da2.

This pull request removes 25 and adds 51 tests. Note that renamed tests count towards both.
dev.restate.sdktesting.tests.AwakeableIngressEndpointTest ‑ completeWithFailure(Client)
dev.restate.sdktesting.tests.AwakeableIngressEndpointTest ‑ completeWithSuccess(Client)
dev.restate.sdktesting.tests.AwakeableLeaderTransferTest ‑ awakeableCompletionsAreNotLostDuringLeaderTransfer(Client, ContainerHandle)
dev.restate.sdktesting.tests.IngressTest ‑ idempotentInvokeSend(Client)
dev.restate.sdktesting.tests.IngressTest ‑ idempotentInvokeService(Client)
dev.restate.sdktesting.tests.IngressTest ‑ idempotentInvokeVirtualObject(Client)
dev.restate.sdktesting.tests.IngressTest ‑ idempotentSendThenAttachWIthIdempotencyKey(Client)
dev.restate.sdktesting.tests.IngressTest ‑ privateService(URI, Client)
dev.restate.sdktesting.tests.InvokerMemoryTest ‑ allInvocationsCompleteUnderMemoryPressure(Client, URI, int)
dev.restate.sdktesting.tests.InvokerMemoryTest ‑ allStatefulInvocationsCompleteUnderMemoryPressure(Client, URI, int)
…
dev.restate.sdktesting.tests.CallOrdering ‑ ordering(boolean[], Client)[1]
dev.restate.sdktesting.tests.CallOrdering ‑ ordering(boolean[], Client)[2]
dev.restate.sdktesting.tests.CallOrdering ‑ ordering(boolean[], Client)[3]
dev.restate.sdktesting.tests.Cancellation ‑ cancelFromAdminAPI(BlockingOperation, Client, URI)[1]
dev.restate.sdktesting.tests.Cancellation ‑ cancelFromAdminAPI(BlockingOperation, Client, URI)[2]
dev.restate.sdktesting.tests.Cancellation ‑ cancelFromAdminAPI(BlockingOperation, Client, URI)[3]
dev.restate.sdktesting.tests.Cancellation ‑ cancelFromContext(BlockingOperation, Client)[1]
dev.restate.sdktesting.tests.Cancellation ‑ cancelFromContext(BlockingOperation, Client)[2]
dev.restate.sdktesting.tests.Cancellation ‑ cancelFromContext(BlockingOperation, Client)[3]
dev.restate.sdktesting.tests.Combinators ‑ awakeableOrTimeoutUsingAwaitAny(Client)
…

♻️ This comment has been updated with latest results.

Copy link
Copy Markdown

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

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: 2a11280b6e

ℹ️ 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".

Comment thread crates/storage-api/src/vqueue_table/metadata.rs
Comment thread crates/vqueues/src/lib.rs
@AhmedSoliman AhmedSoliman changed the title [VQueues] Introduce sys_vqueue_stats datafusion table [VQueues] Introduce sys_vqueue_meta datafusion table Apr 22, 2026
Adds a new partitioned datafusion table that exposes VQueue metadata for
observability and debugging.

The table surfaces per-vqueue fields from VQueueMeta: identity (id,
service_name, scope, limit_key, lock_name), lifecycle flags (is_active,
queue_is_paused), lifecycle timestamps (created_at, last_enqueued_at,
last_start_at, last_attempt_at, last_finish_at), EMA durations
(queue/inbox/run/suspension/end_to_end), and entry counts per state
(inbox/running/suspended/paused/finished).

A new ScanVQueueMetaTable trait is added in storage-api and implemented
on PartitionStore, scanning the meta column family at Priority::Low.
Decoding uses VQueueMetaRef via bilrost decode_borrowed so string
columns are read zero-copy from the iterator buffer.
Copy link
Copy Markdown
Contributor

@tillrohrmann tillrohrmann left a comment

Choose a reason for hiding this comment

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

Great to see your vision for introspection and observability of the new vqueues component coming together :-) LGTM. +1 for merging.

@AhmedSoliman
Copy link
Copy Markdown
Contributor Author

@tillrohrmann this was superseded by #4633. Sorry for the confusion.

@github-actions github-actions Bot locked and limited conversation to collaborators Apr 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants