Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

storage: optional probe streams from source operators #30391

Merged
merged 2 commits into from
Nov 13, 2024

Conversation

teskje
Copy link
Contributor

@teskje teskje commented Nov 8, 2024

This PR introduces the ability for source operators to omit returning a probe stream. This is appropriate for sources that don't support probing the upstream system. This ability is then made use of for load generators and Yugabyte sources.

The "latest" reclocking mode still expects to receive probes, so the reader pipeline synthesizes a probe stream from source progress events and uses that in cases where the source doesn't support probing. This is the same approach previously used by the load generators, just centralized in a single place.

Motivation

  • This PR adds a known-desirable feature.

Part of https://github.com/MaterializeInc/database-issues/issues/7020

Tips for reviewes

@petrosagg This is different from what we discussed last week where you suggested synthesizing the probes in the existing SourceGenericStats operator. I realized that we need a timer to ensure new probes get produced even when no upstream progress is reported, and introducing a timer into the existing operator felt unwieldy, so I decided to introduce a separate operator instead.

Checklist

  • This PR has adequate test coverage / QA involvement has been duly considered. (trigger-ci for additional test/nightly runs)
  • This PR has an associated up-to-date design doc, is a design doc (template), or is sufficiently small to not require a design.
  • If this PR evolves an existing $T ⇔ Proto$T mapping (possibly in a backwards-incompatible way), then it is tagged with a T-proto label.
  • If this PR will require changes to cloud orchestration or tests, there is a companion cloud PR to account for those changes that is tagged with the release-blocker label (example).
  • If this PR includes major user-facing behavior changes, I have pinged the relevant PM to schedule a changelog post.

This commit introduces the ability for source operators to omit
returning a probe stream. This is appropriate for sources that don't
support probing the upstream system, such as load generators (which
don't have an upstream system).

The "latest" reclocking mode still expects to receive probes, so the
reader pipeline synthesizes a probe stream from source progress events
and uses that in cases where the source doesn't support probing. This is
the same approach previously used by the load generators, just
centralized in a single place.
@teskje
Copy link
Contributor Author

teskje commented Nov 11, 2024

This successfully makes both the KEY VALUE loadgen and the Yugabyte tests pass with the new reclocking enabled: #30031.

@teskje teskje marked this pull request as ready for review November 11, 2024 15:29
@teskje teskje requested a review from a team as a code owner November 11, 2024 15:29
Copy link
Contributor

@petrosagg petrosagg left a comment

Choose a reason for hiding this comment

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

nice!

@teskje
Copy link
Contributor Author

teskje commented Nov 13, 2024

TFTR!

@teskje teskje merged commit 82e5149 into MaterializeInc:main Nov 13, 2024
80 checks passed
@teskje teskje deleted the synthetic-probes branch November 13, 2024 09:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants