summary refs log tree commit diff
diff options
context:
space:
mode:
authorNeil Johnson <neil@fragile.org.uk>2018-05-01 12:13:49 +0100
committerNeil Johnson <neil@fragile.org.uk>2018-05-01 12:13:49 +0100
commitdd1a8324195f37d508d518db10ba37d9028afc86 (patch)
tree99427a708cf22df62aad8d6cd8d5111a36cc26f3
parentadd inidexes based on usage (diff)
downloadsynapse-dd1a8324195f37d508d518db10ba37d9028afc86.tar.xz
remove user agent from data model, will just join on user_ips
-rw-r--r--synapse/storage/__init__.py23
1 files changed, 11 insertions, 12 deletions
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index c22d38800c..b51cf70336 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -15,6 +15,7 @@
 # limitations under the License.
 
 import datetime
+from dateutil import tz
 import time
 import logging
 
@@ -354,10 +355,9 @@ class DataStore(RoomMemberStore, RoomStore,
         def _generate_user_daily_visits(txn):
             logger.info("Calling _generate_user_daily_visits")
             # determine timestamp of previous days
-            yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
-            yesterday_start = datetime.datetime(yesterday.year,
-                                                yesterday.month,
-                                                yesterday.day, 0, 0, 0, 0)
+            yesterday = datetime.datetime.utcnow() - datetime.timedelta(days=1)
+            yesterday_start = datetime.datetime(yesterday.year, yesterday.month,
+                                                yesterday.day, tzinfo=tz.tzutc())
             yesterday_start_time = int(time.mktime(yesterday_start.timetuple())) * 1000
 
             # Check that this job has not already been completed
@@ -371,9 +371,8 @@ class DataStore(RoomMemberStore, RoomStore,
 
             # Bail if the most recent time is yesterday
             if row and row[0] == yesterday_start_time:
-                logger.info("Bailing from _generate_user_daily_visits, already completed")
                 return
-            logger.info("inserting into user_daily_visits")
+
             # Not specificying an upper bound means that if the update is run at
             # 10 mins past midnight and the user is active during a 30 min session
             # that the user is still included in the previous days stats
@@ -382,20 +381,20 @@ class DataStore(RoomMemberStore, RoomStore,
             # The alternative is to insert on every request - but prefer to avoid
             # for performance reasons
             sql = """
-                    SELECT user_id, user_agent, device_id
+                    SELECT user_id, device_id
                     FROM user_ips
                     WHERE last_seen > ?
             """
             txn.execute(sql, (yesterday_start_time,))
+            user_visits = txn.fetchall()
 
             sql = """
-                    INSERT INTO user_daily_visits (user_id. user_agent,
-                                                   device_id, timestamp)
-                    VALUES (?, ?, ?, ?)
+                    INSERT INTO user_daily_visits (user_id, device_id, timestamp)
+                    VALUES (?, ?, ?)
             """
 
-            for row in txn:
-                txn.execute(sql, (row + (yesterday_start_time,)))
+            for visit in user_visits:
+                txn.execute(sql, (visit + (yesterday_start_time,)))
 
         return self.runInteraction("generate_user_daily_visits",
                                    _generate_user_daily_visits)