Skip to content

Conversation

@brancz
Copy link
Member

@brancz brancz commented Jul 1, 2024

The protocol works by

  1. Sending Apache Arrow records directly.
  2. Reducing the amount of traffic that has to be sent by first only sending the sample data, and then if necessary, only send the stacktrace data that is unknown to the server.

This reduces the amount of work that has to be done to ingest data, and reduces the amount of data that needs to be transferred by a client. For a start this implements no caching, that part is left for future work, but the protocol already supports it, at present the server will just always ask the client for the full stacktrace information.

@brancz brancz requested review from a team as code owners July 1, 2024 12:18
@alwaysmeticulous
Copy link

alwaysmeticulous bot commented Jul 1, 2024

✅ Meticulous spotted zero visual differences across 370 screens tested: view results.

Expected differences? Click here. Last updated for commit 8bed747. This comment will update as new commits are pushed.

Copy link
Member

@metalmatze metalmatze left a comment

Choose a reason for hiding this comment

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

Super excited for this!

message WriteResponse {
// When record is non-empty it contains the bytes of an arrow record that
// contains a column containing the stacktraces that are unknown.
bytes record = 1;
Copy link
Member

Choose a reason for hiding this comment

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

It would be nice to make the returning record's schema part of the protocol, at least adding a comment on what to expect roughly.

Copy link
Member Author

Choose a reason for hiding this comment

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

The record has metadata and the protocol expects the parca_write_schema_version to be set to the version, which determines the schema. See the constants in pkg/normalizer/arrow.go.

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.

3 participants