Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions pkg/blobstore/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ go_library(
"read_buffer_factory.go",
"read_canarying_blob_access.go",
"reference_expanding_blob_access.go",
"spanner_blob_access.go",
"validation_caching_read_buffer_factory.go",
"visit_topologically_sorted_tree.go",
"zip_reading_blob_access.go",
Expand All @@ -38,6 +39,7 @@ go_library(
"//pkg/cloud/gcp",
"//pkg/digest",
"//pkg/eviction",
"//pkg/proto/configuration/blobstore",
"//pkg/proto/fsac",
"//pkg/proto/icas",
"//pkg/proto/iscc",
Expand All @@ -47,6 +49,11 @@ go_library(
"@com_github_bazelbuild_remote_apis//build/bazel/remote/execution/v2:execution",
"@com_github_klauspost_compress//zstd",
"@com_github_prometheus_client_golang//prometheus",
"@com_google_cloud_go_spanner//:spanner",
"@com_google_cloud_go_spanner//admin/database/apiv1",
"@com_google_cloud_go_storage//:storage",
"@org_golang_google_api//iterator",
"@org_golang_google_genproto//googleapis/spanner/admin/database/v1:database",
"@org_golang_google_grpc//codes",
"@org_golang_google_grpc//status",
"@org_golang_google_protobuf//encoding/protowire",
Expand Down
22 changes: 22 additions & 0 deletions pkg/blobstore/configuration/new_blob_access.go
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,28 @@ func (nc *simpleNestedBlobAccessCreator) newNestedBlobAccessBare(configuration *
BlobAccess: localBlobAccess,
DigestKeyFormat: digestKeyFormat,
}, backendType, nil
case *pb.BlobAccessConfiguration_Spanner:
var digestKeyFormat digest.KeyFormat
if backend.Spanner.StorageType == pb.StorageType_ACTION_CACHE {
digestKeyFormat = digest.KeyWithInstance
} else if backend.Spanner.StorageType == pb.StorageType_CASTORE {
digestKeyFormat = digest.KeyWithoutInstance
} else {
return BlobAccessInfo{}, "", status.Errorf(codes.InvalidArgument, "Unknown Spanner storage type")
}
blobAccess, err := blobstore.NewSpannerBlobAccess(
backend.Spanner.SpannerDbName,
backend.Spanner.GcsBucketName,
readBufferFactory,
backend.Spanner.StorageType,
backend.Spanner.ExpirationDays)
if err != nil {
return BlobAccessInfo{}, "", util.StatusWrap(err, "Failed to create Spanner blob access")
}
return BlobAccessInfo{
BlobAccess: blobAccess,
DigestKeyFormat: digestKeyFormat,
}, "spanner", nil
case *pb.BlobAccessConfiguration_ReadFallback:
primary, err := nc.NewNestedBlobAccess(backend.ReadFallback.Primary, creator)
if err != nil {
Expand Down
Loading