Code review comment for lp:~sinzui/launchpad/dsp-bug-counts-1

Revision history for this message
Curtis Hovey (sinzui) wrote :

Hi.

I had a number of test failures caused by the change to updateHeat to also update the bug target caches. Many procs are changing bugs and thus are implicitly using SELECT and UPDATE to work with distros, DSPs, products, projects. Creating a DSP on demand also requires read SELECT on sourcepackagepublishinghistory and section. To pass the tests, I need to give bugnotification, checkwatches, queued, and uploading scripts access.

I also saw some very strange storm timing issues that were fixed by adding a call to flush() when we mutate the DSP to create a db instance on demand.

I hesitate to do this without your okay. If we do not do this, I think we need to rethink how bug targets keep that bug heat cache data in sync. We could reuse the old bug-heat script user to update thousands of targets every day, or consider a job.

{{{

=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg 2010-08-15 11:29:23 +0000
+++ database/schema/security.cfg 2010-08-23 21:17:14 +0000
@@ -535,7 +535,8 @@
 public.bugwatchactivity = SELECT, INSERT, UPDATE
 public.cve = SELECT, INSERT, UPDATE
 public.cvereference = SELECT, INSERT, UPDATE
-public.distribution = SELECT
+public.distribution = SELECT, UPDATE
+public.distributionsourcepackage = SELECT, INSERT, UPDATE
 public.distroseries = SELECT
 public.emailaddress = SELECT, INSERT
 public.job = SELECT, INSERT, UPDATE
@@ -548,13 +549,16 @@
 public.packagebugsupervisor = SELECT
 public.person = SELECT, INSERT, UPDATE
 public.personlanguage = SELECT
-public.product = SELECT
+public.product = SELECT, UPDATE
 public.productseries = SELECT
-public.project = SELECT
+public.project = SELECT, UPDATE
 public.questionbug = SELECT
 public.question = SELECT
 public.questionsubscription = SELECT
+public.section = SELECT
+public.sourcepackagepublishinghistory = SELECT
 public.sourcepackagename = SELECT
+public.sourcepackagerelease = SELECT
 public.structuralsubscription = SELECT
 public.teammembership = SELECT
 public.teamparticipation = SELECT, INSERT
@@ -1083,7 +1087,7 @@
 # to insert it.
 public.gpgkey = SELECT, INSERT
 public.signedcodeofconduct = SELECT
-public.distribution = SELECT
+public.distribution = SELECT, UPDATE
 public.distroseries = SELECT, UPDATE
 public.distroarchseries = SELECT
 public.sourcepackagepublishinghistory = SELECT
@@ -1140,8 +1144,8 @@
 public.bugnotificationrecipient = SELECT, INSERT
 public.bugnomination = SELECT
 public.bugtask = SELECT, UPDATE
-public.product = SELECT
-public.project = SELECT
+public.product = SELECT, UPDATE
+public.project = SELECT, UPDATE
 public.bugmessage = SELECT, INSERT
 public.message = SELECT, INSERT
 public.messagechunk = SELECT, INSERT
@@ -1163,6 +1167,7 @@
 public.questionsubscription = SELECT
 public.answercontact = SELECT
 public.personlanguage = SELECT
+public.section = SELECT
 public.structuralsubscription = SELECT

 # Diffing against ancestry and maintenance tasks.
@@ -1190,7 +1195,7 @@
 public.archive = SELECT, UPDATE
 public.archivearch = SELECT, UPDATE
 public.archivepermission = SELECT
-public.distribution = SELECT
+public.distribution = SELECT, UPDATE
 public.distroseries = SELECT
 public.distroarchseries = SELECT
 public.processor = SELECT
@@ -1241,8 +1246,8 @@
 public.bugnotificationrecipient = SELECT, INSERT
 public.bugnomination = SELECT
 public.bugtask = SELECT, UPDATE
-public.product = SELECT
-public.project = SELECT
+public.product = SELECT, UPDATE
+public.project = SELECT, UPDATE
 public.bugmessage = SELECT, INSERT
 public.message = SELECT, INSERT
 public.messagechunk = SELECT, INSERT
@@ -1264,6 +1269,7 @@
 public.questionsubscription = SELECT
 public.answercontact = SELECT
 public.personlanguage = SELECT
+public.section = SELECT
 public.structuralsubscription = SELECT
 public.packageset = SELECT
 public.packagesetgroup = SELECT
@@ -1312,13 +1318,14 @@
 public.bugtag = SELECT
 public.bugtask = SELECT, INSERT, UPDATE
 public.bugwatch = SELECT
+public.distribution = SELECT, UPDATE
 public.job = SELECT, INSERT, UPDATE
 public.component = SELECT
 public.packagebugsupervisor = SELECT
 public.person = SELECT
 public.personlanguage = SELECT
-public.product = SELECT
-public.project = SELECT
+public.product = SELECT, UPDATE
+public.project = SELECT, UPDATE
 public.productseries = SELECT
 public.question = SELECT
 public.questionbug = SELECT
@@ -1326,6 +1333,7 @@
 public.distribution = SELECT
 public.distributionsourcepackage = SELECT, INSERT, UPDATE
 public.distroseries = SELECT
+public.section = SELECT
 public.sourcepackagename = SELECT
 public.sourcepackagerelease = SELECT
 public.sourcepackagepublishinghistory = SELECT

=== modified file 'lib/lp/bugs/doc/bug-heat.txt'
--- lib/lp/bugs/doc/bug-heat.txt 2010-06-22 16:08:05 +0000
+++ lib/lp/bugs/doc/bug-heat.txt 2010-08-23 19:09:33 +0000
@@ -287,8 +287,6 @@

     >>> product = factory.makeProduct()
     >>> bug = factory.makeBug(product=product)
- >>> print product.max_bug_heat
- None
     >>> bug.setHeat(123)
     >>> print product.max_bug_heat
     123

=== modified file 'lib/lp/registry/model/distributionsourcepackage.py'
--- lib/lp/registry/model/distributionsourcepackage.py 2010-08-22 19:10:39 +0000
+++ lib/lp/registry/model/distributionsourcepackage.py 2010-08-23 17:49:13 +0000
@@ -566,6 +566,7 @@
         dsp.sourcepackagename = sourcepackagename
         dsp.is_upstream_link_allowed = is_upstream_link_allowed
         Store.of(distribution).add(dsp)
+ Store.of(distribution).flush()
         return dsp

     @classmethod

}}}

« Back to merge proposal