Skip to content

Commit 9119270

Browse files
committed
minor fix
1 parent 785b05e commit 9119270

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

google/cloud/storage/internal/async/writer_connection_impl.cc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,9 @@ AsyncWriterConnectionImpl::MakeRequest() {
177177
request.clear_append_object_spec();
178178
}
179179
request.set_write_offset(offset_);
180-
if (latest_write_handle_.has_value()) {
181-
if (request.has_append_object_spec()) {
182-
*request.mutable_append_object_spec()->mutable_write_handle() =
183-
*latest_write_handle_;
184-
}
180+
if (latest_write_handle_.has_value() && request.has_append_object_spec()) {
181+
*request.mutable_append_object_spec()->mutable_write_handle() =
182+
*latest_write_handle_;
185183
}
186184
return request;
187185
}

google/cloud/storage/internal/async/writer_connection_impl_test.cc

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -651,12 +651,15 @@ TEST(AsyncWriterConnectionTest, UnexpectedQueryFailsWithoutError) {
651651
TEST(AsyncWriterConnectionImpl, WriteHandleIsPropagatedAfterQuery) {
652652
AsyncSequencer<bool> sequencer;
653653
auto mock = std::make_unique<MockStream>();
654+
int write_call_count = 0;
654655
EXPECT_CALL(*mock, Write)
655-
.WillOnce([&](Request const& req, grpc::WriteOptions) {
656+
.Times(2)
657+
.WillRepeatedly([&](Request const& req, grpc::WriteOptions) {
656658
EXPECT_TRUE(req.has_append_object_spec());
657659
EXPECT_TRUE(req.append_object_spec().has_write_handle());
658660
EXPECT_EQ(req.append_object_spec().write_handle().handle(),
659661
"test-handle");
662+
++write_call_count;
660663
return sequencer.PushBack("Write");
661664
});
662665
EXPECT_CALL(*mock, Read).WillOnce([&]() {
@@ -679,11 +682,21 @@ TEST(AsyncWriterConnectionImpl, WriteHandleIsPropagatedAfterQuery) {
679682
TestOptions(), req, std::move(mock), hash, 0);
680683

681684
EXPECT_THAT(tested->Query().get(), IsOkAndHolds(42));
682-
auto result = tested->Write(WritePayload("payload"));
683-
auto next = sequencer.PopFrontWithName();
684-
ASSERT_THAT(next.second, "Write");
685-
next.first.set_value(true);
686-
EXPECT_STATUS_OK(result.get());
685+
686+
auto result1 = tested->Write(WritePayload("payload1"));
687+
auto next1 = sequencer.PopFrontWithName();
688+
ASSERT_THAT(next1.second, "Write");
689+
next1.first.set_value(true);
690+
EXPECT_STATUS_OK(result1.get());
691+
692+
// Second write should also include write_handle.
693+
auto result2 = tested->Write(WritePayload("payload2"));
694+
auto next2 = sequencer.PopFrontWithName();
695+
ASSERT_THAT(next2.second, "Write");
696+
next2.first.set_value(true);
697+
EXPECT_STATUS_OK(result2.get());
698+
699+
EXPECT_EQ(write_call_count, 2);
687700
}
688701

689702
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END

google/cloud/storage/internal/async/writer_connection_resumed.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,9 +364,9 @@ class AsyncWriterConnectionResumedState
364364
StatusOr<WriteObject::WriteResult> res) {
365365
std::unique_lock<std::mutex> lk(mu_);
366366
// Update write_handle from any resume response that contains it.
367-
if (res && res.value().first_response.has_write_handle()) {
367+
if (res && res->first_response.has_write_handle()) {
368368
*first_response_.mutable_write_handle() =
369-
res.value().first_response.write_handle();
369+
res->first_response.write_handle();
370370
}
371371

372372
if (was_finalizing) {

0 commit comments

Comments
 (0)