diff options
author | antirez <antirez@gmail.com> | 2020-05-14 10:02:57 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2020-05-14 10:06:27 +0200 |
commit | bc4667acbcbeced700d0f64735e8ba8c7ffb8357 (patch) | |
tree | bc44a8e73a1c2c48a95f84455a2d3a98a9bbfabb /src/server.c | |
parent | 27e25e9d1ed1b0ba3f639eb64c8f27b852753045 (diff) | |
download | redis-bc4667acbcbeced700d0f64735e8ba8c7ffb8357.tar.gz |
Track events processed while blocked globally.free_clients_during_loading
Related to #7234.
Diffstat (limited to 'src/server.c')
-rw-r--r-- | src/server.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/server.c b/src/server.c index 380a6d5b6..1bed3959d 100644 --- a/src/server.c +++ b/src/server.c @@ -2101,12 +2101,17 @@ void beforeSleep(struct aeEventLoop *eventLoop) { UNUSED(eventLoop); /* Just call a subset of vital functions in case we are re-entering - * the event loop from processEventsWhileBlocked(). */ + * the event loop from processEventsWhileBlocked(). Note that in this + * case we keep track of the number of events we are processing, since + * processEventsWhileBlocked() wants to stop ASAP if there are no longer + * events to handle. */ if (ProcessingEventsWhileBlocked) { - handleClientsWithPendingReadsUsingThreads(); - tlsProcessPendingData(); - handleClientsWithPendingWrites(); - freeClientsInAsyncFreeQueue(); + uint64_t processed = 0; + processed += handleClientsWithPendingReadsUsingThreads(); + processed += tlsProcessPendingData(); + processed += handleClientsWithPendingWrites(); + processed += freeClientsInAsyncFreeQueue(); + server.events_processed_while_blocked += processed; return; } @@ -2757,6 +2762,7 @@ void initServer(void) { server.clients_waiting_acks = listCreate(); server.get_ack_from_slaves = 0; server.clients_paused = 0; + server.events_processed_while_blocked = 0; server.system_memory_size = zmalloc_get_memory_size(); if (server.tls_port && tlsConfigure(&server.tls_ctx_config) == C_ERR) { |