Skip to content

Commit 59d721e

Browse files
committed
Merge branch 'main' of github.com:mpeddada1/google-cloud-cpp into it-null-query
2 parents 12d8e35 + a3f8ffb commit 59d721e

File tree

11 files changed

+334
-96
lines changed

11 files changed

+334
-96
lines changed

MODULE.bazel

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ python.toolchain(
5555
bazel_dep(name = "googleapis", version = "0.0.0", repo_name = "com_google_googleapis")
5656
archive_override(
5757
module_name = "googleapis",
58-
integrity = "sha256-GawBML87NtuNxTKN0wt7Rz3K8Z25s0yODN8ZgyRTamI=",
58+
integrity = "sha256-19J02RR+UvY5cqIGTGDPLmMGa2VaJG9+DQJ0Xkn8HTs=",
5959
patch_strip = 1,
6060
patches = ["//bazel:googleapis.modules.patch"],
61-
strip_prefix = "googleapis-53af3b727f84acc34e31c23f3b6e7b8aa4b7e837",
61+
strip_prefix = "googleapis-659ea6e98acc7d58661ce2aa7b4cf76a7ef3fd42",
6262
urls = [
63-
"https://github.com/googleapis/googleapis/archive/53af3b727f84acc34e31c23f3b6e7b8aa4b7e837.tar.gz",
63+
"https://github.com/googleapis/googleapis/archive/659ea6e98acc7d58661ce2aa7b4cf76a7ef3fd42.tar.gz",
6464
],
6565
)
6666

bazel/workspace0.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,10 @@ def gl_cpp_workspace0(name = None):
126126
http_archive,
127127
name = "com_google_googleapis",
128128
urls = [
129-
"https://github.com/googleapis/googleapis/archive/53af3b727f84acc34e31c23f3b6e7b8aa4b7e837.tar.gz",
129+
"https://github.com/googleapis/googleapis/archive/659ea6e98acc7d58661ce2aa7b4cf76a7ef3fd42.tar.gz",
130130
],
131-
sha256 = "19ac0130bf3b36db8dc5328dd30b7b473dcaf19db9b34c8e0cdf198324536a62",
132-
strip_prefix = "googleapis-53af3b727f84acc34e31c23f3b6e7b8aa4b7e837",
131+
sha256 = "d7d274d9147e52f63972a2064c60cf2e63066b655a246f7e0d02745e49fc1d3b",
132+
strip_prefix = "googleapis-659ea6e98acc7d58661ce2aa7b4cf76a7ef3fd42",
133133
build_file = Label("//bazel:googleapis.BUILD"),
134134
# Scaffolding for patching googleapis after download. For example:
135135
# patches = ["googleapis.patch"]

cmake/GoogleapisConfig.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ set(GOOGLE_CLOUD_CPP_GOOGLEAPIS_SHA256
2727
mark_as_advanced(GOOGLE_CLOUD_CPP_GOOGLEAPIS_SHA256)
2828

2929
set(_GOOGLE_CLOUD_CPP_GOOGLEAPIS_COMMIT_SHA
30-
"53af3b727f84acc34e31c23f3b6e7b8aa4b7e837")
30+
"659ea6e98acc7d58661ce2aa7b4cf76a7ef3fd42")
3131
set(_GOOGLE_CLOUD_CPP_GOOGLEAPIS_SHA256
32-
"19ac0130bf3b36db8dc5328dd30b7b473dcaf19db9b34c8e0cdf198324536a62")
32+
"d7d274d9147e52f63972a2064c60cf2e63066b655a246f7e0d02745e49fc1d3b")
3333

