Skip to content

Commit 113980f

Browse files
committed
feat(gcs): single HTTP call for Get using XML API metadata
Remove WithJSONReads() and use the default XML API, which returns custom metadata (x-goog-meta-*) in the read response headers. This allows Get() to fetch both the object body and metadata in a single NewReader() call instead of the previous Attrs() + NewReader() two-call pattern. This should roughly halve GCS GET latency. Anywhere Cache works transparently regardless of API choice (JSON/XML/gRPC) so this is safe. Requires cloud.google.com/go/storage v1.49.0+ for Reader.Metadata(). Made-with: Cursor
1 parent 964f99b commit 113980f

3 files changed

Lines changed: 183 additions & 244 deletions

File tree

go.mod

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
module github.com/richardartoul/gobuildcache
22

3-
go 1.25
3+
go 1.25.0
44

55
require (
6-
cloud.google.com/go/storage v1.40.0
6+
cloud.google.com/go/storage v1.61.3
77
github.com/DataDog/sketches-go v1.4.6
88
github.com/aws/aws-sdk-go-v2 v1.32.7
99
github.com/aws/aws-sdk-go-v2/config v1.28.7
1010
github.com/aws/aws-sdk-go-v2/service/s3 v1.71.1
1111
github.com/gofrs/flock v0.13.0
1212
github.com/pierrec/lz4/v4 v4.1.23
13-
google.golang.org/api v0.170.0
13+
google.golang.org/api v0.271.0
1414
)
1515

1616
require (
17-
cloud.google.com/go v0.112.1 // indirect
18-
cloud.google.com/go/compute v1.24.0 // indirect
19-
cloud.google.com/go/compute/metadata v0.2.3 // indirect
20-
cloud.google.com/go/iam v1.1.7 // indirect
17+
cel.dev/expr v0.25.1 // indirect
18+
cloud.google.com/go v0.123.0 // indirect
19+
cloud.google.com/go/auth v0.18.2 // indirect
20+
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
21+
cloud.google.com/go/compute/metadata v0.9.0 // indirect
22+
cloud.google.com/go/iam v1.5.3 // indirect
23+
cloud.google.com/go/monitoring v1.24.3 // indirect
24+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect
25+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect
26+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect
2127
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 // indirect
2228
github.com/aws/aws-sdk-go-v2/credentials v1.17.48 // indirect
2329
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.22 // indirect
@@ -33,32 +39,39 @@ require (
3339
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.7 // indirect
3440
github.com/aws/aws-sdk-go-v2/service/sts v1.33.3 // indirect
3541
github.com/aws/smithy-go v1.22.1 // indirect
42+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
43+
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
44+
github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
45+
github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
3646
github.com/felixge/httpsnoop v1.0.4 // indirect
37-
github.com/go-logr/logr v1.4.1 // indirect
47+
github.com/go-jose/go-jose/v4 v4.1.3 // indirect
48+
github.com/go-logr/logr v1.4.3 // indirect
3849
github.com/go-logr/stdr v1.2.2 // indirect
39-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
40-
github.com/golang/protobuf v1.5.4 // indirect
41-
github.com/google/s2a-go v0.1.7 // indirect
50+
github.com/google/s2a-go v0.1.9 // indirect
4251
github.com/google/uuid v1.6.0 // indirect
43-
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
44-
github.com/googleapis/gax-go/v2 v2.12.3 // indirect
45-
go.opencensus.io v0.24.0 // indirect
46-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
47-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
48-
go.opentelemetry.io/otel v1.24.0 // indirect
49-
go.opentelemetry.io/otel/metric v1.24.0 // indirect
50-
go.opentelemetry.io/otel/trace v1.24.0 // indirect
51-
golang.org/x/crypto v0.21.0 // indirect
52-
golang.org/x/net v0.22.0 // indirect
53-
golang.org/x/oauth2 v0.18.0 // indirect
54-
golang.org/x/sync v0.6.0 // indirect
55-
golang.org/x/sys v0.37.0 // indirect
56-
golang.org/x/text v0.14.0 // indirect
57-
golang.org/x/time v0.5.0 // indirect
58-
google.golang.org/appengine v1.6.8 // indirect
59-
google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect
60-
google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c // indirect
61-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 // indirect
62-
google.golang.org/grpc v1.62.1 // indirect
63-
google.golang.org/protobuf v1.33.0 // indirect
52+
github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect
53+
github.com/googleapis/gax-go/v2 v2.17.0 // indirect
54+
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
55+
github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
56+
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
57+
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
58+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect
59+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
60+
go.opentelemetry.io/otel v1.40.0 // indirect
61+
go.opentelemetry.io/otel/metric v1.40.0 // indirect
62+
go.opentelemetry.io/otel/sdk v1.40.0 // indirect
63+
go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect
64+
go.opentelemetry.io/otel/trace v1.40.0 // indirect
65+
golang.org/x/crypto v0.48.0 // indirect
66+
golang.org/x/net v0.51.0 // indirect
67+
golang.org/x/oauth2 v0.36.0 // indirect
68+
golang.org/x/sync v0.20.0 // indirect
69+
golang.org/x/sys v0.42.0 // indirect
70+
golang.org/x/text v0.34.0 // indirect
71+
golang.org/x/time v0.15.0 // indirect
72+
google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect
73+
google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 // indirect
74+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect
75+
google.golang.org/grpc v1.79.2 // indirect
76+
google.golang.org/protobuf v1.36.11 // indirect
6477
)

0 commit comments

Comments
 (0)