NativeLink is an open source high-performance build cache and remote execution server, compatible with Bazel, Buck2, Reclient, and other RBE-compatible build systems. It offers drastically faster builds, reduced test flakiness, and specialized hardware.
In order to get a bit lower and control the network flow, we need to remove tonic's TLS & connection apis/libraries and talk directly to hyper.
The big advantage of doing this is that we will then be able to not be required to talk over TLS channels and can talk over more complex channels, like file sockets. In this specific case, we want to have a custom HTTP upgrade, take the underlying IO socket, then reverse the client/server relationships for the scheduler/worker management. Doing so allows the worker to connect to a scheduler, but then have the worker be the service and the scheduler be the client according to GRPC, but still have all HTTP & TLS securities for the initial connection.
In order to get a bit lower and control the network flow, we need to remove tonic's TLS & connection apis/libraries and talk directly to hyper.
The big advantage of doing this is that we will then be able to not be required to talk over TLS channels and can talk over more complex channels, like file sockets. In this specific case, we want to have a custom HTTP upgrade, take the underlying IO socket, then reverse the client/server relationships for the scheduler/worker management. Doing so allows the worker to connect to a scheduler, but then have the worker be the service and the scheduler be the client according to GRPC, but still have all HTTP & TLS securities for the initial connection.