3434
set(DOXYGEN_ALIASES
3535
"googleapis_link{2}=\"[\\1](https://github.com/googleapis/googleapis/blob/${_GOOGLE_CLOUD_CPP_GOOGLEAPIS_COMMIT_SHA}/\\2)\""

external/googleapis/protolists/bigtable.list

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
@com_google_googleapis//google/bigtable/v2:bigtable.proto
88
@com_google_googleapis//google/bigtable/v2:data.proto
99
@com_google_googleapis//google/bigtable/v2:feature_flags.proto
10+
@com_google_googleapis//google/bigtable/v2:peer_info.proto
1011
@com_google_googleapis//google/bigtable/v2:request_stats.proto
1112
@com_google_googleapis//google/bigtable/v2:response_params.proto
1213
@com_google_googleapis//google/bigtable/v2:types.proto

google/cloud/backupdr/v1/backup_dr_client.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3364,7 +3364,7 @@ class BackupDRClient {
33643364
/// [`StatusOr`]: @ref google::cloud::StatusOr
33653365
/// [`Status`]: @ref google::cloud::Status
33663366
/// [google.cloud.backupdr.v1.DataSourceReference]: @googleapis_reference_link{google/cloud/backupdr/v1/datasourcereference.proto#L34}
3367-
/// [google.cloud.backupdr.v1.FetchDataSourceReferencesForResourceTypeRequest]: @googleapis_reference_link{google/cloud/backupdr/v1/datasourcereference.proto#L186}
3367+
/// [google.cloud.backupdr.v1.FetchDataSourceReferencesForResourceTypeRequest]: @googleapis_reference_link{google/cloud/backupdr/v1/datasourcereference.proto#L189}
33683368
///
33693369
// clang-format on
33703370
StreamRange<google::cloud::backupdr::v1::DataSourceReference>
@@ -3405,7 +3405,7 @@ class BackupDRClient {
34053405
/// [`StatusOr`]: @ref google::cloud::StatusOr
34063406
/// [`Status`]: @ref google::cloud::Status
34073407
/// [google.cloud.backupdr.v1.DataSourceReference]: @googleapis_reference_link{google/cloud/backupdr/v1/datasourcereference.proto#L34}
3408-
/// [google.cloud.backupdr.v1.FetchDataSourceReferencesForResourceTypeRequest]: @googleapis_reference_link{google/cloud/backupdr/v1/datasourcereference.proto#L186}
3408+
/// [google.cloud.backupdr.v1.FetchDataSourceReferencesForResourceTypeRequest]: @googleapis_reference_link{google/cloud/backupdr/v1/datasourcereference.proto#L189}
34093409
///
34103410
// clang-format on
34113411
StreamRange<google::cloud::backupdr::v1::DataSourceReference>

google/cloud/bigquery/storage/v1/bigquery_read_client.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,9 @@ class BigQueryReadClient {
197197
// clang-format off
198198
///
199199
/// Reads rows from the stream in the format prescribed by the ReadSession.
200-
/// Each response contains one or more table rows, up to a maximum of 100 MiB
200+
/// Each response contains one or more table rows, up to a maximum of 128 MB
201201
/// per response; read requests which attempt to read individual rows larger
202-
/// than 100 MiB will fail.
202+
/// than 128 MB will fail.
203203
///
204204
/// Each request also returns a set of stream statistics reflecting the current
205205
/// state of the stream.
@@ -231,9 +231,9 @@ class BigQueryReadClient {
231231
// clang-format off
232232
///
233233
/// Reads rows from the stream in the format prescribed by the ReadSession.
234-
/// Each response contains one or more table rows, up to a maximum of 100 MiB
234+
/// Each response contains one or more table rows, up to a maximum of 128 MB
235235
/// per response; read requests which attempt to read individual rows larger
236-
/// than 100 MiB will fail.
236+
/// than 128 MB will fail.
237237
///
238238
/// Each request also returns a set of stream statistics reflecting the current
239239
/// state of the stream.

google/cloud/bigquery/storage/v1/bigquery_write_client.h

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ class BigQueryWriteClient {
214214
/// [`StatusOr`]: @ref google::cloud::StatusOr
215215
/// [`Status`]: @ref google::cloud::Status
216216
/// [google.cloud.bigquery.storage.v1.AppendRowsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L424}
217-
/// [google.cloud.bigquery.storage.v1.AppendRowsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L568}
217+
/// [google.cloud.bigquery.storage.v1.AppendRowsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L565}
218218
///
219219
// clang-format on
220220
std::unique_ptr<::google::cloud::AsyncStreamingReadWriteRpc<
@@ -241,7 +241,7 @@ class BigQueryWriteClient {
241241
/// [`future`]: @ref google::cloud::future
242242
/// [`StatusOr`]: @ref google::cloud::StatusOr
243243
/// [`Status`]: @ref google::cloud::Status
244-
/// [google.cloud.bigquery.storage.v1.GetWriteStreamRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L619}
244+
/// [google.cloud.bigquery.storage.v1.GetWriteStreamRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L616}
245245
/// [google.cloud.bigquery.storage.v1.WriteStream]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/stream.proto#L271}
246246
///
247247
// clang-format on
@@ -271,7 +271,7 @@ class BigQueryWriteClient {
271271
/// [`future`]: @ref google::cloud::future
272272
/// [`StatusOr`]: @ref google::cloud::StatusOr
273273
/// [`Status`]: @ref google::cloud::Status
274-
/// [google.cloud.bigquery.storage.v1.GetWriteStreamRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L619}
274+
/// [google.cloud.bigquery.storage.v1.GetWriteStreamRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L616}
275275
/// [google.cloud.bigquery.storage.v1.WriteStream]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/stream.proto#L271}
276276
///
277277
// clang-format on
@@ -300,8 +300,8 @@ class BigQueryWriteClient {
300300
/// [`future`]: @ref google::cloud::future
301301
/// [`StatusOr`]: @ref google::cloud::StatusOr
302302
/// [`Status`]: @ref google::cloud::Status
303-
/// [google.cloud.bigquery.storage.v1.FinalizeWriteStreamRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L663}
304-
/// [google.cloud.bigquery.storage.v1.FinalizeWriteStreamResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L675}
303+
/// [google.cloud.bigquery.storage.v1.FinalizeWriteStreamRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L660}
304+
/// [google.cloud.bigquery.storage.v1.FinalizeWriteStreamResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L672}
305305
///
306306
// clang-format on
307307
StatusOr<google::cloud::bigquery::storage::v1::FinalizeWriteStreamResponse>
@@ -331,8 +331,8 @@ class BigQueryWriteClient {
331331
/// [`future`]: @ref google::cloud::future
332332
/// [`StatusOr`]: @ref google::cloud::StatusOr
333333
/// [`Status`]: @ref google::cloud::Status
334-
/// [google.cloud.bigquery.storage.v1.FinalizeWriteStreamRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L663}
335-
/// [google.cloud.bigquery.storage.v1.FinalizeWriteStreamResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L675}
334+
/// [google.cloud.bigquery.storage.v1.FinalizeWriteStreamRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L660}
335+
/// [google.cloud.bigquery.storage.v1.FinalizeWriteStreamResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L672}
336336
///
337337
// clang-format on
338338
StatusOr<google::cloud::bigquery::storage::v1::FinalizeWriteStreamResponse>
@@ -365,8 +365,8 @@ class BigQueryWriteClient {
365365
/// [`future`]: @ref google::cloud::future
366366
/// [`StatusOr`]: @ref google::cloud::StatusOr
367367
/// [`Status`]: @ref google::cloud::Status
368-
/// [google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L635}
369-
/// [google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L648}
368+
/// [google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L632}
369+
/// [google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L645}
370370
///
371371
// clang-format on
372372
StatusOr<
@@ -401,8 +401,8 @@ class BigQueryWriteClient {
401401
/// [`future`]: @ref google::cloud::future
402402
/// [`StatusOr`]: @ref google::cloud::StatusOr
403403
/// [`Status`]: @ref google::cloud::Status
404-
/// [google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L635}
405-
/// [google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L648}
404+
/// [google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L632}
405+
/// [google.cloud.bigquery.storage.v1.BatchCommitWriteStreamsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L645}
406406
///
407407
// clang-format on
408408
StatusOr<
@@ -436,8 +436,8 @@ class BigQueryWriteClient {
436436
/// [`future`]: @ref google::cloud::future
437437
/// [`StatusOr`]: @ref google::cloud::StatusOr
438438
/// [`Status`]: @ref google::cloud::Status
439-
/// [google.cloud.bigquery.storage.v1.FlushRowsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L681}
440-
/// [google.cloud.bigquery.storage.v1.FlushRowsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L696}
439+
/// [google.cloud.bigquery.storage.v1.FlushRowsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L678}
440+
/// [google.cloud.bigquery.storage.v1.FlushRowsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L693}
441441
///
442442
// clang-format on
443443
StatusOr<google::cloud::bigquery::storage::v1::FlushRowsResponse> FlushRows(
@@ -473,8 +473,8 @@ class BigQueryWriteClient {
473473
/// [`future`]: @ref google::cloud::future
474474
/// [`StatusOr`]: @ref google::cloud::StatusOr
475475
/// [`Status`]: @ref google::cloud::Status
476-
/// [google.cloud.bigquery.storage.v1.FlushRowsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L681}
477-
/// [google.cloud.bigquery.storage.v1.FlushRowsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L696}
476+
/// [google.cloud.bigquery.storage.v1.FlushRowsRequest]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L678}
477+
/// [google.cloud.bigquery.storage.v1.FlushRowsResponse]: @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L693}
478478
///
479479
// clang-format on
480480
StatusOr<google::cloud::bigquery::storage::v1::FlushRowsResponse> FlushRows(

google/cloud/bigtable/internal/query_plan_test.cc

Lines changed: 54 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -267,34 +267,40 @@ TEST(QueryPlanMultithreadedTest, RefreshInvalidatedPlan) {
267267

268268
constexpr int kNumThreads = LimitNumThreadsOn32Bit(1000);
269269
std::vector<std::thread> threads(kNumThreads);
270-
std::array<StatusOr<PrepareQueryResponse>, kNumThreads> data_responses;
270+
std::array<promise<StatusOr<PrepareQueryResponse>>, kNumThreads>
271+
data_responses;
272+
std::array<future<StatusOr<PrepareQueryResponse>>, kNumThreads>
273+
data_response_futures;
274+
for (auto i = 0; i < kNumThreads; ++i) {
275+
data_responses[i] = promise<StatusOr<PrepareQueryResponse>>();
276+
data_response_futures[i] = data_responses[i].get_future();
277+
}
271278

272279
auto barrier = std::make_shared<absl::Barrier>(kNumThreads + 1);
273-
auto thread_fn = [barrier,
274-
query_plan](StatusOr<PrepareQueryResponse>* thread_data) {
280+
auto thread_fn = [barrier, query_plan](
281+
promise<StatusOr<PrepareQueryResponse>>* thread_data) {
275282
barrier->Block();
276-
*thread_data = query_plan->response();
283+
thread_data->set_value(query_plan->response());
277284
};
278285

279286
for (int i = 0; i < kNumThreads; ++i) {
280-
data_responses[i] = StatusOr<PrepareQueryResponse>(
281-
Status(StatusCode::kNotFound, "not found"));
282287
threads.emplace_back(thread_fn, &(data_responses[i]));
283288
}
284289

285290
auto invalid_status = internal::InternalError("oops!");
286291
query_plan->Invalidate(invalid_status, data->prepared_query());
287292
barrier->Block();
288293

294+
for (auto& f : data_response_futures) {
295+
auto r = f.get();
296+
ASSERT_STATUS_OK(r);
297+
EXPECT_EQ(r->prepared_query(), "refreshed-query-plan");
298+
}
299+
289300
for (auto& t : threads) {
290301
if (t.joinable()) t.join();
291302
}
292-
293303
EXPECT_EQ(calls_to_refresh_fn, 1);
294-
for (auto const& r : data_responses) {
295-
ASSERT_STATUS_OK(r);
296-
EXPECT_EQ(r->prepared_query(), "refreshed-query-plan");
297-
}
298304

299305
// Cancel all pending operations, satisfying any remaining futures.
300306
fake_cq_impl->SimulateCompletion(false);
@@ -333,38 +339,46 @@ TEST(QueryPlanMultithreadedTest, RefreshInvalidatedPlanTransientFailures) {
333339

334340
constexpr int kNumThreads = LimitNumThreadsOn32Bit(1000);
335341
std::vector<std::thread> threads(kNumThreads);
336-
std::array<StatusOr<PrepareQueryResponse>, kNumThreads> data_responses;
342+
std::array<promise<StatusOr<PrepareQueryResponse>>, kNumThreads>
343+
data_responses;
344+
std::array<future<StatusOr<PrepareQueryResponse>>, kNumThreads>
345+
data_response_futures;
346+
for (auto i = 0; i < kNumThreads; ++i) {
347+
data_responses[i] = promise<StatusOr<PrepareQueryResponse>>();
348+
data_response_futures[i] = data_responses[i].get_future();
349+
}
337350

338351
auto barrier = std::make_shared<absl::Barrier>(kNumThreads + 1);
339-
auto thread_fn = [barrier,
340-
query_plan](StatusOr<PrepareQueryResponse>* thread_data) {
352+
auto thread_fn = [barrier, query_plan](
353+
promise<StatusOr<PrepareQueryResponse>>* thread_data) {
341354
barrier->Block();
342-
*thread_data = query_plan->response();
343-
while (!thread_data->ok()) {
355+
auto response = query_plan->response();
356+
while (!response.ok()) {
344357
std::this_thread::yield();
345-
*thread_data = query_plan->response();
358+
response = query_plan->response();
346359
}
360+
thread_data->set_value(response);
347361
};
348362

349363
for (int i = 0; i < kNumThreads; ++i) {
350-
data_responses[i] = StatusOr<PrepareQueryResponse>(
351-
Status(StatusCode::kNotFound, "not found"));
352364
threads.emplace_back(thread_fn, &(data_responses[i]));
353365
}
354366

355367
auto invalid_status = internal::InternalError("oops!");
356368
query_plan->Invalidate(invalid_status, data->prepared_query());
357369
barrier->Block();
358370

371+
for (auto& f : data_response_futures) {
372+
auto r = f.get();
373+
ASSERT_STATUS_OK(r);
374+
EXPECT_EQ(r->prepared_query(), "refreshed-query-plan");
375+
}
376+
359377
for (auto& t : threads) {
360378
if (t.joinable()) t.join();
361379
}
362380

363381
EXPECT_EQ(calls_to_refresh_fn, 4);
364-
for (auto const& r : data_responses) {
365-
ASSERT_STATUS_OK(r);
366-
EXPECT_EQ(r->prepared_query(), "refreshed-query-plan");
367-
}
368382

369383
// Cancel all pending operations, satisfying any remaining futures.
370384
fake_cq_impl->SimulateCompletion(false);
@@ -439,32 +453,38 @@ TEST(QueryPlanMultithreadedTest, RefreshInvalidatedPlanAfterFailedRefresh) {
439453
// it to complete.
440454
constexpr int kNumThreads = LimitNumThreadsOn32Bit(1000);
441455
std::vector<std::thread> threads(kNumThreads);
442-
std::array<StatusOr<PrepareQueryResponse>, kNumThreads> data_responses;
456+
std::array<promise<StatusOr<PrepareQueryResponse>>, kNumThreads>
457+
data_responses;
458+
std::array<future<StatusOr<PrepareQueryResponse>>, kNumThreads>
459+
data_response_futures;
460+
for (auto i = 0; i < kNumThreads; ++i) {
461+
data_responses[i] = promise<StatusOr<PrepareQueryResponse>>();
462+
data_response_futures[i] = data_responses[i].get_future();
463+
}
443464

444465
auto barrier = std::make_shared<absl::Barrier>(kNumThreads + 1);
445-
auto thread_fn = [barrier,
446-
query_plan](StatusOr<PrepareQueryResponse>* thread_data) {
466+
auto thread_fn = [barrier, query_plan](
467+
promise<StatusOr<PrepareQueryResponse>>* thread_data) {
447468
barrier->Block();
448-
*thread_data = query_plan->response();
469+
thread_data->set_value(query_plan->response());
449470
};
450471

451472
for (int i = 0; i < kNumThreads; ++i) {
452-
data_responses[i] = StatusOr<PrepareQueryResponse>(
453-
Status(StatusCode::kNotFound, "not found"));
454473
threads.emplace_back(thread_fn, &(data_responses[i]));
455474
}
456475

457476
barrier->Block();
458477

478+
for (auto& f : data_response_futures) {
479+
auto r = f.get();
480+
ASSERT_STATUS_OK(r);
481+
EXPECT_EQ(r->prepared_query(), "refreshed-query-plan");
482+
}
483+
459484
for (auto& t : threads) {
460485
if (t.joinable()) t.join();
461486
}
462-
463487
EXPECT_EQ(calls_to_refresh_fn, kNumFailingThreads + 1);
464-
for (auto const& r : data_responses) {
465-
ASSERT_STATUS_OK(r);
466-
EXPECT_EQ(r->prepared_query(), "refreshed-query-plan");
467-
}
468488

469489
// Cancel all pending operations, satisfying any remaining futures.
470490
fake_cq_impl->SimulateCompletion(false);

0 commit comments

Comments
 (0)