Skip to content

Commit

Permalink
curvefs/metaserver: fixed s3chunkinfo was padding into inode when it …
Browse files Browse the repository at this point in the history
…wasnt needed.
  • Loading branch information
Wine93 committed May 26, 2022
1 parent f70a2c8 commit 9da8b12
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 7 deletions.
10 changes: 3 additions & 7 deletions curvefs/src/metaserver/metastore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -533,17 +533,13 @@ MetaStatusCode MetaStoreImpl::GetOrModifyS3ChunkInfo(
request->s3chunkinforemove(),
request->returns3chunkinfomap(),
iterator);
if (rc == MetaStatusCode::OK && !request->supportstreaming()) {
if (rc == MetaStatusCode::OK &&
!request->supportstreaming() &&
request->returns3chunkinfomap()) {
rc = partition->PaddingInodeS3ChunkInfo(
fsId, inodeId, response->mutable_s3chunkinfomap(), 0);
}

if (rc == MetaStatusCode::OK && !request->supportstreaming()) {
rc = partition->PaddingInodeS3ChunkInfo(
request->fsid(), request->inodeid(),
response->mutable_s3chunkinfomap(), 0);
}

response->set_statuscode(rc);
return rc;
}
Expand Down
31 changes: 31 additions & 0 deletions curvefs/test/metaserver/metastore_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1486,6 +1486,37 @@ TEST_F(MetastoreTest, GetOrModifyS3ChunkInfo) {
ASSERT_EQ(response.statuscode(), rc);
ASSERT_EQ(response.mutable_s3chunkinfomap()->size(), 2);
}

// CASE 4: GetOrModifyS3ChunkInfo success with unsupport streaming
// and without return s3chunkinfo
{
LOG(INFO) << "CASE 3: GetOrModifyS3ChunkInfo success"
<< " with unsupport streaming";
GetOrModifyS3ChunkInfoRequest request;
GetOrModifyS3ChunkInfoResponse response;
std::vector<uint64_t> chunkIndexs{ 1, 2 };
std::vector<S3ChunkInfoList> lists2add{
GenS3ChunkInfoList(100, 200),
GenS3ChunkInfoList(300, 400),
};

request.set_partitionid(partitionId);
request.set_fsid(fsId);
request.set_inodeid(inodeId);
request.set_supportstreaming(false);
request.set_returns3chunkinfomap(false);
for (size_t i = 0; i < chunkIndexs.size(); i++) {
request.mutable_s3chunkinfoadd()->insert(
{ chunkIndexs[i], lists2add[i] });
}

std::shared_ptr<Iterator> iterator;
MetaStatusCode rc = metastore.GetOrModifyS3ChunkInfo(
&request, &response, &iterator);
ASSERT_EQ(rc, MetaStatusCode::OK);
ASSERT_EQ(response.statuscode(), rc);
ASSERT_EQ(response.mutable_s3chunkinfomap()->size(), 0);
}
}

TEST_F(MetastoreTest, GetInodeWithPaddingS3Meta) {
Expand Down

0 comments on commit 9da8b12

Please sign in to comment.