chore: pull latest helio (#4446)

This also pulls the latest abseil library 20240722.0
This commit is contained in:
Roman Gershman 2025-01-13 15:23:08 +02:00 committed by GitHub
parent 679df5cd81
commit 29cde99ca5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 32 additions and 24 deletions

2
helio

@ -1 +1 @@
Subproject commit 51f9c8b913b44cff65c7bebe0da19a5257f5070b Subproject commit 90bc3cc6aabbffc8b274dc0f7801695d68658529

View file

@ -923,7 +923,7 @@ std::optional<absl::FixedArray<std::string_view, 4>> Interpreter::PrepareArgs()
switch (lua_type(lua_, idx)) { switch (lua_type(lua_, idx)) {
case LUA_TNUMBER: case LUA_TNUMBER:
if (lua_isinteger(lua_, idx)) { if (lua_isinteger(lua_, idx)) {
blob_len += absl::AlphaNum{lua_tointeger(lua_, idx)}.size(); blob_len += absl::AlphaNum(lua_tointeger(lua_, idx)).size();
} else { } else {
int fmt_len = absl::SNPrintF(tmpbuf, sizeof(tmpbuf), "%.17g", lua_tonumber(lua_, idx)); int fmt_len = absl::SNPrintF(tmpbuf, sizeof(tmpbuf), "%.17g", lua_tonumber(lua_, idx));
CHECK_GT(fmt_len, 0); CHECK_GT(fmt_len, 0);

View file

@ -112,11 +112,17 @@ std::optional<double> ParseNumericField(std::string_view value);
suppress this false warning, we temporarily disable it around this block of code using GCC suppress this false warning, we temporarily disable it around this block of code using GCC
diagnostic directives. */ diagnostic directives. */
template <typename InlinedVector> std::optional<InlinedVector> EmptyAccessResult() { template <typename InlinedVector> std::optional<InlinedVector> EmptyAccessResult() {
#if !defined(__clang__)
// GCC 13.1 throws spurious warnings around this code. // GCC 13.1 throws spurious warnings around this code.
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#endif
return InlinedVector{}; return InlinedVector{};
#if !defined(__clang__)
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
#endif
} }
} // namespace dfly::search } // namespace dfly::search

View file

@ -401,8 +401,11 @@ DispatchTracker::DispatchTracker(absl::Span<facade::Listener* const> listeners,
} }
void DispatchTracker::TrackOnThread() { void DispatchTracker::TrackOnThread() {
for (auto* listener : listeners_) for (auto* listener : listeners_) {
listener->TraverseConnectionsOnThread(absl::bind_front(&DispatchTracker::Handle, this)); listener->TraverseConnectionsOnThread(
[this](unsigned thread_index, util::Connection* conn) { Handle(thread_index, conn); },
UINT32_MAX, nullptr);
}
} }
bool DispatchTracker::Wait(absl::Duration duration) { bool DispatchTracker::Wait(absl::Duration duration) {

View file

@ -30,13 +30,7 @@ namespace facade {
namespace { namespace {
inline iovec constexpr IoVec(std::string_view s) {
iovec r{const_cast<char*>(s.data()), s.size()};
return r;
}
constexpr char kCRLF[] = "\r\n"; constexpr char kCRLF[] = "\r\n";
constexpr char kErrPref[] = "-ERR ";
constexpr char kSimplePref[] = "+"; constexpr char kSimplePref[] = "+";
constexpr char kLengthPrefix[] = "$"; constexpr char kLengthPrefix[] = "$";
constexpr char kDoublePref[] = ","; constexpr char kDoublePref[] = ",";

View file

@ -90,7 +90,12 @@ void User::Update(UpdateRequest&& req, const CategoryToIdxStore& cat_to_id,
void User::SetPasswordHash(std::string_view password, bool is_hashed) { void User::SetPasswordHash(std::string_view password, bool is_hashed) {
nopass_ = false; nopass_ = false;
if (is_hashed) { if (is_hashed) {
password_hashes_.insert(absl::HexStringToBytes(password)); std::string binary;
if (absl::HexStringToBytes(password, &binary)) {
password_hashes_.insert(binary);
} else {
LOG(ERROR) << "Invalid password hash: " << password;
}
return; return;
} }
password_hashes_.insert(StringSHA256(password)); password_hashes_.insert(StringSHA256(password));

View file

@ -261,7 +261,7 @@ void OutgoingMigration::SyncFb() {
continue; continue;
} }
OnAllShards([this](auto& migration) { migration->RunSync(); }); OnAllShards([](auto& migration) { migration->RunSync(); });
if (cntx_.GetError()) { if (cntx_.GetError()) {
continue; continue;

View file

@ -35,7 +35,7 @@ template <> string ConCat(const CmdArgList& list) {
struct EntryPayloadVisitor { struct EntryPayloadVisitor {
void operator()(const Entry::Payload& p) { void operator()(const Entry::Payload& p) {
out->append(p.cmd).append(" "); out->append(p.cmd).append(" ");
*out += visit([this](const auto& args) { return ConCat(args); }, p.args); *out += visit([](const auto& args) { return ConCat(args); }, p.args);
} }
string* out; string* out;

View file

@ -1486,7 +1486,7 @@ void Service::DispatchMC(const MemcacheParser::Command& cmd, std::string_view va
MCReplyBuilder* mc_builder, facade::ConnectionContext* cntx) { MCReplyBuilder* mc_builder, facade::ConnectionContext* cntx) {
absl::InlinedVector<MutableSlice, 8> args; absl::InlinedVector<MutableSlice, 8> args;
char cmd_name[16]; char cmd_name[16];
char ttl[16]; char ttl[absl::numbers_internal::kFastToBufferSize];
char store_opt[32] = {0}; char store_opt[32] = {0};
char ttl_op[] = "EXAT"; char ttl_op[] = "EXAT";

View file

@ -645,7 +645,7 @@ error_code Replica::ConsumeRedisStream() {
} }
if (!LastResponseArgs().empty()) { if (!LastResponseArgs().empty()) {
string_view cmd = absl::CHexEscape(ToSV(LastResponseArgs()[0].GetBuf())); string cmd = absl::CHexEscape(ToSV(LastResponseArgs()[0].GetBuf()));
// Valkey and Redis may send MULTI and EXEC as part of their replication commands. // Valkey and Redis may send MULTI and EXEC as part of their replication commands.
// Dragonfly disallows some commands, such as SELECT, inside of MULTI/EXEC, so here we simply // Dragonfly disallows some commands, such as SELECT, inside of MULTI/EXEC, so here we simply

View file

@ -1773,8 +1773,9 @@ void ServerFamily::CancelBlockingOnThread(std::function<OpStatus(ArgSlice)> stat
} }
}; };
for (auto* listener : listeners_) for (auto* listener : listeners_) {
listener->TraverseConnectionsOnThread(cb); listener->TraverseConnectionsOnThread(cb, UINT32_MAX, nullptr);
}
} }
string GetPassword() { string GetPassword() {

View file

@ -57,8 +57,8 @@ static vector<string> SplitLines(const std::string& src) {
return res; return res;
} }
TestConnection::TestConnection(Protocol protocol, io::StringSink* sink) TestConnection::TestConnection(Protocol protocol)
: facade::Connection(protocol, nullptr, nullptr, nullptr), sink_(sink) { : facade::Connection(protocol, nullptr, nullptr, nullptr) {
cc_.reset(new dfly::ConnectionContext(this, {})); cc_.reset(new dfly::ConnectionContext(this, {}));
cc_->skip_acl_validation = true; cc_->skip_acl_validation = true;
SetSocket(ProactorBase::me()->CreateSocket()); SetSocket(ProactorBase::me()->CreateSocket());
@ -141,7 +141,7 @@ class BaseFamilyTest::TestConnWrapper {
}; };
BaseFamilyTest::TestConnWrapper::TestConnWrapper(Protocol proto) BaseFamilyTest::TestConnWrapper::TestConnWrapper(Protocol proto)
: dummy_conn_(new TestConnection(proto, &sink_)) { : dummy_conn_(new TestConnection(proto)) {
switch (proto) { switch (proto) {
case Protocol::REDIS: case Protocol::REDIS:
builder_.reset(new RedisReplyBuilder{&sink_}); builder_.reset(new RedisReplyBuilder{&sink_});

View file

@ -25,7 +25,7 @@ void TEST_InvalidateLockTagOptions();
class TestConnection : public facade::Connection { class TestConnection : public facade::Connection {
public: public:
TestConnection(Protocol protocol, io::StringSink* sink); explicit TestConnection(Protocol protocol);
std::string RemoteEndpointStr() const override; std::string RemoteEndpointStr() const override;
void SendPubMessageAsync(PubMessage pmsg) final; void SendPubMessageAsync(PubMessage pmsg) final;
@ -44,7 +44,6 @@ class TestConnection : public facade::Connection {
std::vector<InvalidationMessage> invalidate_messages; std::vector<InvalidationMessage> invalidate_messages;
private: private:
io::StringSink* sink_;
bool is_privileged_ = false; bool is_privileged_ = false;
}; };

View file

@ -1553,7 +1553,7 @@ OpResult<ScoredArray> ZPopMinMaxInternal(std::string_view key, FilterShards shou
} }
auto cb = [&](Transaction* t, EngineShard* shard) { auto cb = [&](Transaction* t, EngineShard* shard) {
if (!key_shard.has_value() || *key_shard == shard->shard_id()) { if (!key_shard.has_value() || *key_shard == shard->shard_id()) {
result = std::move(OpPopCount(range_spec, t->GetOpArgs(shard), key)); result = OpPopCount(range_spec, t->GetOpArgs(shard), key);
} }
return OpStatus::OK; return OpStatus::OK;
}; };

View file

@ -19,7 +19,7 @@ namespace dfly {
class CommandRegistry; class CommandRegistry;
struct CommandContext; struct CommandContext;
class Transaction; class Transaction;
class OpArgs; struct OpArgs;
class ZSetFamily { class ZSetFamily {
public: public: