Skip to content

Commit

Permalink
Fix: the lock guards have an incorrect lifetime (OpenAtomFoundation#1041
Browse files Browse the repository at this point in the history
)
  • Loading branch information
LIBA-S authored Jun 8, 2021
1 parent 28d3fb4 commit f41da49
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 22 deletions.
10 changes: 5 additions & 5 deletions src/pika_binlog.cc
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ Status Binlog::GetProducerStatus(uint32_t* filenum, uint64_t* pro_offset,
return Status::Busy("Binlog is not open yet");
}

slash::RWLock(&(version_->rwlock_), false);
slash::RWLock l(&(version_->rwlock_), false);

*filenum = version_->pro_num_;
*pro_offset = version_->pro_offset_;
Expand Down Expand Up @@ -208,7 +208,7 @@ Status Binlog::Put(const char* item, int len) {
slash::NewWritableFile(profile, &queue_);

{
slash::RWLock(&(version_->rwlock_), true);
slash::RWLock l(&(version_->rwlock_), true);
version_->pro_offset_ = 0;
version_->pro_num_ = pro_num_;
version_->StableSave();
Expand All @@ -219,7 +219,7 @@ Status Binlog::Put(const char* item, int len) {
int pro_offset;
s = Produce(Slice(item, len), &pro_offset);
if (s.ok()) {
slash::RWLock(&(version_->rwlock_), true);
slash::RWLock l(&(version_->rwlock_), true);
version_->pro_offset_ = pro_offset;
version_->logic_id_++;
version_->StableSave();
Expand Down Expand Up @@ -381,7 +381,7 @@ Status Binlog::SetProducerStatus(uint32_t pro_num, uint64_t pro_offset, uint32_t
pro_num_ = pro_num;

{
slash::RWLock(&(version_->rwlock_), true);
slash::RWLock l(&(version_->rwlock_), true);
version_->pro_num_ = pro_num;
version_->pro_offset_ = pro_offset;
version_->term_ = term;
Expand All @@ -407,7 +407,7 @@ Status Binlog::Truncate(uint32_t pro_num, uint64_t pro_offset, uint64_t index) {

pro_num_ = pro_num;
{
slash::RWLock(&(version_->rwlock_), true);
slash::RWLock l(&(version_->rwlock_), true);
version_->pro_num_ = pro_num;
version_->pro_offset_ = pro_offset;
version_->logic_id_ = index;
Expand Down
12 changes: 6 additions & 6 deletions src/pika_binlog_reader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PikaBinlogReader::~PikaBinlogReader() {
}

void PikaBinlogReader::GetReaderStatus(uint32_t* cur_filenum, uint64_t* cur_offset) {
slash::RWLock(&(rwlock_), false);
slash::RWLock l(&(rwlock_), false);
*cur_filenum = cur_filenum_;
*cur_offset = cur_offset_;
}
Expand All @@ -47,7 +47,7 @@ bool PikaBinlogReader::ReadToTheEnd() {
uint32_t pro_num;
uint64_t pro_offset;
logger_->GetProducerStatus(&pro_num, &pro_offset);
slash::RWLock(&(rwlock_), false);
slash::RWLock l(&(rwlock_), false);
return (pro_num == cur_filenum_ && pro_offset == cur_offset_);
}

Expand All @@ -68,7 +68,7 @@ int PikaBinlogReader::Seek(std::shared_ptr<Binlog> logger, uint32_t filenum, uin
queue_ = readfile;
logger_ = logger;

slash::RWLock(&(rwlock_), true);
slash::RWLock l(&(rwlock_), true);
cur_filenum_ = filenum;
cur_offset_ = offset;
last_record_offset_ = cur_filenum_ % kBlockSize;
Expand Down Expand Up @@ -151,7 +151,7 @@ unsigned int PikaBinlogReader::ReadPhysicalRecord(slash::Slice *result, uint32_t
slash::Status s;
if (kBlockSize - last_record_offset_ <= kHeaderSize) {
queue_->Skip(kBlockSize - last_record_offset_);
slash::RWLock(&(rwlock_), true);
slash::RWLock l(&(rwlock_), true);
cur_offset_ += (kBlockSize - last_record_offset_);
last_record_offset_ = 0;
}
Expand Down Expand Up @@ -183,7 +183,7 @@ unsigned int PikaBinlogReader::ReadPhysicalRecord(slash::Slice *result, uint32_t
*result = slash::Slice(buffer_.data(), buffer_.size());
last_record_offset_ += kHeaderSize + length;
if (s.ok()) {
slash::RWLock(&(rwlock_), true);
slash::RWLock l(&(rwlock_), true);
*filenum = cur_filenum_;
cur_offset_ += (kHeaderSize + length);
*offset = cur_offset_;
Expand Down Expand Up @@ -262,7 +262,7 @@ Status PikaBinlogReader::Get(std::string* scratch, uint32_t* filenum, uint64_t*

slash::NewSequentialFile(confile, &(queue_));
{
slash::RWLock(&(rwlock_), true);
slash::RWLock l(&(rwlock_), true);
cur_filenum_++;
cur_offset_ = 0;
}
Expand Down
12 changes: 6 additions & 6 deletions src/pika_server.cc
Original file line number Diff line number Diff line change
Expand Up @@ -299,22 +299,22 @@ time_t PikaServer::start_time_s() {
}

std::string PikaServer::master_ip() {
slash::RWLock(&state_protector_, false);
slash::RWLock l(&state_protector_, false);
return master_ip_;
}

int PikaServer::master_port() {
slash::RWLock(&state_protector_, false);
slash::RWLock l(&state_protector_, false);
return master_port_;
}

int PikaServer::role() {
slash::RWLock(&state_protector_, false);
slash::RWLock l(&state_protector_, false);
return role_;
}

bool PikaServer::readonly(const std::string& table_name, const std::string& key) {
slash::RWLock(&state_protector_, false);
slash::RWLock l(&state_protector_, false);
if ((role_ & PIKA_ROLE_SLAVE)
&& g_pika_conf->slave_read_only()) {
return true;
Expand Down Expand Up @@ -367,12 +367,12 @@ bool PikaServer::ConsensusCheck(const std::string& table_name, const std::string
}

int PikaServer::repl_state() {
slash::RWLock(&state_protector_, false);
slash::RWLock l(&state_protector_, false);
return repl_state_;
}

std::string PikaServer::repl_state_str() {
slash::RWLock(&state_protector_, false);
slash::RWLock l(&state_protector_, false);
switch (repl_state_) {
case PIKA_REPL_NO_CONNECT:
return "no connect";
Expand Down
10 changes: 5 additions & 5 deletions src/pika_statistic.cc
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,12 @@ Statistic::Statistic() {
}

QpsStatistic Statistic::TableStat(const std::string& table_name) {
slash::RWLock(&table_stat_rw, false);
slash::RWLock l(&table_stat_rw, false);
return table_stat[table_name];
}

std::unordered_map<std::string, QpsStatistic> Statistic::AllTableStat() {
slash::RWLock(&table_stat_rw, false);
slash::RWLock l(&table_stat_rw, false);
return table_stat;
}

Expand All @@ -114,7 +114,7 @@ void Statistic::UpdateTableQps(
bool table_exist = true;
std::unordered_map<std::string, QpsStatistic>::iterator iter;
{
slash::RWLock(&table_stat_rw, false);
slash::RWLock l(&table_stat_rw, false);
auto search = table_stat.find(table_name);
if (search == table_stat.end()) {
table_exist = false;
Expand All @@ -126,14 +126,14 @@ void Statistic::UpdateTableQps(
iter->second.IncreaseQueryNum(is_write);
} else {
{
slash::RWLock(&table_stat_rw, true);
slash::RWLock l(&table_stat_rw, true);
table_stat[table_name].IncreaseQueryNum(is_write);
}
}
}

void Statistic::ResetTableLastSecQuerynum() {
slash::RWLock(&table_stat_rw, false);
slash::RWLock l(&table_stat_rw, false);
for (auto& stat : table_stat) {
stat.second.ResetLastSecQuerynum();
}
Expand Down

0 comments on commit f41da49

Please sign in to comment.