Nuria has submitted this change and it was merged.

Change subject: Block mysql consumer if the queue is too big
......................................................................


Block mysql consumer if the queue is too big

Adds a maximum size for the mysql insertion queue.
If this limit is reached, the consumer should wait
until the insertion worker empties the queue.

Bug: T115667
Change-Id: I99d6e74168efc71793ed466fda32cef75887e1a8
---
M server/eventlogging/handlers.py
1 file changed, 8 insertions(+), 1 deletion(-)

Approvals:
  Nuria: Verified; Looks good to me, approved



diff --git a/server/eventlogging/handlers.py b/server/eventlogging/handlers.py
index e667cd7..d841ecf 100644
--- a/server/eventlogging/handlers.py
+++ b/server/eventlogging/handlers.py
@@ -270,11 +270,18 @@
             # that the connection is alive, and reconnect if necessary.
             dbapi_connection.ping(True)
     try:
-        batch_size = 400
+        batch_size = 5000
         batch_time = 300  # in seconds
+        # Max number of batches pending insertion.
+        queue_size = 1000
+        sleep_seconds = 5
         # Link the main thread to the worker thread so we
         # don't keep filling the queue if the worker died.
         while worker.is_alive():
+            # If the queue is too big, wait for the worker to empty it.
+            while len(events_batch) > queue_size:
+                logger.info('Sleeping %d seconds', sleep_seconds)
+                time.sleep(sleep_seconds)
             event = (yield)
             # Break the event stream by schema (and revision)
             scid = (event['schema'], event['revision'])

-- 
To view, visit https://gerrit.wikimedia.org/r/246796
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I99d6e74168efc71793ed466fda32cef75887e1a8
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/EventLogging
Gerrit-Branch: master
Gerrit-Owner: Mforns <mfo...@wikimedia.org>
Gerrit-Reviewer: Madhuvishy <mviswanat...@wikimedia.org>
Gerrit-Reviewer: Mforns <mfo...@wikimedia.org>
Gerrit-Reviewer: Milimetric <dandree...@wikimedia.org>
Gerrit-Reviewer: Nuria <nu...@wikimedia.org>
Gerrit-Reviewer: Ori.livneh <o...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to