mirror of
https://github.com/dragonflydb/dragonfly.git
synced 2025-05-11 18:35:46 +02:00
chore(refactoring): header clean ups (#3943)
Move privately used header code to cc files. Remove redunandant includes. No functional changes. Signed-off-by: Roman Gershman <roman@dragonflydb.io>
This commit is contained in:
parent
866c82a3fa
commit
5ab32b97d9
8 changed files with 406 additions and 425 deletions
|
@ -306,82 +306,6 @@ std::optional<cron::cronexpr> InferSnapshotCronExpr() {
|
|||
return std::nullopt;
|
||||
}
|
||||
|
||||
void SlowLogGet(dfly::CmdArgList args, dfly::ConnectionContext* cntx, dfly::Service& service,
|
||||
std::string_view sub_cmd) {
|
||||
size_t requested_slow_log_length = UINT32_MAX;
|
||||
size_t argc = args.size();
|
||||
if (argc >= 3) {
|
||||
cntx->SendError(facade::UnknownSubCmd(sub_cmd, "SLOWLOG"), facade::kSyntaxErrType);
|
||||
return;
|
||||
} else if (argc == 2) {
|
||||
string_view length = facade::ArgS(args, 1);
|
||||
int64_t num;
|
||||
if ((!absl::SimpleAtoi(length, &num)) || (num < -1)) {
|
||||
cntx->SendError("count should be greater than or equal to -1");
|
||||
return;
|
||||
}
|
||||
if (num >= 0) {
|
||||
requested_slow_log_length = num;
|
||||
}
|
||||
}
|
||||
|
||||
// gather all the individual slowlogs from all the fibers and sort them by their timestamp
|
||||
std::vector<boost::circular_buffer<SlowLogEntry>> entries(service.proactor_pool().size());
|
||||
service.proactor_pool().AwaitFiberOnAll([&](auto index, auto* context) {
|
||||
auto shard_entries = ServerState::tlocal()->GetSlowLog().Entries();
|
||||
entries[index] = shard_entries;
|
||||
});
|
||||
std::vector<std::pair<SlowLogEntry, unsigned>> merged_slow_log;
|
||||
for (size_t i = 0; i < entries.size(); ++i) {
|
||||
for (const auto& log_item : entries[i]) {
|
||||
merged_slow_log.emplace_back(log_item, i);
|
||||
}
|
||||
}
|
||||
|
||||
std::sort(merged_slow_log.begin(), merged_slow_log.end(), [](const auto& e1, const auto& e2) {
|
||||
return e1.first.unix_ts_usec > e2.first.unix_ts_usec;
|
||||
});
|
||||
|
||||
requested_slow_log_length = std::min(merged_slow_log.size(), requested_slow_log_length);
|
||||
|
||||
auto* rb = static_cast<facade::RedisReplyBuilder*>(cntx->reply_builder());
|
||||
rb->StartArray(requested_slow_log_length);
|
||||
for (size_t i = 0; i < requested_slow_log_length; ++i) {
|
||||
const auto& entry = merged_slow_log[i].first;
|
||||
const auto& args = entry.cmd_args;
|
||||
|
||||
rb->StartArray(6);
|
||||
|
||||
rb->SendLong(entry.entry_id * service.proactor_pool().size() + merged_slow_log[i].second);
|
||||
rb->SendLong(entry.unix_ts_usec / 1000000);
|
||||
rb->SendLong(entry.exec_time_usec);
|
||||
|
||||
// if we truncated the args, there is one pseudo-element containing the number of truncated
|
||||
// args that we must add, so the result length is increased by 1
|
||||
size_t len = args.size() + int(args.size() < entry.original_length);
|
||||
|
||||
rb->StartArray(len);
|
||||
|
||||
for (const auto& arg : args) {
|
||||
if (arg.second > 0) {
|
||||
auto suffix = absl::StrCat("... (", arg.second, " more bytes)");
|
||||
auto cmd_arg = arg.first.substr(0, kMaximumSlowlogArgLength - suffix.length());
|
||||
rb->SendBulkString(absl::StrCat(cmd_arg, suffix));
|
||||
} else {
|
||||
rb->SendBulkString(arg.first);
|
||||
}
|
||||
}
|
||||
// if we truncated arguments - add a special string to indicate that.
|
||||
if (args.size() < entry.original_length) {
|
||||
rb->SendBulkString(
|
||||
absl::StrCat("... (", entry.original_length - args.size(), " more arguments)"));
|
||||
}
|
||||
|
||||
rb->SendBulkString(entry.client_ip);
|
||||
rb->SendBulkString(entry.client_name);
|
||||
}
|
||||
}
|
||||
|
||||
void ClientSetName(CmdArgList args, ConnectionContext* cntx) {
|
||||
if (args.size() == 1) {
|
||||
cntx->conn()->SetName(string{ArgS(args, 0)});
|
||||
|
@ -708,6 +632,83 @@ optional<ReplicaOfArgs> ReplicaOfArgs::FromCmdArgs(CmdArgList args, ConnectionCo
|
|||
|
||||
} // namespace
|
||||
|
||||
void SlowLogGet(dfly::CmdArgList args, dfly::ConnectionContext* cntx, std::string_view sub_cmd,
|
||||
util::ProactorPool* pp) {
|
||||
size_t requested_slow_log_length = UINT32_MAX;
|
||||
size_t argc = args.size();
|
||||
if (argc >= 3) {
|
||||
cntx->SendError(facade::UnknownSubCmd(sub_cmd, "SLOWLOG"), facade::kSyntaxErrType);
|
||||
return;
|
||||
} else if (argc == 2) {
|
||||
string_view length = facade::ArgS(args, 1);
|
||||
int64_t num;
|
||||
if ((!absl::SimpleAtoi(length, &num)) || (num < -1)) {
|
||||
cntx->SendError("count should be greater than or equal to -1");
|
||||
return;
|
||||
}
|
||||
if (num >= 0) {
|
||||
requested_slow_log_length = num;
|
||||
}
|
||||
}
|
||||
|
||||
// gather all the individual slowlogs from all the fibers and sort them by their timestamp
|
||||
std::vector<boost::circular_buffer<SlowLogEntry>> entries(pp->size());
|
||||
pp->AwaitFiberOnAll([&](auto index, auto* context) {
|
||||
auto shard_entries = ServerState::tlocal()->GetSlowLog().Entries();
|
||||
entries[index] = shard_entries;
|
||||
});
|
||||
|
||||
std::vector<std::pair<SlowLogEntry, unsigned>> merged_slow_log;
|
||||
for (size_t i = 0; i < entries.size(); ++i) {
|
||||
for (const auto& log_item : entries[i]) {
|
||||
merged_slow_log.emplace_back(log_item, i);
|
||||
}
|
||||
}
|
||||
|
||||
std::sort(merged_slow_log.begin(), merged_slow_log.end(), [](const auto& e1, const auto& e2) {
|
||||
return e1.first.unix_ts_usec > e2.first.unix_ts_usec;
|
||||
});
|
||||
|
||||
requested_slow_log_length = std::min(merged_slow_log.size(), requested_slow_log_length);
|
||||
|
||||
auto* rb = static_cast<facade::RedisReplyBuilder*>(cntx->reply_builder());
|
||||
rb->StartArray(requested_slow_log_length);
|
||||
for (size_t i = 0; i < requested_slow_log_length; ++i) {
|
||||
const auto& entry = merged_slow_log[i].first;
|
||||
const auto& args = entry.cmd_args;
|
||||
|
||||
rb->StartArray(6);
|
||||
|
||||
rb->SendLong(entry.entry_id * pp->size() + merged_slow_log[i].second);
|
||||
rb->SendLong(entry.unix_ts_usec / 1000000);
|
||||
rb->SendLong(entry.exec_time_usec);
|
||||
|
||||
// if we truncated the args, there is one pseudo-element containing the number of truncated
|
||||
// args that we must add, so the result length is increased by 1
|
||||
size_t len = args.size() + int(args.size() < entry.original_length);
|
||||
|
||||
rb->StartArray(len);
|
||||
|
||||
for (const auto& arg : args) {
|
||||
if (arg.second > 0) {
|
||||
auto suffix = absl::StrCat("... (", arg.second, " more bytes)");
|
||||
auto cmd_arg = arg.first.substr(0, kMaximumSlowlogArgLength - suffix.length());
|
||||
rb->SendBulkString(absl::StrCat(cmd_arg, suffix));
|
||||
} else {
|
||||
rb->SendBulkString(arg.first);
|
||||
}
|
||||
}
|
||||
// if we truncated arguments - add a special string to indicate that.
|
||||
if (args.size() < entry.original_length) {
|
||||
rb->SendBulkString(
|
||||
absl::StrCat("... (", entry.original_length - args.size(), " more arguments)"));
|
||||
}
|
||||
|
||||
rb->SendBulkString(entry.client_ip);
|
||||
rb->SendBulkString(entry.client_name);
|
||||
}
|
||||
}
|
||||
|
||||
std::optional<fb2::Fiber> Pause(std::vector<facade::Listener*> listeners, Namespace* ns,
|
||||
facade::Connection* conn, ClientPause pause_state,
|
||||
std::function<bool()> is_pause_in_progress) {
|
||||
|
@ -3088,7 +3089,7 @@ void ServerFamily::SlowLog(CmdArgList args, ConnectionContext* cntx) {
|
|||
}
|
||||
|
||||
if (sub_cmd == "GET") {
|
||||
return SlowLogGet(args, cntx, service_, sub_cmd);
|
||||
return SlowLogGet(args, cntx, sub_cmd, &service_.proactor_pool());
|
||||
}
|
||||
cntx->SendError(UnknownSubCmd(sub_cmd, "SLOWLOG"), kSyntaxErrType);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue