Skip to content

Commit d0333ee

Browse files
authored
Merge branch 'OpenAtomFoundation:unstable' into unstable
2 parents fd2db6d + 9068852 commit d0333ee

3 files changed

Lines changed: 17 additions & 10 deletions

File tree

src/pika_admin.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ static std::string ConstructPinginPubSubResp(const PikaCmdArgsType& argv) {
4646
}
4747

4848
static double MethodofCommandStatistics(const uint64_t time_consuming, const uint64_t frequency) {
49-
return (static_cast<double>(time_consuming) / 1000.0) / static_cast<double>(frequency);
49+
return static_cast<double>(time_consuming) / static_cast<double>(frequency);
5050
}
5151

5252
static double MethodofTotalTimeCalculation(const uint64_t time_consuming) {
53-
return static_cast<double>(time_consuming) / 1000.0;
53+
return static_cast<double>(time_consuming);
5454
}
5555

5656
enum AuthResult {

src/pika_kv.cc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -897,7 +897,7 @@ std::string SetexCmd::ToRedisProtocol() {
897897
RedisAppendContent(content, key_);
898898
// time_stamp
899899
char buf[100];
900-
auto time_stamp = time(nullptr) + ttl_sec_;
900+
int64_t time_stamp = static_cast<int64_t>(::time(nullptr)) + ttl_sec_;
901901
pstd::ll2string(buf, 100, time_stamp);
902902
std::string at(buf);
903903
RedisAppendLenUint64(content, at.size(), "$");
@@ -955,8 +955,9 @@ std::string PsetexCmd::ToRedisProtocol() {
955955
RedisAppendLenUint64(content, key_.size(), "$");
956956
RedisAppendContent(content, key_);
957957
// time_stamp
958+
int64_t expire_at_ms = pstd::NowMillis() + ttl_millsec;
959+
int64_t time_stamp = expire_at_ms / 1000;
958960
char buf[100];
959-
auto time_stamp = pstd::NowMillis() + ttl_millsec;
960961
pstd::ll2string(buf, 100, time_stamp);
961962
std::string at(buf);
962963
RedisAppendLenUint64(content, at.size(), "$");
@@ -1805,7 +1806,9 @@ void PKSetexAtCmd::DoInitial() {
18051806
}
18061807

18071808
void PKSetexAtCmd::Do() {
1808-
s_ = db_->storage()->PKSetexAt(key_, value_, static_cast<int32_t>(time_stamp_sec_ * 1000));
1809+
// Use int64_t to avoid overflow
1810+
int64_t time_stamp_ms = static_cast<int64_t>(time_stamp_sec_) * 1000;
1811+
s_ = db_->storage()->PKSetexAt(key_, value_, time_stamp_ms);
18091812
if (s_.ok()) {
18101813
res_.SetRes(CmdRes::kOk);
18111814
} else if (s_.IsInvalidArgument()) {

src/storage/src/redis_zsets.cc

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,17 @@ Status Redis::ZAdd(const Slice& key, const std::vector<ScoreMember>& score_membe
183183
*ret = 0;
184184
uint32_t statistic = 0;
185185
std::unordered_set<std::string> unique;
186-
std::vector<ScoreMember> filtered_score_members;
187-
for (const auto& sm : score_members) {
188-
if (unique.find(sm.member) == unique.end()) {
189-
unique.insert(sm.member);
190-
filtered_score_members.push_back(sm);
186+
std::list<storage::ScoreMember> mid_score_members;
187+
for (auto it = score_members.rbegin(); it != score_members.rend(); ++it) {
188+
if (unique.find(it->member) == unique.end()) {
189+
unique.insert(it->member);
190+
mid_score_members.push_front(*it);
191191
}
192192
}
193+
std::vector<ScoreMember> filtered_score_members;
194+
for (auto &item : mid_score_members) {
195+
filtered_score_members.push_back(std::move(item));
196+
}
193197

194198
char score_buf[8];
195199
uint64_t version = 0;

0 commit comments

Comments
 (0)