Skip to content

Commit 2b05fa4

Browse files
gcf-owl-bot[bot]sofisldanieljbruce
authored
feat: add ChangeStreamConfig to CreateTable and UpdateTable (#1269)
* feat: publish RateLimitInfo and FeatureFlag protos PiperOrigin-RevId: 527878708 Source-Link: googleapis/googleapis@f129f48 Source-Link: googleapis/googleapis-gen@e02c87d Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTAyYzg3ZDlkMGM5YTc3ZjJiMTcyNjhhODZmNDYyYjVhMWQ2NmJiZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * fix: Add feature flag proto to BUILD file PiperOrigin-RevId: 528468347 Source-Link: googleapis/googleapis@38247e8 Source-Link: googleapis/googleapis-gen@17e62a1 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMTdlNjJhMWFiNWYyMmQ3ZDUzNzY3NWE2NTkxNTcyMDdlNDA2ZTYzZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: add ChangeStreamConfig to CreateTable and UpdateTable PiperOrigin-RevId: 534836567 Source-Link: googleapis/googleapis@eb2d1f1 Source-Link: googleapis/googleapis-gen@64cebcf Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNjRjZWJjZmMyNzY1YmZmNWFmYjE5YzE0MGQ0YjE2MDBkZmRhZWJhZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: sofisl <[email protected]> Co-authored-by: danieljbruce <[email protected]>
1 parent cf497bd commit 2b05fa4

13 files changed

+1186
-18
lines changed

protos/google/bigtable/admin/v2/bigtable_table_admin.proto

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -600,11 +600,15 @@ message UpdateTableRequest {
600600
Table table = 1 [(google.api.field_behavior) = REQUIRED];
601601

602602
// Required. The list of fields to update.
603-
// A mask specifying which fields (e.g. `deletion_protection`) in the `table`
603+
// A mask specifying which fields (e.g. `change_stream_config`) in the `table`
604604
// field should be updated. This mask is relative to the `table` field, not to
605605
// the request message. The wildcard (*) path is currently not supported.
606-
// Currently UpdateTable is only supported for the following field:
607-
// * `deletion_protection`
606+
// Currently UpdateTable is only supported for the following fields:
607+
//
608+
// * `change_stream_config`
609+
// * `change_stream_config.retention_period`
610+
// * `deletion_protection`
611+
//
608612
// If `column_families` is set in `update_mask`, it will return an
609613
// UNIMPLEMENTED error.
610614
google.protobuf.FieldMask update_mask = 2

protos/google/bigtable/admin/v2/table.proto

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,16 @@ message RestoreInfo {
4848
}
4949
}
5050

51+
// Change stream configuration.
52+
message ChangeStreamConfig {
53+
// How long the change stream should be retained. Change stream data older
54+
// than the retention period will not be returned when reading the change
55+
// stream from the table.
56+
// Values must be at least 1 day and at most 7 days, and will be truncated to
57+
// microsecond granularity.
58+
google.protobuf.Duration retention_period = 1;
59+
}
60+
5161
// A collection of user data indexed by row, column, and timestamp.
5262
// Each table is served using the resources of its parent cluster.
5363
message Table {
@@ -157,6 +167,11 @@ message Table {
157167
// field will be populated with information about the restore.
158168
RestoreInfo restore_info = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
159169

170+
// If specified, enable the change stream on this table.
171+
// Otherwise, the change stream is disabled and the change stream is not
172+
// retained.
173+
ChangeStreamConfig change_stream_config = 8;
174+
160175
// Set to true to make the table protected against data loss. i.e. deleting
161176
// the following resources through Admin APIs are prohibited:
162177
// - The table.

protos/google/bigtable/v2/bigtable.proto

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2022 Google LLC
1+
// Copyright 2023 Google LLC
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -227,7 +227,6 @@ service Bigtable {
227227

228228
// Request message for Bigtable.ReadRows.
229229
message ReadRowsRequest {
230-
//
231230
// The desired view into RequestStats that should be returned in the response.
232231
//
233232
// See also: RequestStats message.
@@ -254,8 +253,8 @@ message ReadRowsRequest {
254253
}
255254
];
256255

257-
// This value specifies routing for replication. This API only accepts the
258-
// empty value of app_profile_id.
256+
// This value specifies routing for replication. If not specified, the
257+
// "default" application profile will be used.
259258
string app_profile_id = 5;
260259

261260
// The row keys and/or ranges to read sequentially. If not specified, reads
@@ -489,6 +488,33 @@ message MutateRowsResponse {
489488

490489
// One or more results for Entries from the batch request.
491490
repeated Entry entries = 1;
491+
492+
// Information about how client should limit the rate (QPS). Primirily used by
493+
// supported official Cloud Bigtable clients. If unset, the rate limit info is
494+
// not provided by the server.
495+
optional RateLimitInfo rate_limit_info = 3;
496+
}
497+
498+
// Information about how client should adjust the load to Bigtable.
499+
message RateLimitInfo {
500+
// Time that clients should wait before adjusting the target rate again.
501+
// If clients adjust rate too frequently, the impact of the previous
502+
// adjustment may not have been taken into account and may
503+
// over-throttle or under-throttle. If clients adjust rate too slowly, they
504+
// will not be responsive to load changes on server side, and may
505+
// over-throttle or under-throttle.
506+
google.protobuf.Duration period = 1;
507+
508+
// If it has been at least one `period` since the last load adjustment, the
509+
// client should multiply the current load by this value to get the new target
510+
// load. For example, if the current load is 100 and `factor` is 0.8, the new
511+
// target load should be 80. After adjusting, the client should ignore
512+
// `factor` until another `period` has passed.
513+
//
514+
// The client can measure its load using any unit that's comparable over time
515+
// For example, QPS can be used as long as each request involves a similar
516+
// amount of work.
517+
double factor = 2;
492518
}
493519

494520
// Request message for Bigtable.CheckAndMutateRow.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright 2023 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
syntax = "proto3";
16+
17+
package google.bigtable.v2;
18+
19+
option csharp_namespace = "Google.Cloud.Bigtable.V2";
20+
option go_package = "google.golang.org/genproto/googleapis/bigtable/v2;bigtable";
21+
option java_multiple_files = true;
22+
option java_outer_classname = "FeatureFlagsProto";
23+
option java_package = "com.google.bigtable.v2";
24+
option php_namespace = "Google\\Cloud\\Bigtable\\V2";
25+
option ruby_package = "Google::Cloud::Bigtable::V2";
26+
27+
// Feature flags supported by a client.
28+
// This is intended to be sent as part of request metadata to assure the server
29+
// that certain behaviors are safe to enable. This proto is meant to be
30+
// serialized and websafe-base64 encoded under the `bigtable-features` metadata
31+
// key. The value will remain constant for the lifetime of a client and due to
32+
// HTTP2's HPACK compression, the request overhead will be tiny.
33+
// This is an internal implementation detail and should not be used by endusers
34+
// directly.
35+
message FeatureFlags {
36+
// Notify the server that the client enables batch write flow control by
37+
// requesting RateLimitInfo from MutateRowsResponse.
38+
bool mutate_rows_rate_limit = 3;
39+
}

0 commit comments

Comments
 (0)