Comments (12)
I think 'raw performance' was never the reason for us to deprecate the GCS/S3 storage backend. It was always the inability to do batch existence queries. This is something that needs to be fast for Buildbarn to work efficiently.
Please see #128 for more discussion in this area.
from bb-storage.
Thank you, that's a super helpful link, sorry for blindly reopening the conversation.
from bb-storage.
So I assume that a parallel call - one per object - over the gcp storage grpc list api was considered and discarded? I see you mention 'milliseconds' as the latency budget; how many objects are generally checked for in a single batch?
Thank you!
from bb-storage.
It may be as many as tens of thousands of objects. It's thus not realistic to spawn one goroutine per object.
from bb-storage.
from bb-storage.
So I've started messing around with the codebase, and the first thing I needed to do was to add a dependency on the Spanner API, after which I ran go mod tidy on the root of the repo. This errored out with:
go: finding module for package github.com/buildbarn/bb-storage/internal/mock
github.com/buildbarn/bb-storage/pkg/auth tested by
github.com/buildbarn/bb-storage/pkg/auth.test imports
github.com/buildbarn/bb-storage/internal/mock: no matching versions for query "latest"
Is that expected or am I doing it wrong?
Thanks!
from bb-storage.
The reason I think I have to run go mod tidy is because a call to go get cloud.google.com/go/spanner seems to give me a version skew in envoy between protoc-gen-validate and envoyproxy-go-control-plane. I'm wondering whether the right approach here would actually be to make a grpc api skin out of the BlobAccess API, and then I can implement the spanner backend without touching the BB codebase...?
from bb-storage.
Does go mod tidy -e
work?
from bb-storage.
Seems to give exactly the same error. I think the problem is that that directory is quite weird in go space, and only defined in bazel space (right?)
from bb-storage.
Yes, the problem is the generated files not available in the repository. Does anyone know a good way to deal with it?
For me, go get -u ./... && go mod tidy -e
has worked. That avoids the test packages and does not feel ideal.
from bb-storage.
I don't think I use go mod tidy
at all. I generally just:
- Remove go.sum
- Remove all the dependencies in go.mod
- Run
go get -d ./...
And live with that.
from bb-storage.
Closing this, as I'm still not convinced this is feasible. GCS may well be faster, but because it still lacks facilities for doing bulk existence checks, it's still not suitable. If I'm wrong, I'd like to be persuaded otherwise in the form of a PR containing benchmark results.
from bb-storage.
Related Issues (20)
- Documentation needed for allowing cache access from different types of bazel clients HOT 1
- Missing shell in bb-storage docker image HOT 1
- Support for compression from buildbarn HOT 5
- Panic in local blockstore write HOT 3
- Doc Update: ISCC / AC storages are only compatible with local replicator HOT 1
- gRPC Client Certificate Refresh Interval is not respected
- Filesystem errors in bb-storage are recorded as "Unknown" in prometheus
- Feature request: Support RSA signed JWTs
- Feature request: Support JWKS for specifying JWT public keys HOT 4
- Failed to fetch file errors in "builds without the bytes" builds in a sharded setup HOT 7
- Failed to create authorization header parser for JWT authentication policy: Unsupported public key type HOT 3
- Cannot open raw block device provisioned by kubernetes when running as non root user HOT 3
- Support connection draining in kubernetes environments HOT 2
- Tunable LogLevels? HOT 3
- Is there any detailed description about config? HOT 6
- Creating buildbarn storage image doesn't work on bazel 7 HOT 2
- JWT: support ALB token format HOT 5
- Load server CA certificates from files for client configuration
- Publish images with arm64 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bb-storage.