Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7803b1148d | ||
|
|
1eab62f7e5 |
@@ -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
|
||||
================================================================================
|
||||
|
||||
+12
-9
@@ -1134,6 +1134,16 @@ void 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(server.clients_to_close,c);
|
||||
serverAssert(ln != NULL);
|
||||
listDelNode(server.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.
|
||||
*
|
||||
@@ -1142,6 +1152,7 @@ void freeClient(client *c) {
|
||||
if (server.master && c->flags & CLIENT_MASTER) {
|
||||
serverLog(LL_WARNING,"Connection with master lost.");
|
||||
if (!(c->flags & (CLIENT_PROTOCOL_ERROR|CLIENT_BLOCKED))) {
|
||||
c->flags &= ~(CLIENT_CLOSE_ASAP|CLIENT_CLOSE_AFTER_REPLY);
|
||||
replicationCacheMaster(c);
|
||||
return;
|
||||
}
|
||||
@@ -1209,15 +1220,7 @@ void freeClient(client *c) {
|
||||
* we lost the connection with the master. */
|
||||
if (c->flags & CLIENT_MASTER) replicationHandleMasterDisconnection();
|
||||
|
||||
/* If this client was scheduled for async freeing we need to remove it
|
||||
* from the queue. */
|
||||
if (c->flags & CLIENT_CLOSE_ASAP) {
|
||||
ln = listSearchKey(server.clients_to_close,c);
|
||||
serverAssert(ln != NULL);
|
||||
listDelNode(server.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. */
|
||||
server.stat_clients_type_memory[c->client_cron_last_memory_type] -=
|
||||
c->client_cron_last_memory_usage;
|
||||
|
||||
@@ -2688,9 +2688,6 @@ void replicationCacheMaster(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,
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
#define REDIS_VERSION "6.0.2"
|
||||
#define REDIS_VERSION "6.0.3"
|
||||
|
||||
Reference in New Issue
Block a user