Skip to content

Commit c5c4779

Browse files
committed
Fix hung clients
1 parent 8f2dbc3 commit c5c4779

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

src/db.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3364,7 +3364,7 @@ void redisDbPersistentData::prefetchKeysFlash(const std::unordered_set<client*>
33643364
if (veckeys.empty())
33653365
return;
33663366

3367-
auto *tok = m_spstorage->begin_retrieve(serverTL->el, storageLoadCallback, veckeys.data(), veckeys.size());
3367+
StorageToken *tok = m_spstorage->begin_retrieve(serverTL->el, storageLoadCallback, veckeys.data(), veckeys.size());
33683368
if (tok != nullptr) {
33693369
for (client *c : setcBlocked) {
33703370
if (!(c->flags & CLIENT_BLOCKED)) {
@@ -3434,7 +3434,7 @@ void redisDbPersistentData::processStorageToken(StorageToken *tok) {
34343434
std::unique_lock<fastlock> ul(c->lock);
34353435
if (c->flags & CLIENT_BLOCKED)
34363436
unblockClient(c);
3437-
else
3438-
serverTL->vecclientsProcess.push_back(c);
3437+
3438+
serverTL->vecclientsProcess.push_back(c);
34393439
}
34403440
}

src/networking.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2813,7 +2813,7 @@ void readQueryFromClient(connection *conn) {
28132813
}
28142814
}
28152815
if (!c->vecqueuedcmd.empty()) {
2816-
if (g_pserver->m_pstorageFactory != nullptr && g_pserver->prefetch_enabled) {
2816+
if (g_pserver->m_pstorageFactory != nullptr && g_pserver->prefetch_enabled && !(c->flags & CLIENT_BLOCKED)) {
28172817
serverTL->setclientsPrefetch.insert(c);
28182818
} else {
28192819
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)) {

0 commit comments

Comments
 (0)