Fix hung clients

This commit is contained in:
John Sully committed 2024-03-05 02:54:15 +00:00
1 parent 8f2dbc3b53
commit c5c4779ca4
2 files changed
+4 -4

No files matched your search

+3 -3
View File
@@ -3364,7 +3364,7 @@ void redisDbPersistentData::prefetchKeysFlash(const std::unordered_set<client*>
if (veckeys.empty())
return;
auto *tok = m_spstorage->begin_retrieve(serverTL->el, storageLoadCallback, veckeys.data(), veckeys.size());
StorageToken *tok = m_spstorage->begin_retrieve(serverTL->el, storageLoadCallback, veckeys.data(), veckeys.size());
if (tok != nullptr) {
for (client *c : setcBlocked) {
if (!(c->flags & CLIENT_BLOCKED)) {
@@ -3434,7 +3434,7 @@ void redisDbPersistentData::processStorageToken(StorageToken *tok) {
std::unique_lock<fastlock> ul(c->lock);
if (c->flags & CLIENT_BLOCKED)
unblockClient(c);
else
serverTL->vecclientsProcess.push_back(c);
serverTL->vecclientsProcess.push_back(c);
}
}
+1 -1
View File
@@ -2813,7 +2813,7 @@ void readQueryFromClient(connection *conn) {
}
}
if (!c->vecqueuedcmd.empty()) {
if (g_pserver->m_pstorageFactory != nullptr && g_pserver->prefetch_enabled) {
if (g_pserver->m_pstorageFactory != nullptr && g_pserver->prefetch_enabled && !(c->flags & CLIENT_BLOCKED)) {
serverTL->setclientsPrefetch.insert(c);
} else {
if (g_pserver->is_overloaded && !(c->flags & (CLIENT_MASTER | CLIENT_SLAVE | CLIENT_PENDING_WRITE | CLIENT_PUBSUB | CLIENT_BLOCKED | CLIENT_IGNORE_OVERLOAD)) && ((random() % 100) < g_pserver->overload_protect_strength)) {