-
Notifications
You must be signed in to change notification settings - Fork 226
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
API design for BuckEvent data #226
Comments
Is this what you're looking for? https://github.com/facebook/buck2/blob/main/app/buck2_data/data.proto You mention the data from daemon.proto, I think this is generally not data we'd expect to be used for telemetry. |
I think buck2_data/data.proto is considered a backward compatible specification of the buck2 events. As @krallin noted, the daemon.proto stuff isn't, but that's probably okay for this use case. I'd expect the parts related to the event sink that interact with daemon.proto stuff or rust internal things would just be that we could add a grpc events sink implementation that would be able to send the events to some grpc service (i.e. something similar to https://github.com/googleapis/googleapis/blob/master/google/devtools/build/v1/publish_build_event.proto). I don't think that we'd try to match (or approximately match) the BEP directly, but an analysis of what that would look like could be interesting (i could maybe see someone prototyping some stuff with a simple proxy that converted a subset of buckevents into equivalent BEP events). In addition, I think just providing a bit of documentation about the buck events (from data.proto) somewhat like that linked BEP page would be useful. |
What do you folks think if we just start with creating
Should be the minimal mapping to |
Are there any plans for Buck2 to support Build Event Protocol? This protocol is adopted by most remote execution services like EngFlow, BuildBuddy, BuildBarn, and so on. |
Provide a BuckEvent Publisher service which emits BuckEvents to an external server implementation. Closes facebook#226
Provide a BuckEvent Publisher service which emits BuckEvents to an external server implementation. Closes facebook#226
As we started seeing upticks in Buck2 interest from BuildBuddy side, I sent #685 to kickstart some discussion about this. The initial design is intentionally minimal so that we could get a bare minimum POC working. I hope that we can add more to the API as the usage matures over time. The RPC was heavily inspired by PublishBuildToolEventStream RPC on Bazel side. |
Provide a BuckEvent Publisher service which emits BuckEvents to an external server implementation. Closes facebook#226
As I look more into the current usage of ThriftScribeSink in https://github.com/facebook/buck2/pull/686/files, a few questions/thoughts pop up:
|
(I'll respond to that last message in the PR) |
Provide a BuckEvent Publisher service which emits BuckEvents to an external server implementation. Closes facebook#226
Today, the build telemetry is done pretty much through Scribe (Meta's internal message queue system) into Scuba (Meta's telemetry platform).
This resulted in Buck2 implementing the EventSink trait for Scribe only:
In here:
BuckEvent
is defined inbuck_data/data.proto
which is great for backward compatibilityControlEvent
is an enumwhere
CommandResult
andPartialResult
are both defined inbuck2_cli_proto/daemon.proto
. Not sure yet how backwardcompatible guarentee this is just yet.
EventSinkStats
is a struct defined inbuck2_events
crate, not guarantee to be backward compatible.It would be nice if we could define the telemetry data in a unified interface/data format similar to Bazel's BEP so that third parties could implement the server side for it. At the very least, having the data structures defined in a unified protobuf would help assuring that the future changes are backward compatible.
The text was updated successfully, but these errors were encountered: