From 08c5bf1fd76258387135c8c3abe75f13bcdcc1f6 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Tue, 2 Jan 2024 09:41:58 -0500
Subject: [PATCH] feat: Adding feature flags for routing cookie and retry info
 (#2031)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* feat: Modify ModifyColumnFamiliesRequest proto to expose ignore_warnings field

PiperOrigin-RevId: 590940407

Source-Link: https://github.com/googleapis/googleapis/commit/fb027c893ce1536d6a485748d4036d97092fb812

Source-Link: https://github.com/googleapis/googleapis-gen/commit/f0728cda227b38835822c4e5519e568ce8d2b5ac
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZjA3MjhjZGEyMjdiMzg4MzU4MjJjNGU1NTE5ZTU2OGNlOGQyYjVhYyJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* feat: Adding feature flags for routing cookie and retry info

PiperOrigin-RevId: 591912877

Source-Link: https://github.com/googleapis/googleapis/commit/f6505fe8d0daac2426c22be985ad3b745a4b5485

Source-Link: https://github.com/googleapis/googleapis-gen/commit/7499187415f8d405ef0d46dd6ff608b125c53c8f
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNzQ5OTE4NzQxNWY4ZDQwNWVmMGQ0NmRkNmZmNjA4YjEyNWM1M2M4ZiJ9

* 🦉 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>
---
 .../v2/BaseBigtableTableAdminClient.java      |   2 +
 .../admin/v2/BigtableTableAdminProto.java     | 431 +++++++++---------
 .../admin/v2/ModifyColumnFamiliesRequest.java |  93 ++++
 .../ModifyColumnFamiliesRequestOrBuilder.java |  13 +
 .../admin/v2/bigtable_table_admin.proto       |   3 +
 .../com/google/bigtable/v2/FeatureFlags.java  | 194 ++++++++
 .../bigtable/v2/FeatureFlagsOrBuilder.java    |  28 ++
 .../google/bigtable/v2/FeatureFlagsProto.java |  17 +-
 .../google/bigtable/v2/feature_flags.proto    |   8 +
 9 files changed, 567 insertions(+), 222 deletions(-)

diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminClient.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminClient.java
index 5271632246..ea42627935 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminClient.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminClient.java
@@ -1396,6 +1396,7 @@ public final Table modifyColumnFamilies(
    *       ModifyColumnFamiliesRequest.newBuilder()
    *           .setName(TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]").toString())
    *           .addAllModifications(new ArrayList<ModifyColumnFamiliesRequest.Modification>())
+   *           .setIgnoreWarnings(true)
    *           .build();
    *   Table response = baseBigtableTableAdminClient.modifyColumnFamilies(request);
    * }
@@ -1428,6 +1429,7 @@ public final Table modifyColumnFamilies(ModifyColumnFamiliesRequest request) {
    *       ModifyColumnFamiliesRequest.newBuilder()
    *           .setName(TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]").toString())
    *           .addAllModifications(new ArrayList<ModifyColumnFamiliesRequest.Modification>())
+   *           .setIgnoreWarnings(true)
    *           .build();
    *   ApiFuture<Table> future =
    *       baseBigtableTableAdminClient.modifyColumnFamiliesCallable().futureCall(request);
diff --git a/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/BigtableTableAdminProto.java b/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/BigtableTableAdminProto.java
index 3c575dd878..31db57ad7a 100644
--- a/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/BigtableTableAdminProto.java
+++ b/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/BigtableTableAdminProto.java
@@ -250,224 +250,225 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
           + "\203\001\n\025UndeleteTableMetadata\022\014\n\004name\030\001 \001(\t\022"
           + ".\n\nstart_time\030\002 \001(\0132\032.google.protobuf.Ti"
           + "mestamp\022,\n\010end_time\030\003 \001(\0132\032.google.proto"
-          + "buf.Timestamp\"\341\002\n\033ModifyColumnFamiliesRe"
+          + "buf.Timestamp\"\200\003\n\033ModifyColumnFamiliesRe"
           + "quest\0229\n\004name\030\001 \001(\tB+\342A\001\002\372A$\n\"bigtablead"
           + "min.googleapis.com/Table\022_\n\rmodification"
           + "s\030\002 \003(\0132B.google.bigtable.admin.v2.Modif"
           + "yColumnFamiliesRequest.ModificationB\004\342A\001"
-          + "\002\032\245\001\n\014Modification\022\n\n\002id\030\001 \001(\t\0228\n\006create"
-          + "\030\002 \001(\0132&.google.bigtable.admin.v2.Column"
-          + "FamilyH\000\0228\n\006update\030\003 \001(\0132&.google.bigtab"
-          + "le.admin.v2.ColumnFamilyH\000\022\016\n\004drop\030\004 \001(\010"
-          + "H\000B\005\n\003mod\"\\\n\037GenerateConsistencyTokenReq"
-          + "uest\0229\n\004name\030\001 \001(\tB+\342A\001\002\372A$\n\"bigtableadm"
-          + "in.googleapis.com/Table\"=\n GenerateConsi"
-          + "stencyTokenResponse\022\031\n\021consistency_token"
-          + "\030\001 \001(\t\"u\n\027CheckConsistencyRequest\0229\n\004nam"
-          + "e\030\001 \001(\tB+\342A\001\002\372A$\n\"bigtableadmin.googleap"
-          + "is.com/Table\022\037\n\021consistency_token\030\002 \001(\tB"
-          + "\004\342A\001\002\".\n\030CheckConsistencyResponse\022\022\n\ncon"
-          + "sistent\030\001 \001(\010\"\351\001\n\024SnapshotTableRequest\0229"
-          + "\n\004name\030\001 \001(\tB+\342A\001\002\372A$\n\"bigtableadmin.goo"
-          + "gleapis.com/Table\022>\n\007cluster\030\002 \001(\tB-\342A\001\002"
-          + "\372A&\n$bigtableadmin.googleapis.com/Cluste"
-          + "r\022\031\n\013snapshot_id\030\003 \001(\tB\004\342A\001\002\022&\n\003ttl\030\004 \001("
-          + "\0132\031.google.protobuf.Duration\022\023\n\013descript"
-          + "ion\030\005 \001(\t\"R\n\022GetSnapshotRequest\022<\n\004name\030"
-          + "\001 \001(\tB.\342A\001\002\372A\'\n%bigtableadmin.googleapis"
-          + ".com/Snapshot\"|\n\024ListSnapshotsRequest\022=\n"
-          + "\006parent\030\001 \001(\tB-\342A\001\002\372A&\n$bigtableadmin.go"
-          + "ogleapis.com/Cluster\022\021\n\tpage_size\030\002 \001(\005\022"
-          + "\022\n\npage_token\030\003 \001(\t\"g\n\025ListSnapshotsResp"
-          + "onse\0225\n\tsnapshots\030\001 \003(\0132\".google.bigtabl"
-          + "e.admin.v2.Snapshot\022\027\n\017next_page_token\030\002"
-          + " \001(\t\"U\n\025DeleteSnapshotRequest\022<\n\004name\030\001 "
-          + "\001(\tB.\342A\001\002\372A\'\n%bigtableadmin.googleapis.c"
-          + "om/Snapshot\"\304\001\n\025SnapshotTableMetadata\022H\n"
-          + "\020original_request\030\001 \001(\0132..google.bigtabl"
-          + "e.admin.v2.SnapshotTableRequest\0220\n\014reque"
-          + "st_time\030\002 \001(\0132\032.google.protobuf.Timestam"
-          + "p\022/\n\013finish_time\030\003 \001(\0132\032.google.protobuf"
-          + ".Timestamp\"\330\001\n\037CreateTableFromSnapshotMe"
-          + "tadata\022R\n\020original_request\030\001 \001(\01328.googl"
-          + "e.bigtable.admin.v2.CreateTableFromSnaps"
-          + "hotRequest\0220\n\014request_time\030\002 \001(\0132\032.googl"
-          + "e.protobuf.Timestamp\022/\n\013finish_time\030\003 \001("
-          + "\0132\032.google.protobuf.Timestamp\"\245\001\n\023Create"
-          + "BackupRequest\022=\n\006parent\030\001 \001(\tB-\342A\001\002\372A&\n$"
-          + "bigtableadmin.googleapis.com/Cluster\022\027\n\t"
-          + "backup_id\030\002 \001(\tB\004\342A\001\002\0226\n\006backup\030\003 \001(\0132 ."
-          + "google.bigtable.admin.v2.BackupB\004\342A\001\002\"\230\001"
-          + "\n\024CreateBackupMetadata\022\014\n\004name\030\001 \001(\t\022\024\n\014"
-          + "source_table\030\002 \001(\t\022.\n\nstart_time\030\003 \001(\0132\032"
-          + ".google.protobuf.Timestamp\022,\n\010end_time\030\004"
-          + " \001(\0132\032.google.protobuf.Timestamp\"\204\001\n\023Upd"
-          + "ateBackupRequest\0226\n\006backup\030\001 \001(\0132 .googl"
-          + "e.bigtable.admin.v2.BackupB\004\342A\001\002\0225\n\013upda"
-          + "te_mask\030\002 \001(\0132\032.google.protobuf.FieldMas"
-          + "kB\004\342A\001\002\"N\n\020GetBackupRequest\022:\n\004name\030\001 \001("
-          + "\tB,\342A\001\002\372A%\n#bigtableadmin.googleapis.com"
-          + "/Backup\"Q\n\023DeleteBackupRequest\022:\n\004name\030\001"
-          + " \001(\tB,\342A\001\002\372A%\n#bigtableadmin.googleapis."
-          + "com/Backup\"\234\001\n\022ListBackupsRequest\022=\n\006par"
-          + "ent\030\001 \001(\tB-\342A\001\002\372A&\n$bigtableadmin.google"
-          + "apis.com/Cluster\022\016\n\006filter\030\002 \001(\t\022\020\n\010orde"
-          + "r_by\030\003 \001(\t\022\021\n\tpage_size\030\004 \001(\005\022\022\n\npage_to"
-          + "ken\030\005 \001(\t\"a\n\023ListBackupsResponse\0221\n\007back"
-          + "ups\030\001 \003(\0132 .google.bigtable.admin.v2.Bac"
-          + "kup\022\027\n\017next_page_token\030\002 \001(\t\"\347\001\n\021CopyBac"
-          + "kupRequest\022=\n\006parent\030\001 \001(\tB-\342A\001\002\372A&\n$big"
-          + "tableadmin.googleapis.com/Cluster\022\027\n\tbac"
-          + "kup_id\030\002 \001(\tB\004\342A\001\002\022C\n\rsource_backup\030\003 \001("
-          + "\tB,\342A\001\002\372A%\n#bigtableadmin.googleapis.com"
-          + "/Backup\0225\n\013expire_time\030\004 \001(\0132\032.google.pr"
-          + "otobuf.TimestampB\004\342A\001\002\"\315\001\n\022CopyBackupMet"
-          + "adata\0226\n\004name\030\001 \001(\tB(\372A%\n#bigtableadmin."
-          + "googleapis.com/Backup\022@\n\022source_backup_i"
-          + "nfo\030\002 \001(\0132$.google.bigtable.admin.v2.Bac"
-          + "kupInfo\022=\n\010progress\030\003 \001(\0132+.google.bigta"
-          + "ble.admin.v2.OperationProgress2\242*\n\022Bigta"
-          + "bleTableAdmin\022\253\001\n\013CreateTable\022,.google.b"
-          + "igtable.admin.v2.CreateTableRequest\032\037.go"
-          + "ogle.bigtable.admin.v2.Table\"M\332A\025parent,"
-          + "table_id,table\202\323\344\223\002/\"*/v2/{parent=projec"
-          + "ts/*/instances/*}/tables:\001*\022\212\002\n\027CreateTa"
-          + "bleFromSnapshot\0228.google.bigtable.admin."
-          + "v2.CreateTableFromSnapshotRequest\032\035.goog"
-          + "le.longrunning.Operation\"\225\001\312A(\n\005Table\022\037C"
-          + "reateTableFromSnapshotMetadata\332A\037parent,"
-          + "table_id,source_snapshot\202\323\344\223\002B\"=/v2/{par"
-          + "ent=projects/*/instances/*}/tables:creat"
-          + "eFromSnapshot:\001*\022\244\001\n\nListTables\022+.google"
-          + ".bigtable.admin.v2.ListTablesRequest\032,.g"
-          + "oogle.bigtable.admin.v2.ListTablesRespon"
-          + "se\";\332A\006parent\202\323\344\223\002,\022*/v2/{parent=project"
-          + "s/*/instances/*}/tables\022\221\001\n\010GetTable\022).g"
-          + "oogle.bigtable.admin.v2.GetTableRequest\032"
-          + "\037.google.bigtable.admin.v2.Table\"9\332A\004nam"
-          + "e\202\323\344\223\002,\022*/v2/{name=projects/*/instances/"
-          + "*/tables/*}\022\316\001\n\013UpdateTable\022,.google.big"
-          + "table.admin.v2.UpdateTableRequest\032\035.goog"
-          + "le.longrunning.Operation\"r\312A\034\n\005Table\022\023Up"
-          + "dateTableMetadata\332A\021table,update_mask\202\323\344"
-          + "\223\002920/v2/{table.name=projects/*/instance"
-          + "s/*/tables/*}:\005table\022\216\001\n\013DeleteTable\022,.g"
-          + "oogle.bigtable.admin.v2.DeleteTableReque"
-          + "st\032\026.google.protobuf.Empty\"9\332A\004name\202\323\344\223\002"
-          + ",**/v2/{name=projects/*/instances/*/tabl"
-          + "es/*}\022\306\001\n\rUndeleteTable\022..google.bigtabl"
-          + "e.admin.v2.UndeleteTableRequest\032\035.google"
-          + ".longrunning.Operation\"f\312A\036\n\005Table\022\025Unde"
-          + "leteTableMetadata\332A\004name\202\323\344\223\0028\"3/v2/{nam"
-          + "e=projects/*/instances/*/tables/*}:undel"
-          + "ete:\001*\022\317\001\n\024ModifyColumnFamilies\0225.google"
-          + ".bigtable.admin.v2.ModifyColumnFamiliesR"
-          + "equest\032\037.google.bigtable.admin.v2.Table\""
-          + "_\332A\022name,modifications\202\323\344\223\002D\"?/v2/{name="
-          + "projects/*/instances/*/tables/*}:modifyC"
-          + "olumnFamilies:\001*\022\231\001\n\014DropRowRange\022-.goog"
-          + "le.bigtable.admin.v2.DropRowRangeRequest"
-          + "\032\026.google.protobuf.Empty\"B\202\323\344\223\002<\"7/v2/{n"
-          + "ame=projects/*/instances/*/tables/*}:dro"
-          + "pRowRange:\001*\022\350\001\n\030GenerateConsistencyToke"
-          + "n\0229.google.bigtable.admin.v2.GenerateCon"
-          + "sistencyTokenRequest\032:.google.bigtable.a"
-          + "dmin.v2.GenerateConsistencyTokenResponse"
-          + "\"U\332A\004name\202\323\344\223\002H\"C/v2/{name=projects/*/in"
-          + "stances/*/tables/*}:generateConsistencyT"
-          + "oken:\001*\022\332\001\n\020CheckConsistency\0221.google.bi"
-          + "gtable.admin.v2.CheckConsistencyRequest\032"
-          + "2.google.bigtable.admin.v2.CheckConsiste"
-          + "ncyResponse\"_\332A\026name,consistency_token\202\323"
-          + "\344\223\002@\";/v2/{name=projects/*/instances/*/t"
-          + "ables/*}:checkConsistency:\001*\022\352\001\n\rSnapsho"
-          + "tTable\022..google.bigtable.admin.v2.Snapsh"
-          + "otTableRequest\032\035.google.longrunning.Oper"
-          + "ation\"\211\001\312A!\n\010Snapshot\022\025SnapshotTableMeta"
-          + "data\332A$name,cluster,snapshot_id,descript"
-          + "ion\202\323\344\223\0028\"3/v2/{name=projects/*/instance"
-          + "s/*/tables/*}:snapshot:\001*\022\250\001\n\013GetSnapsho"
-          + "t\022,.google.bigtable.admin.v2.GetSnapshot"
-          + "Request\032\".google.bigtable.admin.v2.Snaps"
-          + "hot\"G\332A\004name\202\323\344\223\002:\0228/v2/{name=projects/*"
-          + "/instances/*/clusters/*/snapshots/*}\022\273\001\n"
-          + "\rListSnapshots\022..google.bigtable.admin.v"
-          + "2.ListSnapshotsRequest\032/.google.bigtable"
-          + ".admin.v2.ListSnapshotsResponse\"I\332A\006pare"
-          + "nt\202\323\344\223\002:\0228/v2/{parent=projects/*/instanc"
-          + "es/*/clusters/*}/snapshots\022\242\001\n\016DeleteSna"
-          + "pshot\022/.google.bigtable.admin.v2.DeleteS"
-          + "napshotRequest\032\026.google.protobuf.Empty\"G"
-          + "\332A\004name\202\323\344\223\002:*8/v2/{name=projects/*/inst"
-          + "ances/*/clusters/*/snapshots/*}\022\340\001\n\014Crea"
-          + "teBackup\022-.google.bigtable.admin.v2.Crea"
-          + "teBackupRequest\032\035.google.longrunning.Ope"
-          + "ration\"\201\001\312A\036\n\006Backup\022\024CreateBackupMetada"
-          + "ta\332A\027parent,backup_id,backup\202\323\344\223\002@\"6/v2/"
-          + "{parent=projects/*/instances/*/clusters/"
-          + "*}/backups:\006backup\022\240\001\n\tGetBackup\022*.googl"
-          + "e.bigtable.admin.v2.GetBackupRequest\032 .g"
-          + "oogle.bigtable.admin.v2.Backup\"E\332A\004name\202"
-          + "\323\344\223\0028\0226/v2/{name=projects/*/instances/*/"
-          + "clusters/*/backups/*}\022\303\001\n\014UpdateBackup\022-"
-          + ".google.bigtable.admin.v2.UpdateBackupRe"
-          + "quest\032 .google.bigtable.admin.v2.Backup\""
-          + "b\332A\022backup,update_mask\202\323\344\223\002G2=/v2/{backu"
-          + "p.name=projects/*/instances/*/clusters/*"
-          + "/backups/*}:\006backup\022\234\001\n\014DeleteBackup\022-.g"
-          + "oogle.bigtable.admin.v2.DeleteBackupRequ"
-          + "est\032\026.google.protobuf.Empty\"E\332A\004name\202\323\344\223"
-          + "\0028*6/v2/{name=projects/*/instances/*/clu"
-          + "sters/*/backups/*}\022\263\001\n\013ListBackups\022,.goo"
-          + "gle.bigtable.admin.v2.ListBackupsRequest"
-          + "\032-.google.bigtable.admin.v2.ListBackupsR"
-          + "esponse\"G\332A\006parent\202\323\344\223\0028\0226/v2/{parent=pr"
-          + "ojects/*/instances/*/clusters/*}/backups"
-          + "\022\273\001\n\014RestoreTable\022-.google.bigtable.admi"
-          + "n.v2.RestoreTableRequest\032\035.google.longru"
-          + "nning.Operation\"]\312A\035\n\005Table\022\024RestoreTabl"
-          + "eMetadata\202\323\344\223\0027\"2/v2/{parent=projects/*/"
-          + "instances/*}/tables:restore:\001*\022\355\001\n\nCopyB"
-          + "ackup\022+.google.bigtable.admin.v2.CopyBac"
-          + "kupRequest\032\035.google.longrunning.Operatio"
-          + "n\"\222\001\312A\034\n\006Backup\022\022CopyBackupMetadata\332A*pa"
-          + "rent,backup_id,source_backup,expire_time"
-          + "\202\323\344\223\002@\";/v2/{parent=projects/*/instances"
-          + "/*/clusters/*}/backups:copy:\001*\022\354\001\n\014GetIa"
-          + "mPolicy\022\".google.iam.v1.GetIamPolicyRequ"
-          + "est\032\025.google.iam.v1.Policy\"\240\001\332A\010resource"
-          + "\202\323\344\223\002\216\001\";/v2/{resource=projects/*/instan"
-          + "ces/*/tables/*}:getIamPolicy:\001*ZL\"G/v2/{"
-          + "resource=projects/*/instances/*/clusters"
-          + "/*/backups/*}:getIamPolicy:\001*\022\363\001\n\014SetIam"
-          + "Policy\022\".google.iam.v1.SetIamPolicyReque"
-          + "st\032\025.google.iam.v1.Policy\"\247\001\332A\017resource,"
-          + "policy\202\323\344\223\002\216\001\";/v2/{resource=projects/*/"
-          + "instances/*/tables/*}:setIamPolicy:\001*ZL\""
-          + "G/v2/{resource=projects/*/instances/*/cl"
-          + "usters/*/backups/*}:setIamPolicy:\001*\022\244\002\n\022"
-          + "TestIamPermissions\022(.google.iam.v1.TestI"
-          + "amPermissionsRequest\032).google.iam.v1.Tes"
-          + "tIamPermissionsResponse\"\270\001\332A\024resource,pe"
-          + "rmissions\202\323\344\223\002\232\001\"A/v2/{resource=projects"
-          + "/*/instances/*/tables/*}:testIamPermissi"
-          + "ons:\001*ZR\"M/v2/{resource=projects/*/insta"
-          + "nces/*/clusters/*/backups/*}:testIamPerm"
-          + "issions:\001*\032\336\002\312A\034bigtableadmin.googleapis"
-          + ".com\322A\273\002https://www.googleapis.com/auth/"
-          + "bigtable.admin,https://www.googleapis.co"
-          + "m/auth/bigtable.admin.table,https://www."
-          + "googleapis.com/auth/cloud-bigtable.admin"
-          + ",https://www.googleapis.com/auth/cloud-b"
-          + "igtable.admin.table,https://www.googleap"
-          + "is.com/auth/cloud-platform,https://www.g"
-          + "oogleapis.com/auth/cloud-platform.read-o"
-          + "nlyB\337\001\n\034com.google.bigtable.admin.v2B\027Bi"
-          + "gtableTableAdminProtoP\001Z=google.golang.o"
-          + "rg/genproto/googleapis/bigtable/admin/v2"
-          + ";admin\252\002\036Google.Cloud.Bigtable.Admin.V2\312"
-          + "\002\036Google\\Cloud\\Bigtable\\Admin\\V2\352\002\"Googl"
-          + "e::Cloud::Bigtable::Admin::V2b\006proto3"
+          + "\002\022\035\n\017ignore_warnings\030\003 \001(\010B\004\342A\001\001\032\245\001\n\014Mod"
+          + "ification\022\n\n\002id\030\001 \001(\t\0228\n\006create\030\002 \001(\0132&."
+          + "google.bigtable.admin.v2.ColumnFamilyH\000\022"
+          + "8\n\006update\030\003 \001(\0132&.google.bigtable.admin."
+          + "v2.ColumnFamilyH\000\022\016\n\004drop\030\004 \001(\010H\000B\005\n\003mod"
+          + "\"\\\n\037GenerateConsistencyTokenRequest\0229\n\004n"
+          + "ame\030\001 \001(\tB+\342A\001\002\372A$\n\"bigtableadmin.google"
+          + "apis.com/Table\"=\n GenerateConsistencyTok"
+          + "enResponse\022\031\n\021consistency_token\030\001 \001(\t\"u\n"
+          + "\027CheckConsistencyRequest\0229\n\004name\030\001 \001(\tB+"
+          + "\342A\001\002\372A$\n\"bigtableadmin.googleapis.com/Ta"
+          + "ble\022\037\n\021consistency_token\030\002 \001(\tB\004\342A\001\002\".\n\030"
+          + "CheckConsistencyResponse\022\022\n\nconsistent\030\001"
+          + " \001(\010\"\351\001\n\024SnapshotTableRequest\0229\n\004name\030\001 "
+          + "\001(\tB+\342A\001\002\372A$\n\"bigtableadmin.googleapis.c"
+          + "om/Table\022>\n\007cluster\030\002 \001(\tB-\342A\001\002\372A&\n$bigt"
+          + "ableadmin.googleapis.com/Cluster\022\031\n\013snap"
+          + "shot_id\030\003 \001(\tB\004\342A\001\002\022&\n\003ttl\030\004 \001(\0132\031.googl"
+          + "e.protobuf.Duration\022\023\n\013description\030\005 \001(\t"
+          + "\"R\n\022GetSnapshotRequest\022<\n\004name\030\001 \001(\tB.\342A"
+          + "\001\002\372A\'\n%bigtableadmin.googleapis.com/Snap"
+          + "shot\"|\n\024ListSnapshotsRequest\022=\n\006parent\030\001"
+          + " \001(\tB-\342A\001\002\372A&\n$bigtableadmin.googleapis."
+          + "com/Cluster\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_t"
+          + "oken\030\003 \001(\t\"g\n\025ListSnapshotsResponse\0225\n\ts"
+          + "napshots\030\001 \003(\0132\".google.bigtable.admin.v"
+          + "2.Snapshot\022\027\n\017next_page_token\030\002 \001(\t\"U\n\025D"
+          + "eleteSnapshotRequest\022<\n\004name\030\001 \001(\tB.\342A\001\002"
+          + "\372A\'\n%bigtableadmin.googleapis.com/Snapsh"
+          + "ot\"\304\001\n\025SnapshotTableMetadata\022H\n\020original"
+          + "_request\030\001 \001(\0132..google.bigtable.admin.v"
+          + "2.SnapshotTableRequest\0220\n\014request_time\030\002"
+          + " \001(\0132\032.google.protobuf.Timestamp\022/\n\013fini"
+          + "sh_time\030\003 \001(\0132\032.google.protobuf.Timestam"
+          + "p\"\330\001\n\037CreateTableFromSnapshotMetadata\022R\n"
+          + "\020original_request\030\001 \001(\01328.google.bigtabl"
+          + "e.admin.v2.CreateTableFromSnapshotReques"
+          + "t\0220\n\014request_time\030\002 \001(\0132\032.google.protobu"
+          + "f.Timestamp\022/\n\013finish_time\030\003 \001(\0132\032.googl"
+          + "e.protobuf.Timestamp\"\245\001\n\023CreateBackupReq"
+          + "uest\022=\n\006parent\030\001 \001(\tB-\342A\001\002\372A&\n$bigtablea"
+          + "dmin.googleapis.com/Cluster\022\027\n\tbackup_id"
+          + "\030\002 \001(\tB\004\342A\001\002\0226\n\006backup\030\003 \001(\0132 .google.bi"
+          + "gtable.admin.v2.BackupB\004\342A\001\002\"\230\001\n\024CreateB"
+          + "ackupMetadata\022\014\n\004name\030\001 \001(\t\022\024\n\014source_ta"
+          + "ble\030\002 \001(\t\022.\n\nstart_time\030\003 \001(\0132\032.google.p"
+          + "rotobuf.Timestamp\022,\n\010end_time\030\004 \001(\0132\032.go"
+          + "ogle.protobuf.Timestamp\"\204\001\n\023UpdateBackup"
+          + "Request\0226\n\006backup\030\001 \001(\0132 .google.bigtabl"
+          + "e.admin.v2.BackupB\004\342A\001\002\0225\n\013update_mask\030\002"
+          + " \001(\0132\032.google.protobuf.FieldMaskB\004\342A\001\002\"N"
+          + "\n\020GetBackupRequest\022:\n\004name\030\001 \001(\tB,\342A\001\002\372A"
+          + "%\n#bigtableadmin.googleapis.com/Backup\"Q"
+          + "\n\023DeleteBackupRequest\022:\n\004name\030\001 \001(\tB,\342A\001"
+          + "\002\372A%\n#bigtableadmin.googleapis.com/Backu"
+          + "p\"\234\001\n\022ListBackupsRequest\022=\n\006parent\030\001 \001(\t"
+          + "B-\342A\001\002\372A&\n$bigtableadmin.googleapis.com/"
+          + "Cluster\022\016\n\006filter\030\002 \001(\t\022\020\n\010order_by\030\003 \001("
+          + "\t\022\021\n\tpage_size\030\004 \001(\005\022\022\n\npage_token\030\005 \001(\t"
+          + "\"a\n\023ListBackupsResponse\0221\n\007backups\030\001 \003(\013"
+          + "2 .google.bigtable.admin.v2.Backup\022\027\n\017ne"
+          + "xt_page_token\030\002 \001(\t\"\347\001\n\021CopyBackupReques"
+          + "t\022=\n\006parent\030\001 \001(\tB-\342A\001\002\372A&\n$bigtableadmi"
+          + "n.googleapis.com/Cluster\022\027\n\tbackup_id\030\002 "
+          + "\001(\tB\004\342A\001\002\022C\n\rsource_backup\030\003 \001(\tB,\342A\001\002\372A"
+          + "%\n#bigtableadmin.googleapis.com/Backup\0225"
+          + "\n\013expire_time\030\004 \001(\0132\032.google.protobuf.Ti"
+          + "mestampB\004\342A\001\002\"\315\001\n\022CopyBackupMetadata\0226\n\004"
+          + "name\030\001 \001(\tB(\372A%\n#bigtableadmin.googleapi"
+          + "s.com/Backup\022@\n\022source_backup_info\030\002 \001(\013"
+          + "2$.google.bigtable.admin.v2.BackupInfo\022="
+          + "\n\010progress\030\003 \001(\0132+.google.bigtable.admin"
+          + ".v2.OperationProgress2\242*\n\022BigtableTableA"
+          + "dmin\022\253\001\n\013CreateTable\022,.google.bigtable.a"
+          + "dmin.v2.CreateTableRequest\032\037.google.bigt"
+          + "able.admin.v2.Table\"M\332A\025parent,table_id,"
+          + "table\202\323\344\223\002/\"*/v2/{parent=projects/*/inst"
+          + "ances/*}/tables:\001*\022\212\002\n\027CreateTableFromSn"
+          + "apshot\0228.google.bigtable.admin.v2.Create"
+          + "TableFromSnapshotRequest\032\035.google.longru"
+          + "nning.Operation\"\225\001\312A(\n\005Table\022\037CreateTabl"
+          + "eFromSnapshotMetadata\332A\037parent,table_id,"
+          + "source_snapshot\202\323\344\223\002B\"=/v2/{parent=proje"
+          + "cts/*/instances/*}/tables:createFromSnap"
+          + "shot:\001*\022\244\001\n\nListTables\022+.google.bigtable"
+          + ".admin.v2.ListTablesRequest\032,.google.big"
+          + "table.admin.v2.ListTablesResponse\";\332A\006pa"
+          + "rent\202\323\344\223\002,\022*/v2/{parent=projects/*/insta"
+          + "nces/*}/tables\022\221\001\n\010GetTable\022).google.big"
+          + "table.admin.v2.GetTableRequest\032\037.google."
+          + "bigtable.admin.v2.Table\"9\332A\004name\202\323\344\223\002,\022*"
+          + "/v2/{name=projects/*/instances/*/tables/"
+          + "*}\022\316\001\n\013UpdateTable\022,.google.bigtable.adm"
+          + "in.v2.UpdateTableRequest\032\035.google.longru"
+          + "nning.Operation\"r\312A\034\n\005Table\022\023UpdateTable"
+          + "Metadata\332A\021table,update_mask\202\323\344\223\002920/v2/"
+          + "{table.name=projects/*/instances/*/table"
+          + "s/*}:\005table\022\216\001\n\013DeleteTable\022,.google.big"
+          + "table.admin.v2.DeleteTableRequest\032\026.goog"
+          + "le.protobuf.Empty\"9\332A\004name\202\323\344\223\002,**/v2/{n"
+          + "ame=projects/*/instances/*/tables/*}\022\306\001\n"
+          + "\rUndeleteTable\022..google.bigtable.admin.v"
+          + "2.UndeleteTableRequest\032\035.google.longrunn"
+          + "ing.Operation\"f\312A\036\n\005Table\022\025UndeleteTable"
+          + "Metadata\332A\004name\202\323\344\223\0028\"3/v2/{name=project"
+          + "s/*/instances/*/tables/*}:undelete:\001*\022\317\001"
+          + "\n\024ModifyColumnFamilies\0225.google.bigtable"
+          + ".admin.v2.ModifyColumnFamiliesRequest\032\037."
+          + "google.bigtable.admin.v2.Table\"_\332A\022name,"
+          + "modifications\202\323\344\223\002D\"?/v2/{name=projects/"
+          + "*/instances/*/tables/*}:modifyColumnFami"
+          + "lies:\001*\022\231\001\n\014DropRowRange\022-.google.bigtab"
+          + "le.admin.v2.DropRowRangeRequest\032\026.google"
+          + ".protobuf.Empty\"B\202\323\344\223\002<\"7/v2/{name=proje"
+          + "cts/*/instances/*/tables/*}:dropRowRange"
+          + ":\001*\022\350\001\n\030GenerateConsistencyToken\0229.googl"
+          + "e.bigtable.admin.v2.GenerateConsistencyT"
+          + "okenRequest\032:.google.bigtable.admin.v2.G"
+          + "enerateConsistencyTokenResponse\"U\332A\004name"
+          + "\202\323\344\223\002H\"C/v2/{name=projects/*/instances/*"
+          + "/tables/*}:generateConsistencyToken:\001*\022\332"
+          + "\001\n\020CheckConsistency\0221.google.bigtable.ad"
+          + "min.v2.CheckConsistencyRequest\0322.google."
+          + "bigtable.admin.v2.CheckConsistencyRespon"
+          + "se\"_\332A\026name,consistency_token\202\323\344\223\002@\";/v2"
+          + "/{name=projects/*/instances/*/tables/*}:"
+          + "checkConsistency:\001*\022\352\001\n\rSnapshotTable\022.."
+          + "google.bigtable.admin.v2.SnapshotTableRe"
+          + "quest\032\035.google.longrunning.Operation\"\211\001\312"
+          + "A!\n\010Snapshot\022\025SnapshotTableMetadata\332A$na"
+          + "me,cluster,snapshot_id,description\202\323\344\223\0028"
+          + "\"3/v2/{name=projects/*/instances/*/table"
+          + "s/*}:snapshot:\001*\022\250\001\n\013GetSnapshot\022,.googl"
+          + "e.bigtable.admin.v2.GetSnapshotRequest\032\""
+          + ".google.bigtable.admin.v2.Snapshot\"G\332A\004n"
+          + "ame\202\323\344\223\002:\0228/v2/{name=projects/*/instance"
+          + "s/*/clusters/*/snapshots/*}\022\273\001\n\rListSnap"
+          + "shots\022..google.bigtable.admin.v2.ListSna"
+          + "pshotsRequest\032/.google.bigtable.admin.v2"
+          + ".ListSnapshotsResponse\"I\332A\006parent\202\323\344\223\002:\022"
+          + "8/v2/{parent=projects/*/instances/*/clus"
+          + "ters/*}/snapshots\022\242\001\n\016DeleteSnapshot\022/.g"
+          + "oogle.bigtable.admin.v2.DeleteSnapshotRe"
+          + "quest\032\026.google.protobuf.Empty\"G\332A\004name\202\323"
+          + "\344\223\002:*8/v2/{name=projects/*/instances/*/c"
+          + "lusters/*/snapshots/*}\022\340\001\n\014CreateBackup\022"
+          + "-.google.bigtable.admin.v2.CreateBackupR"
+          + "equest\032\035.google.longrunning.Operation\"\201\001"
+          + "\312A\036\n\006Backup\022\024CreateBackupMetadata\332A\027pare"
+          + "nt,backup_id,backup\202\323\344\223\002@\"6/v2/{parent=p"
+          + "rojects/*/instances/*/clusters/*}/backup"
+          + "s:\006backup\022\240\001\n\tGetBackup\022*.google.bigtabl"
+          + "e.admin.v2.GetBackupRequest\032 .google.big"
+          + "table.admin.v2.Backup\"E\332A\004name\202\323\344\223\0028\0226/v"
+          + "2/{name=projects/*/instances/*/clusters/"
+          + "*/backups/*}\022\303\001\n\014UpdateBackup\022-.google.b"
+          + "igtable.admin.v2.UpdateBackupRequest\032 .g"
+          + "oogle.bigtable.admin.v2.Backup\"b\332A\022backu"
+          + "p,update_mask\202\323\344\223\002G2=/v2/{backup.name=pr"
+          + "ojects/*/instances/*/clusters/*/backups/"
+          + "*}:\006backup\022\234\001\n\014DeleteBackup\022-.google.big"
+          + "table.admin.v2.DeleteBackupRequest\032\026.goo"
+          + "gle.protobuf.Empty\"E\332A\004name\202\323\344\223\0028*6/v2/{"
+          + "name=projects/*/instances/*/clusters/*/b"
+          + "ackups/*}\022\263\001\n\013ListBackups\022,.google.bigta"
+          + "ble.admin.v2.ListBackupsRequest\032-.google"
+          + ".bigtable.admin.v2.ListBackupsResponse\"G"
+          + "\332A\006parent\202\323\344\223\0028\0226/v2/{parent=projects/*/"
+          + "instances/*/clusters/*}/backups\022\273\001\n\014Rest"
+          + "oreTable\022-.google.bigtable.admin.v2.Rest"
+          + "oreTableRequest\032\035.google.longrunning.Ope"
+          + "ration\"]\312A\035\n\005Table\022\024RestoreTableMetadata"
+          + "\202\323\344\223\0027\"2/v2/{parent=projects/*/instances"
+          + "/*}/tables:restore:\001*\022\355\001\n\nCopyBackup\022+.g"
+          + "oogle.bigtable.admin.v2.CopyBackupReques"
+          + "t\032\035.google.longrunning.Operation\"\222\001\312A\034\n\006"
+          + "Backup\022\022CopyBackupMetadata\332A*parent,back"
+          + "up_id,source_backup,expire_time\202\323\344\223\002@\";/"
+          + "v2/{parent=projects/*/instances/*/cluste"
+          + "rs/*}/backups:copy:\001*\022\354\001\n\014GetIamPolicy\022\""
+          + ".google.iam.v1.GetIamPolicyRequest\032\025.goo"
+          + "gle.iam.v1.Policy\"\240\001\332A\010resource\202\323\344\223\002\216\001\";"
+          + "/v2/{resource=projects/*/instances/*/tab"
+          + "les/*}:getIamPolicy:\001*ZL\"G/v2/{resource="
+          + "projects/*/instances/*/clusters/*/backup"
+          + "s/*}:getIamPolicy:\001*\022\363\001\n\014SetIamPolicy\022\"."
+          + "google.iam.v1.SetIamPolicyRequest\032\025.goog"
+          + "le.iam.v1.Policy\"\247\001\332A\017resource,policy\202\323\344"
+          + "\223\002\216\001\";/v2/{resource=projects/*/instances"
+          + "/*/tables/*}:setIamPolicy:\001*ZL\"G/v2/{res"
+          + "ource=projects/*/instances/*/clusters/*/"
+          + "backups/*}:setIamPolicy:\001*\022\244\002\n\022TestIamPe"
+          + "rmissions\022(.google.iam.v1.TestIamPermiss"
+          + "ionsRequest\032).google.iam.v1.TestIamPermi"
+          + "ssionsResponse\"\270\001\332A\024resource,permissions"
+          + "\202\323\344\223\002\232\001\"A/v2/{resource=projects/*/instan"
+          + "ces/*/tables/*}:testIamPermissions:\001*ZR\""
+          + "M/v2/{resource=projects/*/instances/*/cl"
+          + "usters/*/backups/*}:testIamPermissions:\001"
+          + "*\032\336\002\312A\034bigtableadmin.googleapis.com\322A\273\002h"
+          + "ttps://www.googleapis.com/auth/bigtable."
+          + "admin,https://www.googleapis.com/auth/bi"
+          + "gtable.admin.table,https://www.googleapi"
+          + "s.com/auth/cloud-bigtable.admin,https://"
+          + "www.googleapis.com/auth/cloud-bigtable.a"
+          + "dmin.table,https://www.googleapis.com/au"
+          + "th/cloud-platform,https://www.googleapis"
+          + ".com/auth/cloud-platform.read-onlyB\337\001\n\034c"
+          + "om.google.bigtable.admin.v2B\027BigtableTab"
+          + "leAdminProtoP\001Z=google.golang.org/genpro"
+          + "to/googleapis/bigtable/admin/v2;admin\252\002\036"
+          + "Google.Cloud.Bigtable.Admin.V2\312\002\036Google\\"
+          + "Cloud\\Bigtable\\Admin\\V2\352\002\"Google::Cloud:"
+          + ":Bigtable::Admin::V2b\006proto3"
     };
     descriptor =
         com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -620,7 +621,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
         new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
             internal_static_google_bigtable_admin_v2_ModifyColumnFamiliesRequest_descriptor,
             new java.lang.String[] {
-              "Name", "Modifications",
+              "Name", "Modifications", "IgnoreWarnings",
             });
     internal_static_google_bigtable_admin_v2_ModifyColumnFamiliesRequest_Modification_descriptor =
         internal_static_google_bigtable_admin_v2_ModifyColumnFamiliesRequest_descriptor
diff --git a/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/ModifyColumnFamiliesRequest.java b/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/ModifyColumnFamiliesRequest.java
index 5eaa481fee..6c0d53debd 100644
--- a/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/ModifyColumnFamiliesRequest.java
+++ b/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/ModifyColumnFamiliesRequest.java
@@ -1819,6 +1819,24 @@ public com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest.Modification get
     return modifications_.get(index);
   }
 
+  public static final int IGNORE_WARNINGS_FIELD_NUMBER = 3;
+  private boolean ignoreWarnings_ = false;
+  /**
+   *
+   *
+   * <pre>
+   * Optional. If true, ignore safety checks when modifying the column families.
+   * </pre>
+   *
+   * <code>bool ignore_warnings = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
+   *
+   * @return The ignoreWarnings.
+   */
+  @java.lang.Override
+  public boolean getIgnoreWarnings() {
+    return ignoreWarnings_;
+  }
+
   private byte memoizedIsInitialized = -1;
 
   @java.lang.Override
@@ -1839,6 +1857,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     for (int i = 0; i < modifications_.size(); i++) {
       output.writeMessage(2, modifications_.get(i));
     }
+    if (ignoreWarnings_ != false) {
+      output.writeBool(3, ignoreWarnings_);
+    }
     getUnknownFields().writeTo(output);
   }
 
@@ -1854,6 +1875,9 @@ public int getSerializedSize() {
     for (int i = 0; i < modifications_.size(); i++) {
       size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, modifications_.get(i));
     }
+    if (ignoreWarnings_ != false) {
+      size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, ignoreWarnings_);
+    }
     size += getUnknownFields().getSerializedSize();
     memoizedSize = size;
     return size;
@@ -1872,6 +1896,7 @@ public boolean equals(final java.lang.Object obj) {
 
     if (!getName().equals(other.getName())) return false;
     if (!getModificationsList().equals(other.getModificationsList())) return false;
+    if (getIgnoreWarnings() != other.getIgnoreWarnings()) return false;
     if (!getUnknownFields().equals(other.getUnknownFields())) return false;
     return true;
   }
@@ -1889,6 +1914,8 @@ public int hashCode() {
       hash = (37 * hash) + MODIFICATIONS_FIELD_NUMBER;
       hash = (53 * hash) + getModificationsList().hashCode();
     }
+    hash = (37 * hash) + IGNORE_WARNINGS_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIgnoreWarnings());
     hash = (29 * hash) + getUnknownFields().hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -2038,6 +2065,7 @@ public Builder clear() {
         modificationsBuilder_.clear();
       }
       bitField0_ = (bitField0_ & ~0x00000002);
+      ignoreWarnings_ = false;
       return this;
     }
 
@@ -2091,6 +2119,9 @@ private void buildPartial0(com.google.bigtable.admin.v2.ModifyColumnFamiliesRequ
       if (((from_bitField0_ & 0x00000001) != 0)) {
         result.name_ = name_;
       }
+      if (((from_bitField0_ & 0x00000004) != 0)) {
+        result.ignoreWarnings_ = ignoreWarnings_;
+      }
     }
 
     @java.lang.Override
@@ -2171,6 +2202,9 @@ public Builder mergeFrom(com.google.bigtable.admin.v2.ModifyColumnFamiliesReques
           }
         }
       }
+      if (other.getIgnoreWarnings() != false) {
+        setIgnoreWarnings(other.getIgnoreWarnings());
+      }
       this.mergeUnknownFields(other.getUnknownFields());
       onChanged();
       return this;
@@ -2218,6 +2252,12 @@ public Builder mergeFrom(
                 }
                 break;
               } // case 18
+            case 24:
+              {
+                ignoreWarnings_ = input.readBool();
+                bitField0_ |= 0x00000004;
+                break;
+              } // case 24
             default:
               {
                 if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -2833,6 +2873,59 @@ public Builder removeModifications(int index) {
       return modificationsBuilder_;
     }
 
+    private boolean ignoreWarnings_;
+    /**
+     *
+     *
+     * <pre>
+     * Optional. If true, ignore safety checks when modifying the column families.
+     * </pre>
+     *
+     * <code>bool ignore_warnings = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
+     *
+     * @return The ignoreWarnings.
+     */
+    @java.lang.Override
+    public boolean getIgnoreWarnings() {
+      return ignoreWarnings_;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. If true, ignore safety checks when modifying the column families.
+     * </pre>
+     *
+     * <code>bool ignore_warnings = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
+     *
+     * @param value The ignoreWarnings to set.
+     * @return This builder for chaining.
+     */
+    public Builder setIgnoreWarnings(boolean value) {
+
+      ignoreWarnings_ = value;
+      bitField0_ |= 0x00000004;
+      onChanged();
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Optional. If true, ignore safety checks when modifying the column families.
+     * </pre>
+     *
+     * <code>bool ignore_warnings = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
+     *
+     * @return This builder for chaining.
+     */
+    public Builder clearIgnoreWarnings() {
+      bitField0_ = (bitField0_ & ~0x00000004);
+      ignoreWarnings_ = false;
+      onChanged();
+      return this;
+    }
+
     @java.lang.Override
     public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
       return super.setUnknownFields(unknownFields);
diff --git a/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/ModifyColumnFamiliesRequestOrBuilder.java b/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/ModifyColumnFamiliesRequestOrBuilder.java
index e386edffea..382407649d 100644
--- a/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/ModifyColumnFamiliesRequestOrBuilder.java
+++ b/proto-google-cloud-bigtable-admin-v2/src/main/java/com/google/bigtable/admin/v2/ModifyColumnFamiliesRequestOrBuilder.java
@@ -135,4 +135,17 @@ public interface ModifyColumnFamiliesRequestOrBuilder
    */
   com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest.ModificationOrBuilder
       getModificationsOrBuilder(int index);
+
+  /**
+   *
+   *
+   * <pre>
+   * Optional. If true, ignore safety checks when modifying the column families.
+   * </pre>
+   *
+   * <code>bool ignore_warnings = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
+   *
+   * @return The ignoreWarnings.
+   */
+  boolean getIgnoreWarnings();
 }
diff --git a/proto-google-cloud-bigtable-admin-v2/src/main/proto/google/bigtable/admin/v2/bigtable_table_admin.proto b/proto-google-cloud-bigtable-admin-v2/src/main/proto/google/bigtable/admin/v2/bigtable_table_admin.proto
index 8c516abe7a..62cd7d6555 100644
--- a/proto-google-cloud-bigtable-admin-v2/src/main/proto/google/bigtable/admin/v2/bigtable_table_admin.proto
+++ b/proto-google-cloud-bigtable-admin-v2/src/main/proto/google/bigtable/admin/v2/bigtable_table_admin.proto
@@ -734,6 +734,9 @@ message ModifyColumnFamiliesRequest {
   // family, for example).
   repeated Modification modifications = 2
       [(google.api.field_behavior) = REQUIRED];
+
+  // Optional. If true, ignore safety checks when modifying the column families.
+  bool ignore_warnings = 3 [(google.api.field_behavior) = OPTIONAL];
 }
 
 // Request message for
diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlags.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlags.java
index 953adab411..ed3a97f9a8 100644
--- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlags.java
+++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlags.java
@@ -145,6 +145,44 @@ public boolean getLastScannedRowResponses() {
     return lastScannedRowResponses_;
   }
 
+  public static final int ROUTING_COOKIE_FIELD_NUMBER = 6;
+  private boolean routingCookie_ = false;
+  /**
+   *
+   *
+   * <pre>
+   * Notify the server that the client supports using encoded routing cookie
+   * strings to retry requests with.
+   * </pre>
+   *
+   * <code>bool routing_cookie = 6;</code>
+   *
+   * @return The routingCookie.
+   */
+  @java.lang.Override
+  public boolean getRoutingCookie() {
+    return routingCookie_;
+  }
+
+  public static final int RETRY_INFO_FIELD_NUMBER = 7;
+  private boolean retryInfo_ = false;
+  /**
+   *
+   *
+   * <pre>
+   * Notify the server that the client supports using retry info back off
+   * durations to retry requests with.
+   * </pre>
+   *
+   * <code>bool retry_info = 7;</code>
+   *
+   * @return The retryInfo.
+   */
+  @java.lang.Override
+  public boolean getRetryInfo() {
+    return retryInfo_;
+  }
+
   private byte memoizedIsInitialized = -1;
 
   @java.lang.Override
@@ -171,6 +209,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     if (mutateRowsRateLimit2_ != false) {
       output.writeBool(5, mutateRowsRateLimit2_);
     }
+    if (routingCookie_ != false) {
+      output.writeBool(6, routingCookie_);
+    }
+    if (retryInfo_ != false) {
+      output.writeBool(7, retryInfo_);
+    }
     getUnknownFields().writeTo(output);
   }
 
@@ -192,6 +236,12 @@ public int getSerializedSize() {
     if (mutateRowsRateLimit2_ != false) {
       size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, mutateRowsRateLimit2_);
     }
+    if (routingCookie_ != false) {
+      size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, routingCookie_);
+    }
+    if (retryInfo_ != false) {
+      size += com.google.protobuf.CodedOutputStream.computeBoolSize(7, retryInfo_);
+    }
     size += getUnknownFields().getSerializedSize();
     memoizedSize = size;
     return size;
