Skip to content

Commit 1abbb23

Browse files
authored
docs(storage): add GCS+gRPC release notes (#11760)
1 parent 18af25f commit 1abbb23

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

google/cloud/storage/doc/storage-grpc.dox

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,40 @@
55
The GCS C++ client library includes an optional plugin to access GCS via gRPC.
66
When using GCS from Google Compute Engine (GCE) this plugin can enable higher
77
total throughput across large workloads that run on hundreds or thousands of
8-
VMs. Note that this feature is not GA, consult with with account manager to
9-
be included in the early access.
8+
VMs. Note that this feature is not GA. Consult with your account manager to be
9+
included in the early access program.
10+
11+
## Release Notes
12+
13+
There are some features that the gRPC plugin does not implement or implements
14+
differently from the REST-based implementation.
15+
16+
1. For best performance consider using Protobuf >= 23.2 and gRPC >= 1.55.0.
17+
Older versions of Protobuf requires enabling [ctype=CORD workarounds] at
18+
compile-time.
19+
1. To override the default endpoint you should use
20+
[`EndpointOption`](@ref google::cloud::EndpointOption) instead of
21+
[`RestEndpointOption`](@ ref google::cloud::storage::RestEndpointOption).
22+
1. The default endpoint (`storage.googleapis.com`) works from any hosting
23+
environment (on-prem, GKE, GCE, other cloud providers, etc.). For best
24+
performance on GCE or GKE consider using
25+
`google-c2p:///storage.googleapis.com`.
26+
1. The [`Fields`](@ref google::cloud::storage::Fields) request parameter is
27+
passed verbatim to the backend. Some fields have different names in gRPC, and
28+
the backend does not translate them. This is a rarely used feature, and we do
29+
not anticipate the behavior change is likely to cause problems. If it does
30+
cause any issues please [file a bug].
31+
1. All the `storage::Client::*AccessControl()` functions are emulated. For
32+
functions that change state, the emulation uses an [OCC loop]. While this
33+
preserves the semantics of a single RPC (e.g. no other concurrent changes
34+
are lost), it requires making at least two RPCs. This may increase the cost
35+
of calling these functions. Our telemetry shows these functions are not used
36+
via the C++ client library, but you should keep this in mind before deciding
37+
to use these functions in new code.
38+
39+
[OCC loop]: https://en.wikipedia.org/wiki/Optimistic_concurrency_control
40+
[file a bug]: https://github.com/googleapis/google-cloud-cpp/issues/new/choose
41+
[ctype=CORD workarounds]: https://github.com/googleapis/google-cloud-cpp/blob/main/doc/ctype-cord-workarounds.md
1042

1143
## Required code changes
1244

0 commit comments

Comments
 (0)