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.
|
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
|
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. */
|
/* Notify module system that this client auth status changed. */
|
||||||
moduleNotifyUserChanged(c);
|
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
|
/* If it is our master that's beging disconnected we should make sure
|
||||||
* to cache the state to try a partial resynchronization later.
|
* 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. */
|
* some unexpected state, by checking its flags. */
|
||||||
if (FActiveMaster(c)) {
|
if (FActiveMaster(c)) {
|
||||||
serverLog(LL_WARNING,"Connection with master lost.");
|
serverLog(LL_WARNING,"Connection with master lost.");
|
||||||
if (!(c->flags & (CLIENT_PROTOCOL_ERROR|
|
if (!(c->flags & (CLIENT_PROTOCOL_ERROR|CLIENT_BLOCKED))) {
|
||||||
CLIENT_BLOCKED)))
|
c->flags &= ~(CLIENT_CLOSE_ASAP|CLIENT_CLOSE_AFTER_REPLY);
|
||||||
{
|
|
||||||
replicationCacheMaster(MasterInfoFromClient(c), c);
|
replicationCacheMaster(MasterInfoFromClient(c), c);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1622,14 +1631,6 @@ bool freeClient(client *c) {
|
|||||||
* we lost the connection with the master. */
|
* we lost the connection with the master. */
|
||||||
if (c->flags & CLIENT_MASTER) replicationHandleMasterDisconnection(MasterInfoFromClient(c));
|
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. */
|
* incrementally computed memory usage. */
|
||||||
g_pserver->stat_clients_type_memory[c->client_cron_last_memory_type] -=
|
g_pserver->stat_clients_type_memory[c->client_cron_last_memory_type] -=
|
||||||
@ -3459,7 +3460,6 @@ void processEventsWhileBlocked(int iel) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int aof_state = g_pserver->aof_state;
|
|
||||||
aeReleaseLock();
|
aeReleaseLock();
|
||||||
serverAssertDebug(!GlobalLocksAcquired());
|
serverAssertDebug(!GlobalLocksAcquired());
|
||||||
try
|
try
|
||||||
|
@ -3244,9 +3244,6 @@ void replicationCacheMaster(redisMaster *mi, client *c) {
|
|||||||
/* Unlink the client from the server structures. */
|
/* Unlink the client from the server structures. */
|
||||||
unlinkClient(c);
|
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:
|
/* Reset the master client so that's ready to accept new commands:
|
||||||
* we want to discard te non processed query buffers and non processed
|
* we want to discard te non processed query buffers and non processed
|
||||||
* offsets, including pending transactions, already populated arguments,
|
* offsets, including pending transactions, already populated arguments,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user