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

Alternative cache backends for remote workers #142

Closed
prestonvanloon opened this issue May 13, 2018 · 5 comments
Closed

Alternative cache backends for remote workers #142

prestonvanloon opened this issue May 13, 2018 · 5 comments

Comments

@prestonvanloon
Copy link

Is it possible to set a cache backend for the remote workers?

Specifically using Google Cloud Storage or Bazel remote cache or nginx :)

The use case that I have in mind is that these bazel workers may be ephemeral and short-lived while the cache backend could be more durable.

https://docs.bazel.build/versions/master/remote-caching.html

@werkt
Copy link
Collaborator

werkt commented May 13, 2018

It is not currently possible to separate this right now, but for only the simple reason that we're using the same endpoint for the operation queue, the CAS, and the Action Cache.

Your use case is definitely sound, but I have a thought about providing the support for the different endpoint types in-worker: How about I just make 3 different configurable endpoint addresses for communication over grpc for each of the services, rather than trying to bake in client support for all manner of CAS/AC communication protocols (http, grpc, hazelcast, redis, memcached, mongo, etc).

I can also quite separately (doesn't even have to be in this repo) provide a grpc hosted server that can speak one of these (separate binaries for separate protos) and facilitate proxy/translation for either activity (CAS or AC).

I think it is an effective strategy to combat complexity to say 'the operation queue workers speak grpc and nothing else.'

@prestonvanloon
Copy link
Author

Hi @werkt, I'm not sure if that was a comment directed at me.

What I was hoping for was to give a flag to the build farm worker to read/write to some cache backend.
I'm not sure how things work so I don't quite understand the 3 different endpoint configurations or the reason for a proxy.

Thanks!

@mpictor
Copy link

mpictor commented Jun 5, 2018

I believe @werkt is saying that currently there are 3 different kinds of things, all handled on a single port by a single binary. If they were (or could be) on different ports, it would be far easier for others to add support for alternate implementation(s) of the functionality - whether it is a shim to use Bazel Remote Cache in place of the internal CAS, a custom AC backend, or what have you.

@werkt
Copy link
Collaborator

werkt commented Jun 16, 2018

The worker side of this was implemented in #143, we're waiting on an http implementation I threw together in #144 to use as a grpc endpoint for one or many workers, and #153 will enable this on the server

@werkt
Copy link
Collaborator

werkt commented Aug 24, 2018

We've broken things out at this point, have at it!

@werkt werkt closed this as completed Aug 24, 2018
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

No branches or pull requests

3 participants