Merge lp:~andrewsomething/dat-overview/lp1189808 into lp:dat-overview

Proposed by Andrew Starr-Bochicchio
Status: Merged
Merged at revision: 34
Proposed branch: lp:~andrewsomething/dat-overview/lp1189808
Merge into: lp:dat-overview
Diff against target: 60 lines (+22/-5)
1 file modified
overview/uploads/management/commands/migrate-upload-data.py (+22/-5)
To merge this branch: bzr merge lp:~andrewsomething/dat-overview/lp1189808
Reviewer Review Type Date Requested Status
Daniel Holbach Approve
Review via email: mp+174041@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Daniel Holbach (dholbach) wrote :

Memory usage still goes up considerably during the process (top said 76% on a machine with 1.5G mem + 2G swap), but at least it makes it through a full pass. :-)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'overview/uploads/management/commands/migrate-upload-data.py'
--- overview/uploads/management/commands/migrate-upload-data.py 2013-06-11 09:08:16 +0000
+++ overview/uploads/management/commands/migrate-upload-data.py 2013-07-10 20:21:25 +0000
@@ -19,7 +19,7 @@
19 latest_entry = Uploads.objects.values(t).latest(t)[t]19 latest_entry = Uploads.objects.values(t).latest(t)[t]
20 except ObjectDoesNotExist:20 except ObjectDoesNotExist:
21 latest_entry = None21 latest_entry = None
22 for row in cursor.fetchall():22 for row in self.row_iter(cursor):
23 if latest_entry is None or row[0] > latest_entry:23 if latest_entry is None or row[0] > latest_entry:
24 if row[4] == row[6] or row[5] == row[7]:24 if row[4] == row[6] or row[5] == row[7]:
25 spon_email = ''25 spon_email = ''
@@ -30,10 +30,25 @@
30 uploads = Uploads(timestamp=row[0], release=row[1],30 uploads = Uploads(timestamp=row[0], release=row[1],
31 package=row[2], version=row[3],31 package=row[2], version=row[3],
32 name_changer=row[4], email_changer=row[5],32 name_changer=row[4], email_changer=row[5],
33 name_sponsor=spon_name, email_sponsor=spon_email,33 name_sponsor=spon_name,
34 email_sponsor=spon_email,
34 lpid_changer='' ,lpid_sponsor='')35 lpid_changer='' ,lpid_sponsor='')
35 bulk_insert.append(uploads)36 if len(bulk_insert) == 1000:
37 Uploads.objects.bulk_create(bulk_insert)
38 bulk_insert = []
39 bulk_insert.append(uploads)
40 else:
41 bulk_insert.append(uploads)
36 Uploads.objects.bulk_create(bulk_insert)42 Uploads.objects.bulk_create(bulk_insert)
43 cursor.close()
44
45 def row_iter(self, cursor, size=1000):
46 while True:
47 rows = cursor.fetchmany(size)
48 if not rows:
49 break
50 for row in rows:
51 yield row
3752
38 def add_lpids(self):53 def add_lpids(self):
39 self.launchpad = lp('d-a-t', anonymous=True, lp_service='production')54 self.launchpad = lp('d-a-t', anonymous=True, lp_service='production')
@@ -42,7 +57,8 @@
42 flat=True).distinct()57 flat=True).distinct()
43 for e in changer_emails:58 for e in changer_emails:
44 uploads = Uploads.objects.filter(email_changer=e)59 uploads = Uploads.objects.filter(email_changer=e)
45 if uploads[0].lpid_changer == '' and (uploads[0].email_changer not in ('', 'N/A')):60 if uploads[0].lpid_changer == '' and (
61 uploads[0].email_changer not in ('', 'N/A')):
46 lpid = self.email_to_lp(e)62 lpid = self.email_to_lp(e)
47 if lpid != '':63 if lpid != '':
48 for ul in uploads.filter(lpid_changer=''):64 for ul in uploads.filter(lpid_changer=''):
@@ -58,7 +74,8 @@
58 flat=True).distinct()74 flat=True).distinct()
59 for e in sponsor_emails:75 for e in sponsor_emails:
60 uploads = Uploads.objects.filter(email_sponsor=e)76 uploads = Uploads.objects.filter(email_sponsor=e)
61 if uploads[0].lpid_sponsor == '' and (uploads[0].email_sponsor not in ('', 'N/A')):77 if uploads[0].lpid_sponsor == '' and (
78 uploads[0].email_sponsor not in ('', 'N/A')):
62 lpid = self.email_to_lp(e)79 lpid = self.email_to_lp(e)
63 if lpid != '':80 if lpid != '':
64 for ul in uploads.filter(lpid_sponsor=''):81 for ul in uploads.filter(lpid_sponsor=''):

Subscribers

People subscribed via source and target branches