-
Notifications
You must be signed in to change notification settings - Fork 233
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
Oss observability proposal draft #806
base: main
Are you sure you want to change the base?
Oss observability proposal draft #806
Conversation
Related: #811 provides a draft implementation of BES support for Buck2. |
Let's move the discussion from Discord to this PR so folks can reference items in our discussion more easily. For context, I also raised bazelbuild/remote-apis#318 to the Remote API working group and got some pretty interesting feedback there. First, let's give a high-level overview of Bazel's current BES/BEP state. Currently, in Bazel, we have this
This establishes a bi-directional stream for the client to send events to the server. I think this is a good design that we should keep in Buck2. Next, let's talk about the Build Events. There are actually 2 "event" protos in Bazel. An outer generic one and an inner set of "events" that are Bazel-specific. The first type of events is google.devtools.build.v1.BuildEvent.
This is what is being sent in the bidi stream above. All the Bazel-specific events are currently being stuffed into the Bazel's Build Event Protocol(BEP) is the set of inner events that are stuffed into the From the Remote APIs meetings, folks were very much in favor of standardizing BES and not BEP as the latter is specific to Bazel. My past proposal in #685, which @aherrmann is building upon, introduced a much more simplified version of BES that is specific to Buck2's BuckEvent:
I picked this because I think it's the simplest interface that I think can get the job done.
Just note that bringing on the entire BES could add additional complexity to the implementation. Protocol aside, there is a need to make BuckEvent work with existing tooling today. However, I prefer to treat it as a separate problem from the protocol as it would help narrow down the problem scope and increase the chance of success for the implementation. |
Small correction: @aherrmann implemented BuckEvent -> Bazel BEP conversion in #811 instead of using my proposal 😅 |
I opted for that route for now to keep the implementation simple while it is at a more exploratory stage. That said, it is structured in a way that should make it easy to adopt the pattern proposed in #685. |
@facebook-github-bot has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
The goal of this proposal is to add observability to Buck2's OSS variant that is on par with similar build systems like Bazel.