Merge tag '6.0.3' into unstable
Redis 6.0.3 Former-commit-id: 43649fc5b4425fb05e2c1aa48da7c07bc83ce24d
This commit is contained in:
commit
36032618b2
@ -11,6 +11,14 @@ CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
|
||||
SECURITY: There are security fixes in the release.
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
================================================================================
|
||||
Redis 6.0.3 Released Sat May 16 18:10:21 CEST 2020
|
||||
================================================================================
|
||||
|
||||
Upgrade urgency CRITICAL: a crash introduced in 6.0.2 is now fixed.
|
||||
|
||||
1eab62f7e Remove the client from CLOSE_ASAP list before caching the master.
|
||||
|
||||
================================================================================
|
||||
Redis 6.0.2 Released Fri May 15 22:24:36 CEST 2020
|
||||
================================================================================
|
||||
|
@ -1545,6 +1545,16 @@ bool freeClient(client *c) {
|
||||
/* Notify module system that this client auth status changed. */
|
||||
moduleNotifyUserChanged(c);
|
||||
|
||||
/* If this client was scheduled for async freeing we need to remove it
|
||||
* from the queue. Note that we need to do this here, because later
|
||||
* we may call replicationCacheMaster() and the client should already
|
||||
* be removed from the list of clients to free. */
|
||||
if (c->flags & CLIENT_CLOSE_ASAP) {
|
||||
ln = listSearchKey(g_pserver->clients_to_close,c);
|
||||
serverAssert(ln != NULL);
|
||||
listDelNode(g_pserver->clients_to_close,ln);
|
||||
}
|
||||
|
||||
/* If it is our master that's beging disconnected we should make sure
|
||||
* to cache the state to try a partial resynchronization later.
|
||||
*
|
||||
@ -1552,9 +1562,8 @@ bool freeClient(client *c) {
|
||||
* some unexpected state, by checking its flags. */
|
||||
if (FActiveMaster(c)) {
|
||||
serverLog(LL_WARNING,"Connection with master lost.");
|
||||
if (!(c->flags & (CLIENT_PROTOCOL_ERROR|
|
||||
CLIENT_BLOCKED)))
|
||||
{
|
||||
if (!(c->flags & (CLIENT_PROTOCOL_ERROR|CLIENT_BLOCKED))) {
|
||||
c->flags &= ~(CLIENT_CLOSE_ASAP|CLIENT_CLOSE_AFTER_REPLY);
|
||||
replicationCacheMaster(MasterInfoFromClient(c), c);
|
||||
return false;
|
||||
}
|
||||
@ -1622,15 +1631,7 @@ bool freeClient(client *c) {
|
||||
* we lost the connection with the master. */
|
||||
if (c->flags & CLIENT_MASTER) replicationHandleMasterDisconnection(MasterInfoFromClient(c));
|
||||
|
||||
/* If this client was scheduled for async freeing we need to remove it
|
||||
* from the queue. */
|
||||
if (c->flags & CLIENT_CLOSE_ASAP) {
|
||||
ln = listSearchKey(g_pserver->clients_to_close,c);
|
||||
serverAssert(ln != NULL);
|
||||
listDelNode(g_pserver->clients_to_close,ln);
|
||||
}
|
||||
|
||||
/* Remove the contribution that this client gave to our
|
||||
/* Remove the contribution that this client gave to our
|
||||
* incrementally computed memory usage. */
|
||||
g_pserver->stat_clients_type_memory[c->client_cron_last_memory_type] -=
|
||||
c->client_cron_last_memory_usage;
|
||||
@ -3459,7 +3460,6 @@ void processEventsWhileBlocked(int iel) {
|
||||
}
|
||||
|
||||
|
||||
int aof_state = g_pserver->aof_state;
|
||||
aeReleaseLock();
|
||||
serverAssertDebug(!GlobalLocksAcquired());
|
||||
try
|
||||
|
@ -3244,9 +3244,6 @@ void replicationCacheMaster(redisMaster *mi, client *c) {
|
||||
/* Unlink the client from the server structures. */
|
||||
unlinkClient(c);
|
||||
|
||||
/* Clear flags that can create issues once we reconnect the client. */
|
||||
c->flags &= ~(CLIENT_CLOSE_ASAP|CLIENT_CLOSE_AFTER_REPLY);
|
||||
|
||||
/* Reset the master client so that's ready to accept new commands:
|
||||
* we want to discard te non processed query buffers and non processed
|
||||
* offsets, including pending transactions, already populated arguments,
|
||||
|
Loading…
x
Reference in New Issue
Block a user