Skip to content

Commit

Permalink
bugfix mset and msetnx command unable to synchronize to slave complet…
Browse files Browse the repository at this point in the history
  • Loading branch information
Axlgrep authored Nov 21, 2018
1 parent 84d49b1 commit 1138780
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 92 deletions.
14 changes: 0 additions & 14 deletions include/pika_kv.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,13 +236,6 @@ class MsetCmd : public Cmd {
private:
std::vector<blackwidow::KeyValue> kvs_;
virtual void DoInitial(PikaCmdArgsType &argv, const CmdInfo* const ptr_info);
virtual std::string ToBinlog(
const PikaCmdArgsType& argv,
uint32_t exec_time,
const std::string& server_id,
uint64_t logic_id,
uint32_t filenum,
uint64_t offset) override;
};

class MsetnxCmd : public Cmd {
Expand All @@ -253,13 +246,6 @@ class MsetnxCmd : public Cmd {
std::vector<blackwidow::KeyValue> kvs_;
int32_t success_;
virtual void DoInitial(PikaCmdArgsType &argv, const CmdInfo* const ptr_info);
virtual std::string ToBinlog(
const PikaCmdArgsType& argv,
uint32_t exec_time,
const std::string& server_id,
uint64_t logic_id,
uint32_t filenum,
uint64_t offset) override;
};

class GetrangeCmd : public Cmd {
Expand Down
3 changes: 1 addition & 2 deletions src/pika_binlog_transverter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,11 @@ bool PikaBinlogTransverter::BinlogDecode(BinlogType type,
slash::GetFixed32(&binlog_str, &binlog_item->filenum_);
slash::GetFixed64(&binlog_str, &binlog_item->offset_);
slash::GetFixed32(&binlog_str, &content_length);
if (binlog_str.size() >= content_length) {
if (binlog_str.size() == content_length) {
binlog_item->content_.assign(binlog_str.data(), content_length);
} else {
LOG(ERROR) << "Binlog Item get content error, expect length:" << content_length << " left length:" << binlog_str.size();
return false;
}
binlog_str.erase(0, content_length);
return true;
}
76 changes: 0 additions & 76 deletions src/pika_kv.cc
Original file line number Diff line number Diff line change
Expand Up @@ -677,43 +677,6 @@ void MsetCmd::Do() {
}
}

std::string MsetCmd::ToBinlog(
const PikaCmdArgsType& argv,
uint32_t exec_time,
const std::string& server_id,
uint64_t logic_id,
uint32_t filenum,
uint64_t offset) {
std::string content, binlog;

std::vector<blackwidow::KeyValue>::const_iterator it;
for (it = kvs_.begin(); it != kvs_.end(); it++) {
content.clear();
RedisAppendLen(content, 3, "*");

// to set cmd
std::string set_cmd("set");
RedisAppendLen(content, set_cmd.size(), "$");
RedisAppendContent(content, set_cmd);
// key
RedisAppendLen(content, it->key.size(), "$");
RedisAppendContent(content, it->key);
// value
RedisAppendLen(content, it->value.size(), "$");
RedisAppendContent(content, it->value);

binlog += PikaBinlogTransverter::BinlogEncode(BinlogType::TypeFirst,
exec_time,
std::stoi(server_id),
logic_id,
filenum,
offset,
content,
{});
}
return binlog;
}

void MsetnxCmd::DoInitial(PikaCmdArgsType &argv, const CmdInfo* const ptr_info) {
if (!ptr_info->CheckArg(argv.size())) {
res_.SetRes(CmdRes::kWrongNum, kCmdNameMsetnx);
Expand Down Expand Up @@ -741,45 +704,6 @@ void MsetnxCmd::Do() {
}
}

std::string MsetnxCmd::ToBinlog(
const PikaCmdArgsType& argv,
uint32_t exec_time,
const std::string& server_id,
uint64_t logic_id,
uint32_t filenum,
uint64_t offset) {
std::string content, binlogs;
if (success_) {

std::vector<blackwidow::KeyValue>::const_iterator it;
for (it = kvs_.begin(); it != kvs_.end(); it++) {
content.clear();
RedisAppendLen(content, 3, "*");

// to set cmd
std::string set_cmd("set");
RedisAppendLen(content, set_cmd.size(), "$");
RedisAppendContent(content, set_cmd);
// key
RedisAppendLen(content, it->key.size(), "$");
RedisAppendContent(content, it->key);
// value
RedisAppendLen(content, it->value.size(), "$");
RedisAppendContent(content, it->value);

binlogs += PikaBinlogTransverter::BinlogEncode(BinlogType::TypeFirst,
exec_time,
std::stoi(server_id),
logic_id,
filenum,
offset,
content,
{});
}
}
return binlogs;
}

void GetrangeCmd::DoInitial(PikaCmdArgsType &argv, const CmdInfo* const ptr_info) {
if (!ptr_info->CheckArg(argv.size())) {
res_.SetRes(CmdRes::kWrongNum, kCmdNameGetrange);
Expand Down

0 comments on commit 1138780

Please sign in to comment.