-
Notifications
You must be signed in to change notification settings - Fork 810
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
Stream chunks from blocks-ingester to querier #3889
Conversation
c3b7e3c
to
66b47f0
Compare
Benchmark comparing old (samples based) and new (chunk based) streaming in blocks-ingester.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is ready for review now.
} | ||
defer q.Close() | ||
|
||
// It's not required to return sorted series because series are sorted by the Cortex querier. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is also true for chunks.
|
||
// It is not guaranteed that chunk returned by iterator is populated. | ||
// For now just return error. We could also try to figure out how to read the chunk. | ||
if meta.Chunk == nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not clear to me if this can actually happen. Needs some investigation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Asked here: prometheus/prometheus#8559
Fixes #2845 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wow, very good job! And good tests 👏 I left a couple of nits, but nothing particularly relevant.
Signed-off-by: Peter Štibraný <[email protected]>
… the tests. Signed-off-by: Peter Štibraný <[email protected]>
Added tests and benchmarks. Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Signed-off-by: Peter Štibraný <[email protected]>
Thanks @pstibrany for addressing my feedback! LGTM. I don't feel strong about the double CLI flags considering they're temporarily I'm fine with that. |
Using this feature makes average time for rule group evaluation to go up: |
Signed-off-by: Peter Štibraný <[email protected]>
What this PR does: This PR implements streaming of TSDB chunks from blocks-based ingester to querier. It reuses chunks-based querier, and just introduces new type of chunk: read-only wrapper around TSDB chunk.
State of PR: manual testing shows that it works, unit tests not updated yet.PR is ready for review. Feature is currently protected by the flag (both CLI and runtime-config to avoid rollout of ingesters when playing with this), but will be enabled by default in the future.
Which issue(s) this PR fixes:
Fixes #3831
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]