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

Move remote write API to client_golang/exp #1711

Draft
wants to merge 5 commits into
base: prwclient-em
Choose a base branch
from

Conversation

saswatamcode
Copy link

@saswatamcode saswatamcode commented Jan 17, 2025

Moving to exp.

Do we want to create new client in this remote write API addition as well? Or do future iteration on it? :)

I might add the decompression middleware stuff here as well

cc: @bwplotka

@bwplotka
Copy link
Member

I would straight away try to avoid old client shenigans and rethink this from scratch.

Comment on lines +41 to +42
baseURL *url.URL
client *http.Client
Copy link
Author

Choose a reason for hiding this comment

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

Passing http.Client directly here instead of api.Client structs. Seems like the most flexible way, without doing custom configs.

// SnappyDecompressorMiddleware returns a middleware that checks if the request body is snappy-encoded and decompresses it.
// If the request body is not snappy-encoded, it returns an error.
// Used by default in NewRemoteWriteHandler.
func SnappyDecompressorMiddleware(logger *slog.Logger) func(http.Handler) http.Handler {
Copy link
Author

Choose a reason for hiding this comment

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

Tried to convert this into a middleware with the ability for downstream users to override and add their own middlewares if needed.

Let me know what you think, or if this is too much

Signed-off-by: Saswata Mukherjee <[email protected]>
Signed-off-by: Saswata Mukherjee <[email protected]>
@bwplotka
Copy link
Member

Can we create a go mod file? It has to be a separate Go module if it will be experimental.

Copy link
Member

@kakkoyun kakkoyun left a comment

Choose a reason for hiding this comment

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

Looking good.

We need documentation:

  • We need a README. And we need to make the intention crystal clear.
  • Also, we have to be clear, we don't give any guarantees that the experimental APIs won't introduce breaking changes, or they will eventually be promoted to stable.
  • How do we release? This suppose to have different release cycles and maybe tags.

@kakkoyun
Copy link
Member

Looking good.

We need documentation:

  • We need a README. And we need to make the intention crystal clear.
  • Also, we have to be clear, we don't give any guarantees that the experimental APIs won't introduce breaking changes, or they will eventually be promoted to stable.
  • How do we release? This suppose to have different release cycles and maybe tags.

Additionally, we need experiment owners. So that we can ping them on the issues.

Copy link
Author

Choose a reason for hiding this comment

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

Added a workspace file as well

@saswatamcode
Copy link
Author

We need a README. And we need to make the intention crystal clear.

Yup, probably some example usage helps

Also, we have to be clear, we don't give any guarantees that the experimental APIs won't introduce breaking changes, or they will eventually be promoted to stable.

exp package go doc has a line on this, but yes probably something to mention in dedicated README. Might be good to do this in next PR to prwclient-em branch?

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