Fix ASAN races
Former-commit-id: 8665f250314c4e3de32f3b31a2c0158908ef982b
This commit is contained in:
parent
4136a1084b
commit
d3bd1ab56b
@ -80,6 +80,7 @@ int listMatchObjects(void *a, void *b) {
|
|||||||
/* This function links the client to the global linked list of clients.
|
/* This function links the client to the global linked list of clients.
|
||||||
* unlinkClient() does the opposite, among other things. */
|
* unlinkClient() does the opposite, among other things. */
|
||||||
void linkClient(client *c) {
|
void linkClient(client *c) {
|
||||||
|
serverAssert(GlobalLocksAcquired());
|
||||||
listAddNodeTail(g_pserver->clients,c);
|
listAddNodeTail(g_pserver->clients,c);
|
||||||
/* Note that we remember the linked list node where the client is stored,
|
/* Note that we remember the linked list node where the client is stored,
|
||||||
* this way removing the client in unlinkClient() will not require
|
* this way removing the client in unlinkClient() will not require
|
||||||
@ -1957,12 +1958,9 @@ int handleClientsWithPendingWrites(int iel, int aof_state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (listLength(serverTL->clients_pending_asyncwrite))
|
AeLocker locker;
|
||||||
{
|
locker.arm(nullptr);
|
||||||
AeLocker locker;
|
ProcessPendingAsyncWrites();
|
||||||
locker.arm(nullptr);
|
|
||||||
ProcessPendingAsyncWrites();
|
|
||||||
}
|
|
||||||
|
|
||||||
return processed;
|
return processed;
|
||||||
}
|
}
|
||||||
@ -2298,13 +2296,13 @@ void commandProcessed(client *c) {
|
|||||||
* part of the replication stream, will be propagated to the
|
* part of the replication stream, will be propagated to the
|
||||||
* sub-replicas and to the replication backlog. */
|
* sub-replicas and to the replication backlog. */
|
||||||
if (c->flags & CLIENT_MASTER) {
|
if (c->flags & CLIENT_MASTER) {
|
||||||
|
AeLocker ae;
|
||||||
|
ae.arm(c);
|
||||||
long long applied = c->reploff - prev_offset;
|
long long applied = c->reploff - prev_offset;
|
||||||
long long prev_master_repl_meaningful_offset = g_pserver->master_repl_meaningful_offset;
|
long long prev_master_repl_meaningful_offset = g_pserver->master_repl_meaningful_offset;
|
||||||
if (applied) {
|
if (applied) {
|
||||||
if (!g_pserver->fActiveReplica)
|
if (!g_pserver->fActiveReplica)
|
||||||
{
|
{
|
||||||
AeLocker ae;
|
|
||||||
ae.arm(c);
|
|
||||||
replicationFeedSlavesFromMasterStream(g_pserver->slaves,
|
replicationFeedSlavesFromMasterStream(g_pserver->slaves,
|
||||||
c->pending_querybuf, applied);
|
c->pending_querybuf, applied);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user