@@ -211,6 +261,8 @@ public boolean equals(final java.lang.Object obj) {
     if (getMutateRowsRateLimit() != other.getMutateRowsRateLimit()) return false;
     if (getMutateRowsRateLimit2() != other.getMutateRowsRateLimit2()) return false;
     if (getLastScannedRowResponses() != other.getLastScannedRowResponses()) return false;
+    if (getRoutingCookie() != other.getRoutingCookie()) return false;
+    if (getRetryInfo() != other.getRetryInfo()) return false;
     if (!getUnknownFields().equals(other.getUnknownFields())) return false;
     return true;
   }
@@ -230,6 +282,10 @@ public int hashCode() {
     hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getMutateRowsRateLimit2());
     hash = (37 * hash) + LAST_SCANNED_ROW_RESPONSES_FIELD_NUMBER;
     hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getLastScannedRowResponses());
+    hash = (37 * hash) + ROUTING_COOKIE_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getRoutingCookie());
+    hash = (37 * hash) + RETRY_INFO_FIELD_NUMBER;
+    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getRetryInfo());
     hash = (29 * hash) + getUnknownFields().hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -379,6 +435,8 @@ public Builder clear() {
       mutateRowsRateLimit_ = false;
       mutateRowsRateLimit2_ = false;
       lastScannedRowResponses_ = false;
+      routingCookie_ = false;
+      retryInfo_ = false;
       return this;
     }
 
