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