Ori.livneh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/174856

Change subject: Improve comments; make the database flush interval a CONSTANT.
......................................................................

Improve comments; make the database flush interval a CONSTANT.

Change-Id: I2178f6264161df4d2b1cfe43a85afa0c24562734
---
M server/eventlogging/handlers.py
M server/eventlogging/jrm.py
M server/eventlogging/utils.py
3 files changed, 13 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/EventLogging 
refs/changes/56/174856/1

diff --git a/server/eventlogging/handlers.py b/server/eventlogging/handlers.py
index d8de3bd..80716e1 100644
--- a/server/eventlogging/handlers.py
+++ b/server/eventlogging/handlers.py
@@ -26,7 +26,7 @@
 from .utils import PeriodicThread
 from .factory import writes, reads
 from .streams import stream, pub_socket, sub_socket, udp_socket
-from .jrm import store_sql_events
+from .jrm import store_sql_events, DB_FLUSH_INTERVAL
 
 
 __all__ = ('load_plugins',)
@@ -87,16 +87,12 @@
 def sql_writer(uri):
     engine = sqlalchemy.create_engine(uri)
     meta = sqlalchemy.MetaData(bind=engine)
-
     events = collections.deque()
-    worker = PeriodicThread(
-        interval=2, target=store_sql_events, args=(meta, events))
+    worker = PeriodicThread(interval=DB_FLUSH_INTERVAL,
+                            target=store_sql_events,
+                            args=(meta, events))
     worker.start()
 
-    # is_alive will be false if an exception
-    # was thrown on the worker thread
-    # main process will exit and will be re-started
-    # by upstart
     while worker.is_alive():
         event = (yield)
         events.append(event)
diff --git a/server/eventlogging/jrm.py b/server/eventlogging/jrm.py
index 0ff0830..b83f3e0 100644
--- a/server/eventlogging/jrm.py
+++ b/server/eventlogging/jrm.py
@@ -41,6 +41,10 @@
     }
 }
 
+#: How long (in seconds) we should accumulate events before flushing
+#: to the database.
+DB_FLUSH_INTERVAL = 2
+
 
 class MediaWikiTimestamp(sqlalchemy.TypeDecorator):
     """A :class:`sqlalchemy.TypeDecorator` for MediaWiki timestamps."""
diff --git a/server/eventlogging/utils.py b/server/eventlogging/utils.py
index cc530ed..660c397 100644
--- a/server/eventlogging/utils.py
+++ b/server/eventlogging/utils.py
@@ -25,6 +25,9 @@
 
     def run(self):
         while 1:
-            self.ready.clear()
-            self.ready.wait(self.interval)
+            if self.ready.wait(self.interval):
+                # If the internal flag of `self.ready` was set, we were
+                # interrupted mid-nap to run immediately. But before we
+                # do, we reset the flag.
+                self.ready.clear()
             self._Thread__target(*self._Thread__args, **self._Thread__kwargs)

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2178f6264161df4d2b1cfe43a85afa0c24562734
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/EventLogging
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to