@@ -426,6 +484,12 @@ private void buildPartial0(com.google.bigtable.v2.FeatureFlags result) {
       if (((from_bitField0_ & 0x00000008) != 0)) {
         result.lastScannedRowResponses_ = lastScannedRowResponses_;
       }
+      if (((from_bitField0_ & 0x00000010) != 0)) {
+        result.routingCookie_ = routingCookie_;
+      }
+      if (((from_bitField0_ & 0x00000020) != 0)) {
+        result.retryInfo_ = retryInfo_;
+      }
     }
 
     @java.lang.Override
@@ -485,6 +549,12 @@ public Builder mergeFrom(com.google.bigtable.v2.FeatureFlags other) {
       if (other.getLastScannedRowResponses() != false) {
         setLastScannedRowResponses(other.getLastScannedRowResponses());
       }
+      if (other.getRoutingCookie() != false) {
+        setRoutingCookie(other.getRoutingCookie());
+      }
+      if (other.getRetryInfo() != false) {
+        setRetryInfo(other.getRetryInfo());
+      }
       this.mergeUnknownFields(other.getUnknownFields());
       onChanged();
       return this;
@@ -535,6 +605,18 @@ public Builder mergeFrom(
                 bitField0_ |= 0x00000004;
                 break;
               } // case 40
+            case 48:
+              {
+                routingCookie_ = input.readBool();
+                bitField0_ |= 0x00000010;
+                break;
+              } // case 48
+            case 56:
+              {
+                retryInfo_ = input.readBool();
+                bitField0_ |= 0x00000020;
+                break;
+              } // case 56
             default:
               {
                 if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -784,6 +866,118 @@ public Builder clearLastScannedRowResponses() {
       return this;
     }
 
+    private boolean routingCookie_;
+    /**
+     *
+     *
+     * <pre>
+     * Notify the server that the client supports using encoded routing cookie
+     * strings to retry requests with.
+     * </pre>
+     *
+     * <code>bool routing_cookie = 6;</code>
+     *
+     * @return The routingCookie.
+     */
+    @java.lang.Override
+    public boolean getRoutingCookie() {
+      return routingCookie_;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Notify the server that the client supports using encoded routing cookie
+     * strings to retry requests with.
+     * </pre>
+     *
+     * <code>bool routing_cookie = 6;</code>
+     *
+     * @param value The routingCookie to set.
+     * @return This builder for chaining.
+     */
+    public Builder setRoutingCookie(boolean value) {
+
+      routingCookie_ = value;
+      bitField0_ |= 0x00000010;
+      onChanged();
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Notify the server that the client supports using encoded routing cookie
+     * strings to retry requests with.
+     * </pre>
+     *
+     * <code>bool routing_cookie = 6;</code>
+     *
+     * @return This builder for chaining.
+     */
+    public Builder clearRoutingCookie() {
+      bitField0_ = (bitField0_ & ~0x00000010);
+      routingCookie_ = false;
+      onChanged();
+      return this;
+    }
+
+    private boolean retryInfo_;
+    /**
+     *
+     *
+     * <pre>
+     * Notify the server that the client supports using retry info back off
+     * durations to retry requests with.
+     * </pre>
+     *
+     * <code>bool retry_info = 7;</code>
+     *
+     * @return The retryInfo.
+     */
+    @java.lang.Override
+    public boolean getRetryInfo() {
+      return retryInfo_;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Notify the server that the client supports using retry info back off
+     * durations to retry requests with.
+     * </pre>
+     *
+     * <code>bool retry_info = 7;</code>
+     *
+     * @param value The retryInfo to set.
+     * @return This builder for chaining.
+     */
+    public Builder setRetryInfo(boolean value) {
+
+      retryInfo_ = value;
+      bitField0_ |= 0x00000020;
+      onChanged();
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Notify the server that the client supports using retry info back off
+     * durations to retry requests with.
+     * </pre>
+     *
+     * <code>bool retry_info = 7;</code>
+     *
+     * @return This builder for chaining.
+     */
+    public Builder clearRetryInfo() {
+      bitField0_ = (bitField0_ & ~0x00000020);
+      retryInfo_ = false;
+      onChanged();
+      return this;
+    }
+
     @java.lang.Override
     public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
       return super.setUnknownFields(unknownFields);
diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlagsOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlagsOrBuilder.java
index 0696b9d05a..40dc1a2ad9 100644
--- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlagsOrBuilder.java
+++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlagsOrBuilder.java
@@ -80,4 +80,32 @@ public interface FeatureFlagsOrBuilder
    * @return The lastScannedRowResponses.
    */
   boolean getLastScannedRowResponses();
+
+  /**
+   *
+   *
+   * <pre>
+   * Notify the server that the client supports using encoded routing cookie
+   * strings to retry requests with.
+   * </pre>
+   *
+   * <code>bool routing_cookie = 6;</code>
+   *
+   * @return The routingCookie.
+   */
+  boolean getRoutingCookie();
+
+  /**
+   *
+   *
+   * <pre>
+   * Notify the server that the client supports using retry info back off
+   * durations to retry requests with.
+   * </pre>
+   *
+   * <code>bool retry_info = 7;</code>
+   *
+   * @return The retryInfo.
+   */
+  boolean getRetryInfo();
 }
diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlagsProto.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlagsProto.java
index 91b2c97e8c..2072fb2852 100644
--- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlagsProto.java
+++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/FeatureFlagsProto.java
@@ -41,16 +41,17 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
   static {
     java.lang.String[] descriptorData = {
       "\n&google/bigtable/v2/feature_flags.proto"
-          + "\022\022google.bigtable.v2\"\212\001\n\014FeatureFlags\022\025\n"
+          + "\022\022google.bigtable.v2\"\266\001\n\014FeatureFlags\022\025\n"
           + "\rreverse_scans\030\001 \001(\010\022\036\n\026mutate_rows_rate"
           + "_limit\030\003 \001(\010\022\037\n\027mutate_rows_rate_limit2\030"
           + "\005 \001(\010\022\"\n\032last_scanned_row_responses\030\004 \001("
-          + "\010B\275\001\n\026com.google.bigtable.v2B\021FeatureFla"
-          + "gsProtoP\001Z:google.golang.org/genproto/go"
-          + "ogleapis/bigtable/v2;bigtable\252\002\030Google.C"
-          + "loud.Bigtable.V2\312\002\030Google\\Cloud\\Bigtable"
-          + "\\V2\352\002\033Google::Cloud::Bigtable::V2b\006proto"
-          + "3"
+          + "\010\022\026\n\016routing_cookie\030\006 \001(\010\022\022\n\nretry_info\030"
+          + "\007 \001(\010B\275\001\n\026com.google.bigtable.v2B\021Featur"
+          + "eFlagsProtoP\001Z:google.golang.org/genprot"
+          + "o/googleapis/bigtable/v2;bigtable\252\002\030Goog"
+          + "le.Cloud.Bigtable.V2\312\002\030Google\\Cloud\\Bigt"
+          + "able\\V2\352\002\033Google::Cloud::Bigtable::V2b\006p"
+          + "roto3"
     };
     descriptor =
         com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -65,6 +66,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
               "MutateRowsRateLimit",
               "MutateRowsRateLimit2",
               "LastScannedRowResponses",
+              "RoutingCookie",
+              "RetryInfo",
             });
   }
 
diff --git a/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/feature_flags.proto b/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/feature_flags.proto
index 942646c6b5..d3128c5c67 100644
--- a/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/feature_flags.proto
+++ b/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/feature_flags.proto
@@ -50,4 +50,12 @@ message FeatureFlags {
   // Notify the server that the client supports the last_scanned_row field
   // in ReadRowsResponse for long-running scans.
   bool last_scanned_row_responses = 4;
+
+  // Notify the server that the client supports using encoded routing cookie
+  // strings to retry requests with.
+  bool routing_cookie = 6;
+
+  // Notify the server that the client supports using retry info back off
+  // durations to retry requests with.
+  bool retry_info = 7;
 }