Skip to content

Commit 0b89ea5

Browse files
committed
upgrade
1 parent c764b01 commit 0b89ea5

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

cloud/src/meta-service/meta_service.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -2323,8 +2323,9 @@ void MetaServiceImpl::get_delete_bitmap_update_lock(google::protobuf::RpcControl
23232323
lock_key_not_found = true;
23242324
std::string current_lock_msg = "lock key not found";
23252325
lock_info.set_lock_id(request->lock_id());
2326+
// compaction does not use this expiration, only used when upgrade ms
2327+
lock_info.set_expiration(expiration);
23262328
if (request->lock_id() != COMPACTION_DELETE_BITMAP_LOCK_ID) {
2327-
lock_info.set_expiration(expiration);
23282329
lock_info.add_initiators(request->initiator());
23292330
} else {
23302331
// in normal case, this should remove 0 kvs
@@ -2361,7 +2362,6 @@ void MetaServiceImpl::get_delete_bitmap_update_lock(google::protobuf::RpcControl
23612362
<< " expiration=" << lock_info.expiration() << " now=" << now
23622363
<< " initiator_size=" << lock_info.initiators_size();
23632364
lock_info.clear_initiators();
2364-
lock_info.clear_expiration();
23652365
} else if (lock_info.lock_id() != request->lock_id()) {
23662366
ss << "already be locked by lock_id=" << lock_info.lock_id()
23672367
<< " expiration=" << lock_info.expiration() << " now=" << now
@@ -2374,8 +2374,9 @@ void MetaServiceImpl::get_delete_bitmap_update_lock(google::protobuf::RpcControl
23742374
std::string current_lock_msg =
23752375
"original lock_id=" + std::to_string(lock_info.lock_id());
23762376
lock_info.set_lock_id(request->lock_id());
2377+
// compaction does not use the expiration, only used when upgrade ms
2378+
lock_info.set_expiration(expiration);
23772379
if (request->lock_id() != COMPACTION_DELETE_BITMAP_LOCK_ID) {
2378-
lock_info.set_expiration(expiration);
23792380
bool found = false;
23802381
for (auto initiator : lock_info.initiators()) {
23812382
if (request->initiator() == initiator) {

cloud/src/meta-service/meta_service_job.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -484,8 +484,8 @@ static bool check_and_remove_delete_bitmap_update_lock(MetaServiceCode& code, st
484484
}
485485
if (lock_id == COMPACTION_DELETE_BITMAP_LOCK_ID) {
486486
// when upgrade ms, prevent old ms get delete bitmap update lock
487-
if (lock_info.has_expiration()) {
488-
ss << "lock value has expiration=" << lock_info.expiration();
487+
if (lock_info.initiators_size() > 0) {
488+
ss << "compaction lock has " << lock_info.initiators_size() << " initiators";
489489
msg = ss.str();
490490
code = MetaServiceCode::LOCK_EXPIRED;
491491
return false;

cloud/test/meta_service_test.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -4750,13 +4750,17 @@ TEST(MetaServiceTest, GetDeleteBitmapUpdateLock) {
47504750
reinterpret_cast<::google::protobuf::RpcController*>(&cntl), &req, &res, nullptr);
47514751
ASSERT_EQ(res.status().code(), MetaServiceCode::OK);
47524752

4753+
// new compaction get lock again
4754+
meta_service->get_delete_bitmap_update_lock(
4755+
reinterpret_cast<::google::protobuf::RpcController*>(&cntl), &req, &res, nullptr);
4756+
ASSERT_EQ(res.status().code(), MetaServiceCode::OK);
4757+
47534758
// case 8: lock key owned by compaction, load1 get lock
47544759
req.set_lock_id(888);
47554760
req.set_initiator(-1);
47564761
req.set_expiration(60);
47574762
meta_service->get_delete_bitmap_update_lock(
47584763
reinterpret_cast<::google::protobuf::RpcController*>(&cntl), &req, &res, nullptr);
4759-
LOG(INFO) << "case 8: " << res.status().msg();
47604764
ASSERT_EQ(res.status().code(), MetaServiceCode::LOCK_CONFLICT);
47614765

47624766
remove_req.set_lock_id(-1);

0 commit comments

Comments
 (0)