Fix hung clients
This commit is contained in:
1 parent
8f2dbc3b53
commit
c5c4779ca4
2 files changed
+4
-4
No files matched your search
+3
-3
@@ -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
@@ -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)) {
|
||||
|
||||
Reference in new issue
Block a user