/srv/irclogs.ubuntu.com/2012/01/05/#launchpad-dev.txt

StevenKrick_h__: Your displayname seems to be 'Rick harding'00:09
StevenKIn Buildbot, at least00:10
rick_h__StevenK: hmm, ok. Looking around00:11
rick_h__ah, there it is. Thanks StevenK00:11
jelmerStevenK: curtis setting a trend perhaps?00:11
rick_h__I promise to do better next psm submit00:12
StevenKjelmer: That was firstname, not surname. But perhaps.00:12
rick_h__pqm...ugh00:12
StevenKHaha00:12
StevenKwgrant: So the rejection is caused due to the validator on SPR.{creator,maintainer} -- Perhaps we should reject just before we create the SPR?00:23
wgrantStevenK: Right.00:23
StevenKwgrant: NascentUpload doesn't create the SPR?00:23
wgrantIt uses createUploadedSourcePackageRelease00:24
StevenKIndirectly, it looks like.00:24
wgrantShould be direct00:25
wgrantin dscfile, probably.00:25
StevenKRight00:26
StevenKwgrant: You'd prefer dscfile.storeInDatabase() or IDistroSeries.createUploadedSourcePackageRelease() do the rejection?00:28
wgrantStevenK: Depends where the error handling tends to be now.00:29
wgrantIt may want to be even before storeInDatabase.00:29
wgrantWhere it's mapping the address to a person, perhaps.00:29
StevenKThat's parseAddress00:30
StevenKRight, we grab them there. I can swoop in and do the private bit00:32
lifelessbah, hate it when I can't find a bug02:21
StevenKBleh. How hard can it be to create a private team with a contact address? :-(02:28
wgrantStevenK: factory.makeTeam(email="foo@bar.com", visibility=PersonVisibility.PRIVATE)?02:33
StevenKwgrant: Unauthorized: (<Person at 0xe3ea090 team-name-100003 (Team Name 100003)>, 'setContactAddress', 'launchpad.View')02:34
wgrantStevenK: with celebrity_logged_in('admin')02:35
wgrantOr fix the factory.02:35
lifelessmeep02:46
lifelesshth is https://bugs.launchpad.net/launchpad/+bug/129302:46
_mup_Bug #1293: Customizing body attributes seems like a very secretive, if not almost impossible thing to do <lp-foundations> <Launchpad itself:Invalid> < https://launchpad.net/bugs/1293 >02:46
lifelesson the first page of 'by most recent change' bugs in LP02:46
lifeless(with dups shown and all statuses)02:47
lifelessbrain melting02:57
lifeless1112 to go03:16
StevenKwgrant: I'm having a brainfade - does IPerson.inTeam(ITeam) work?03:19
StevenKSeems to03:22
wgrantStevenK: That's the point of it, so yes :)03:23
lifelessStevenK: "04:14
lifelessForbid private teams to be private teams."04:14
StevenKBah04:14
lifelessalso04:14
lifelessthis leaks the teams, do we care?04:14
lifelessor is changed-by gpg authenticated ?04:15
StevenKlifeless: sinzui and I feel it is safe enough. And we aren't expecting this codepath to be hit often at all04:16
lifelessusing the uploader would be authenticated04:16
lifelessrather than the changer04:16
lifelessor am I confused about which field is which04:16
StevenKlifeless: I can switch to SignableTagFile.signer if you wish04:19
StevenKThat may leak the team, if the changed-by isn't a member of the team and the uploader is04:19
lifelessso, there are two aspects here I think.04:20
lifelesswho do we tell04:20
lifelesswhat do we tell them04:20
wgrantIs that inTeam bit a useful distinction?04:20
lifelessif we tell unauthenticated people, then we shouldn't tell them anything04:20
StevenKReject silently?04:21
wgrantIf someone wants to know that it was a private team, they can just grep for 'Invalid Maintainer'04:21
lifelessif we only tell authenticated people then we can tell them more04:21
lifelessWell04:21
lifelessI think we should accept it but not link to the person object; but thats clearly different.04:21
wgrantAnd clearly breaks everything.04:21
wgrantMaintainer and Changed-By are mandatory.04:21
lifeless(It is however the logical consequence of allowing user supplied data to be injected into a partially-private system)04:21
StevenKlifeless: We can't.04:22
wgrantAnd not linking to the person object still reveals the private team's existence.04:22
lifelessarguably yes04:22
lifelessthough linking and then folk dropping that address from their account is win too04:23
wgrantSure, something like BranchRevision is probably better.04:23
lifelessso whats the reason we don't accept this? I mean, why is rejecting it the approach decided on?04:23
wgrantEr04:23
wgrantRevisionAuthor04:23
StevenKlifeless: Because we already do reject, just the message is bong.04:23
lifelessah.04:24
wgrantAnd what else can we do?04:24
lifelessso, uhm. I'd be cautious here.04:24
lifelesswgrant: we could accept; permit limitedview to the relevant context, tell the user they did this thing and they should delete the package to hide it04:24
wgrantlifeless: No.04:24
lifelesswe do have private archives after all04:24
wgrantWe can't do stuff like that.04:25
StevenKlifeless: And then if the publication is copied to a public archive?04:25
wgrantIt's the antithesis of the disclosure project.04:25
lifelessStevenK: prompt them before permitting it04:25
lifelesswgrant: I don't follow04:25
wgrantlifeless: We are going to have 100 different unauditable paths to private team visibility.04:26
StevenKlifeless: Which the copy architecture doesn't permit either04:26
wgrantlifeless: When disclosure is about making visibility less opaque.04:26
wgrantAnd more auditable.04:26
StevenKBAAAAH04:27
lifelesswgrant: that is something we *can* provide; disclosure is certainly about making it understandable and controllable. Social teams are about making private teams more useful.04:27
lifelessso, right here, right now, I would just say invalid maintainer04:27
wgrantlifeless: And your proposed social private team design is not understandable or controllable.04:27
lifelessmake folk that want to probe for private teams work a little04:27
StevenKtest_sigint_exits_nicely (bzrlib.plugins.lpserve.test_lpserve.TestLPServiceInSubprocess) just failed on buildbot.04:27
lifelesswgrant: its certainly controllable, as proposed.04:28
lifelesswgrant: and it seems to be quite understandable to everyone I've explained it to.04:28
wgrant"Who can see Canonical Supersecret Team: anyone who can see these 1000 bugs, 200 blueprints, 3 projects, 2 milestones, 4 packages, 2 teams, 3 sprints, 1 translationgroup, 10 branches, 9 code review comments, 4 code review votes, 10 bug subscriptions."04:30
wgrantVery understandable :)04:30
lifelessthats like saying 'who can use LP: anyone that can process http, https and handle a number of forms of crypto, has a working RFC2870...04:33
lifelessits bollox to cast it that way, when we have software to deal with abstractions04:33
wgrantThat can't be significantly abstracted.04:34
wgrantApart from collapsing code review comments and votes into merge proposals.04:34
lifelessWe will be face to face soon04:34
lifelesswe can drill into it as much as you want04:34
lifeless'interacts with' seems to be pretty understandable, in my unscientific poll04:34
lifelessI *think* you are thinking implementation04:35
lifelesswhich is totally different (but still important)04:35
wgrantHmm?04:35
wgrantI manage a team.04:35
wgrantSomeone has discovered its existence :(04:35
wgrantI don't know how.04:35
lifelessthat was code for 'not now'04:35
wgrantI look at the disclosure page.04:35
wgrantI see 2000 artifacts that might have leaked it.04:35
wgrantI can't see a list of people :(04:35
wgrantI am screwed.04:35
lifelessIMPLEMENTATION04:35
wgrantI disagree, but next week :)04:36
lifelesswgrant: if its just been disclosed, the page should show precisely one thing: the disclosing thing (because public disclosure has to list every user ever otherwise)04:36
lifelessfeel free to help me zerg 75% of the high bugs04:37
wgrantdisclosed != puiblicly disclosed04:37
StevenKlifeless: So I should just raise UploadError('Invalid Maintainer.') ?04:38
lifelessso, you're talking teams, disclosure is focused on projects.04:38
lifelessStevenK: it avoids any complication about disclosure04:38
wgrantlifeless: Sure, but making private teams infinitely worse than they are now is not a good goal to have.04:38
lifelessStevenK: I *hate* 'this is wrong but we won't hit it much' cases: they always, eventually, bit.04:38
lifeless*bite*04:38
lifelesswgrant: if that was the goal, I would agree.04:38
lifelesswgrant: you are being very over the top though, which isn't all that nice04:39
wgrantI'm not being hugely hyperbolic :)04:40
lifelessenough to impede any discussion04:40
StevenKwgrant: You forced buildbot again?04:42
wgrantI did.04:42
StevenKlifeless: diff updated04:45
lifelessyay timeouts04:53
lifelesshow is that even possible04:53
lifelessTime: 29.29 secondsID: 2, status: 200 (Ok)04:53
wgrantWhere?04:54
lifelesswgrant: win!https://bugs.launchpad.net/launchpad/+bug/62098905:06
_mup_Bug #620989: Package sets can include sets in other series <lp-soyuz> <packagesets> <Launchpad itself:Triaged> < https://launchpad.net/bugs/620989 >05:06
wgrantYeah05:07
lifelessdidn't we have a policy about tech-debt importance ?06:02
wgrantI don't recall.06:03
lifelessnigelb: https://bugs.launchpad.net/launchpad/+bug/528306:06
_mup_Bug #5283: "Home page" vs. "Description" is misleading <bad-commit-11051> <easy> <lp-registry> <qa-ok> <tech-debt> <ui> <Launchpad itself:In Progress by nigelbabu> < https://launchpad.net/bugs/5283 >06:06
lifelesswow, logintoken is crufty06:12
lifelessahhhha06:13
lifelesslook at the 'may be notified' portlet on https://bugs.launchpad.net/launchpad/+bug/35200006:13
_mup_Bug #352000: javascript errors are hard to read, not informative, and often ugly <Launchpad itself:Triaged> < https://launchpad.net/bugs/352000 >06:13
wgrantlifeless: What about it?06:14
wgrantIt's backwards, but that's been the case for months.06:14
lifelessFind the names begininning with A06:14
lifelesswell, I notice had not06:14
lifelessis there a bug ?06:14
wgrantDon't thinkso.06:14
wgrantIt happened in the post-release complete redesign of the subscription UI.06:15
lifelessbah, the mine regression bug isn't in the lpbugtags page06:16
lifelesstag isn't in..06:16
* lifeless uses regression06:17
lifelessbug 91213706:17
_mup_Bug #912137: subscribers portlet sorted in reverse order <regression> <Launchpad itself:Triaged> < https://launchpad.net/bugs/912137 >06:17
wgrantHm06:17
wgrantBug #911752 is possible relevant06:18
_mup_Bug #911752: Bug.getIndirectSubscribers() does not sort using person_sort_key <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/911752 >06:18
wgrantpossibly06:18
lifelesscertainly, that will sort it more correctly... in reverse order06:18
lifelesssinzui: I think you fixed https://bugs.launchpad.net/launchpad/+bug/15334306:22
_mup_Bug #153343: Split out email interface tests <email> <lp-bugs> <tech-debt> <test-system> <Launchpad itself:Triaged> < https://launchpad.net/bugs/153343 >06:22
lifelessuhm08:09
lifelesswhere has 'open team' gone ? https://launchpad.net/~maas-developers/+edit08:09
lifelessI bet I know, I bet 'subteams' includes 'this' and its a regression08:10
lifelessnope, not that simple08:13
stublifeless: Has it been assigned to anything that would block it from being open?08:20
lifelessit has a list08:20
lifelessbut lists are allowed to be open08:20
lifelessits not private08:20
lifelessits not a member of anything AFAIK08:21
lifelesshttps://launchpad.net/~maas-developers/+participation08:21
StevenKlifeless: ITeam.    def checkOpenSubscriptionPolicyAllowed(self, policy='open'):08:24
StevenKBah08:25
StevenKlifeless: If it's a pillar owner, security contact, has a PPA, closed super teams or is subscribed to or assigned private bugs08:25
lifelessno, no, no, no, shouldn't be yet, shouldn't be yet.08:26
StevenKApparently, the code disagrees.08:26
lifelessit fails to say so08:26
lifelessit just hides the buttons rather than explaining they are hidden or something08:27
lifelessStevenK: you are an owner of maas-developers, give it a go08:27
lifelessno bugs in 'all related bugs'08:27
StevenKlifeless: Er, it owns maas?08:29
lifelessah08:30
lifelesswell it shouldn't, its the damn list08:30
StevenKhttps://launchpad.net/maas << meet the pillar08:30
lifelessthanks08:30
lifelessso08:30
lifelessuhm08:30
wgrantIs MaaS developers really the list?08:31
StevenKHowever, please file a bug, tagged disclosure. The page should state why Open and Delegated (in this example) are hidden.08:31
wgrantOr is it confused?08:31
StevenKThe maintainer is the team08:31
wgrantYes.08:31
wgrantBut that doesn't say anything about the intent of the team.08:31
wgrantApart from that it may be confused.08:32
StevenKsinzui went through this. Open teams that own projects can allow people to join and subvert the team08:32
StevenKEr, subvert the project08:32
wgrantI'm not arguing about the LP rules.08:33
wgrantI'm arguing that whoever created the team might not know what the team is meant for.08:33
lifelessjulian made the list :P08:33
lifelessyes, its the list.08:33
wgrantSince it seems to be pretending to both be a privilege team and a list team.08:33
StevenKOh, right.08:33
lifelessI think he forgot to separate.08:33
wgrantWhich is wrong.08:33
lifelessso I've proposed to the cabal in question that we do, ditching the current list and shuffling, to follow the normal naming idioms08:33
lifelessStevenK: thanks very much for spotting that. Care to file a bug that its a PITA to spot ?08:34
StevenKlifeless: I asked you to three minutes ago. :-P08:34
wgrantOpen teams are, in general, a Bad Idea™08:34
lifelessStevenK: yes, I'm currnetly review 1K high bugs08:34
stubhttps://bugs.launchpad.net/launchpad/+bug/905044 has a script that needs to be brought in-tree, but the license is incompatible. I should just stick a new license at the top since we wrote it?08:34
_mup_Bug #905044: Some script server scripts are not using pgbouncer for DB connections <canonical-losa-lp> <Launchpad itself:Triaged> < https://launchpad.net/bugs/905044 >08:34
lifelessstub: yes08:34
lifelessStevenK: so my brain is pudding; I'd really appreciate you recording the issue08:35
nigelblifeless: I was stuck on that because of garbo job.08:36
nigelbI intend to find some time to clear up bugs I've assigned to myself.08:36
StevenKlifeless: bug 91215908:36
_mup_Bug #912159: ITeam:+edit does not explain why some subscription policies are hidden <disclosure> <Launchpad itself:Triaged> < https://launchpad.net/bugs/912159 >08:36
lifelessthanks08:36
StevenKIf you wish to subscribe/do whatever08:37
StevenKnigelb: 329!!08:37
lifelessoh, I am. To /launchpad-project08:37
lifelessnigelb: did you need advice or ?08:37
nigelblifeless: 329?08:38
nigelblifeless: I do. On work week + vacation now, will ping when I'm back.08:38
lifelesskk08:39
StevenKnigelb: You haven't seen the cricket?08:39
nigelbStevenK: Nope. 'm on vacation, on a beach. I thought you don't watch cricket?08:39
StevenKI like it when Australia are winning :-P08:39
StevenKAnd Clarke hit 329 not out today08:40
nigelbha, so you only troll when australia is winning? :D08:40
StevenKPretty much, yes.08:40
nigelbOMGWTBBQ 329!08:40
nigelb*and* a 150 from Hussey.08:41
nigelbShame.08:41
adeuringgood morning08:47
lifelessstub: catchup ?09:00
stublifeless: sure09:00
mrevellMorning09:01
nigelbHey mrevell09:01
=== almaisan-away is now known as al-maisan
jtvMommy, where do NascentUploads come from?09:29
wgrantjtv: process-upload.py09:38
jtvwgrant: I suppose it's okay to construct them directly in tests?09:38
wgrantjtv: It's reasonable.09:39
wgrantCheck the existing tests to see what is reasonably distasteful, I suppose :/09:39
wgrantNone of them are pretty.09:39
jtvThanks.09:40
bigjoolsjtv: what are you needing to test?09:53
jtvbigjools: the scenario where we sync a debian source package into ubuntu, and then the resulting binary build in ubuntu fails.09:54
bigjoolsI hate these tests, but ...09:54
jtvBut?09:55
bigjoolslib/lp/soyuz/doc/distroseriesqueue-notify.txt09:55
bigjoolsyou are checking emails IIRC?09:55
jtvYes.09:56
bigjoolsjtv: you might not need to create a NascentUpload, that's all09:57
jtvI figure it's probably simpler than reverse-engineering a suitable path through process-upload.09:57
bigjoolsNU is quite heavyweight09:57
bigjoolsthe uploader is so badly written that it's very hard to write short unit tests09:58
lifelessflacoste is going to crucify me :)10:12
jtvwgrant: any idea why do_reject might be giving me a ForbiddenAttribute on (createQueueEntry, PackagePublishingPocket.RELEASE)?10:17
wgrantjtv: w... what?10:17
wgrantlifeless: Oh?10:17
jtvwgrant: I guess that's a pocket sneaking into the spot that's reserved for a permission?10:18
lifelesswgrant: I just found 3? 4? hidden criticals10:18
wgrantThat looks more like you're trying to call pocket.createQueueEntry, I think10:18
lifelessoopses triaged high10:18
wgrantlifeless: Ah, yeah10:18
jtvwgrant: it's distroseries.createQueueEntry, in do_reject.10:19
wgrantjtv: You've probably got the distroseries and pocket args around the wrong way10:19
jtvOooh that might be worth checking, thanks10:19
bigjoolsjtv: sounds also like you are testing in the wrong layer10:21
jtvI'm using LaunchpadZopelessLayer; open to suggestions.10:21
wgrantThat's fine. It's ForbiddenAttribute, not Unauthorized.10:21
wgrant(you get Unauthorized in Functional vs Zopeless cases)10:22
jtvFound it.  Silly typo.10:24
wgrantPhew.10:24
jtvDon't worry _too_ much — I'm trying to write a test here, not trying to upload a security fix to Ubuntu.  :)10:27
cjwatsonDo garbo jobs need to land anywhere special (db-devel?) or do they just land on devel?  Any special deployment runes related to them?10:51
lifelessdevel.10:51
lifelessnone.10:51
cjwatsonrah10:51
cjwatsonNow all I need is to have some clue how to set chunk sizes10:52
lifelessyou don't10:52
cjwatsonmaximum_chunk_size at least10:52
lifelessshouldn't need to touch that at all, it will start at one and scale until the transactions are a good length.10:52
stubUnless the operations are really variable, which can break the tuning :)10:53
cjwatsonOh.  All the existing garbo jobs set it though10:53
lifelessshould really clean that up10:53
cjwatsonAnd the docs say "    maximum_chunk_size = None  # Override.10:53
cjwatson"10:53
cjwatsonwell, insofar as that's doc10:53
lifelessyeah, should cleanup10:53
lifelessset it to 1000 or something10:53
cjwatsonOK10:53
lifelessstub: a smoothed average should accomodate pretty noisy durations10:53
cjwatsonAnything else I need to pre-imp chat about wrt bug 911943?10:53
_mup_Bug #911943: gina imports SourcePackageRelease.dsc_binaries incorrectly <Launchpad itself:Triaged> < https://launchpad.net/bugs/911943 >10:53
lifelessstub: quadratic mean I mean, I think.10:54
cjwatsonThe bug itself is trivial, it's the cleanup ...10:54
stubIts a safety net. If you are trashing stuff from a single table, I'd jump straight to 10000 unless the delete cascades...10:54
cjwatsonI'm actually doing updates in this case10:54
stublifeless: I'm not sure what jtv's algorithm counts as10:54
stubcjwatson: Something lowish then - 1000 should be fine.10:54
cjwatsonI need to change everything that says "foo bar baz" to "foo, bar, baz" - should I be using postgres regexp_replace, or doing it in Python?10:55
lifelesswhatever your heart desires10:55
stubcjwatson: PostgreSQL's will be optimal as you just issue an UPDATE statement rather than a SELECT followed by an UPDATE10:55
cjwatsonokie10:56
lifelesswon't really matter though10:56
stubBut PG's regexps are special... check the docs10:56
lifelessbecause a select + update would not start taking locks until the updates started flowing10:56
lifeless6/1 1/2 dozen10:56
cjwatson"Binary: libmpdclient-dev (>= 2.0.0~git20090929.fc3bae2-0ubuntu1~ripps2~hardy), libmpdclient2"11:15
cjwatson*headdesk*11:15
lifelesscjwatson: is https://bugs.launchpad.net/launchpad/+bug/669404 still high ?11:17
_mup_Bug #669404: support linux-any and similar expansions in Packages-arch-specific <lp-soyuz> <soyuz-build> <soyuz-core> <Launchpad itself:Triaged> < https://launchpad.net/bugs/669404 >11:17
lifelesscjwatson: if it hasn't triggered in two cycles...11:17
cjwatsonlifeless: Probably not; P-a-s has generally been being cut down11:17
cjwatsonlifeless: I could just fix it and make it moot, I suppose :)11:18
lifelesscjwatson: you could; I'm going to triage it down to low anyhow.11:19
* cjwatson nods11:20
=== al-maisan is now known as almaisan-away
jtvbigjools, cjwatson: question about the bug I'm looking at.  If we sync a package from debian into ubuntu, triggering a build, and the build fails… who should get notified at all?  Definitely not the Debian maintainer, who I gather is also probably also the signer and the author of the last change.  Anyone else?11:56
jtvbigjools: and by the way, my test is here: http://bazaar.launchpad.net/~jtv/launchpad/bug-876594/revision/1463611:56
wgrantIt should only be the person who requested the sync.11:56
wgrantI can't see it making sense to email anybody else related to the package.11:57
jtvThe person who requested the sync is not currently notified AFAICS.11:57
wgrantCorrect.11:58
wgrantUntil recently they were not stored anywhere.11:58
wgrantAnd even now they're barely stored.11:58
wgrantAt present there is probably nobody that you can sensible notify.11:58
wgrantsensibly11:58
jtvDon't tell me I have to look up the job.11:58
wgrantYou can potentially look at SPPH.creator, except when you can't.11:59
jtvIt's not that I mind not notifying anyone per se, it's just that it gets hard to ensure a durably meaningful test if I can only verify that somebody does not get notified.  It'd be much more robust if I could show "X gets notified but Y does not."11:59
jtvWhen can't I look at SPPH.creator?12:00
jtvOh argh, and who's to say I can find the SPPH?12:00
* jtv rummages12:00
wgrantRight, there's not always an SPPH :)12:02
wgrantBut there should be at least one normally.12:02
jtvThe unwanted recipient is injected in Upload.notify, and I don't think that has a corresponding SPPH handy.12:02
wgrantCertainly not at present, no.12:03
wgrantOften because there's no publication to notify about.12:03
wgranteg. if the upload is NEW12:03
wgrantor UNAPPROVED12:03
jtvActually that may just undermine our whole solution to this bug.12:05
jtvWe need the SPR's archive, and the archive that the build was to go into, and compare the two.12:06
jtvCan we get those?12:06
jtvThere's an Upload.archive, and an Archive.sourcepackagerelease.archive.12:07
wgrantI'm not sure that's the right thing to do.12:08
jtvI take it the two would indeed differ if the upload was for the binary build of a copied SPR?12:08
wgrantFor example, say I am a clueless user and upload a Debian package verbatim to my PPA.12:08
wgrantIt will have the Debian maintainer in Changed-By.12:08
wgrantThis is currently worked around by suppressing Changed-By notifications for PPAs.12:08
wgrantBut that's pretty terrible.12:09
jtvIn this particular problem domain, I would argue that with an error margin of ±3 or so, you are the only non-clueless user.12:09
wgrantHah.12:09
jtvI can see how the case you present here is related, but I don't see how the proposed change would affect it.12:09
jtvIf you upload a Debian package to your PPA, don't you get your own SPR?12:10
wgrantYou get your own SPR, yes.12:10
wgrantAnd the archive of the SPR and build will match.12:10
jtvBut the current PPA rule will apply.12:11
wgrantShould it?12:11
jtvWithout that, I think, the maintainer would only be emailed if the upload were unsigned.12:11
wgrantIt's from back in the days when Ubuntu was the only other thing that existed.12:11
wgrantThe idea probably has merit for everything.12:12
jtvCertainly sounds like it.  I tried to word it that way: uploads the maintainer is not responsible for.12:13
jtvIn what situation might there be no signer?12:13
jtvAhhh no, there's a bit of nastiness.12:14
wgrantassuming that "signer" includes "sync requester"... probably just autosyncs12:14
wgrantI would suggest just ignoring Changed-By and only ever using the signer.12:14
jtvWhy would the signer include the sync requester?12:14
wgrantBut that doesn't work for sponsored uploads.12:14
=== allenap changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: allenap | Firefighting: - | Critical bugtasks: 3*10^2
wgrantSigner and sync requester serve the same role.12:14
wgrantThey are the person to blame for putting the package in its current location.12:14
jtvThe signer isn't the person who signed the last change?12:16
bigjoolsjtv: if there's a job creator or signer, notify them (in that order). If neither, don't notify (although I can't think why we'd have neither).12:16
bigjoolssigner is the uploader12:16
bigjoolschanged-by is the person who signed the dsc, generally12:16
wgrantExcept in the case of sponsorship12:16
wgrantWhich is not uncommon12:16
bigjoolsright12:16
bigjoolswell, sponsorship is the uploader being different from the changed-by12:17
LaneyI thought sync sponsors weren't expressed in the SPPH yet12:17
jtvWe don't even necessarily have the SPPH in this case, apparently.12:18
Laneyyou can have a build failure without a SPPH?12:18
jtvIf I understand wgrant correctly.12:18
wgrantIt's unlikely but possible to not have a current source publication.12:18
wgrantAnd there may be multiple current source publications.12:18
jtvWhat about SPR?12:18
wgrantThere's always an SPR.12:19
wgrantBut that's not useful.12:19
bigjoolsif the build finishes before the SPPH is created12:19
bigjoolsbest place to look is the job12:19
wgrantThe build isn't created until after the SPPH.12:19
wgrantBut the SPPH can go away.12:19
bigjoolsyeah I meant PUBLISHED, thinko12:20
bigjoolswhy can it go away?12:20
wgrantIf the package is superseded or deleted.12:20
wgrantAlthough currently in that case we just crash.12:21
jtv#$%@ why do they have a guard in front of the building to tell me that my bike was still there around 6:30 and probably not around 7:30?12:21
wgrantWhen trying to accept the build.12:21
jtvWell this is for the rejection case anyway.12:21
jtvAlso, this being a binary build triggered by a source sync, will I be able to find a job?12:22
bigjoolsit doesn't go away, it changes state12:22
jtvWill I be able to find an exact match?12:23
=== almaisan-away is now known as al-maisan
jtvAlso, will I upset anyone if I redirect the notification stream at different users?12:24
bigjoolsI doubt it12:24
bigjoolsassuming you're talking about build failures12:24
bigjoolsI can't imagine why you can't get hold of the SPPH for the build and grab .creator12:25
bigjoolsif that's None then you need to find the signer on the source upload12:25
StevenKBah, buildbot failed again.12:26
jtvIt doesn't look like this code knows for sure that it's dealing with a build failure, actually.12:27
StevenKjtv: notify()?12:27
jtvAlthough… it's "action" must come from somewhere, right?12:28
jtvself.status12:28
jtvSo we do know whether it's a failure.12:28
jtvHow would I find the SPPH?12:30
bigjoolsjtv: look it up given the context on the build (archive, distroseries, source package, version)12:34
jtvAnd then take the latest of the matches, I guess.12:35
bigjoolsgetPublishedSources()12:35
jtvThis sounds like a change that we'd want to make for all statuses, not just failures.  Is that right?12:36
cjwatsonjtv: I agree with wgrant; it should only be the person who requested the sync.  There's a bug about them not being notified.12:37
jtvNot the signer?12:37
cjwatsonThe signer's the Debian maintainer, right?  Not them.12:37
jtvThat's what I thought, but now I'm not sure.12:38
cjwatsonImagine you're a Debian maintainer; you do not want to be notified about build failures of your package in each of the 17000 Debian derivatives.12:38
jtvThat's the bug I'm trying to solve now.  But what I was referring to was the part where the signer was supposed to be the Debian maintainer.12:39
cjwatsonWell, we don't re-sign syncs12:39
bigjoolsno, the signer is not the maintainer12:39
bigjoolsin soyuz-speak12:39
bigjoolsthe signer is the uploader12:39
cjwatsonOK, but either way12:39
bigjoolswe don't care who signs the dsc12:39
cjwatson(yes, you're right, but)12:40
cjwatsonIf I upload a package to Debian, I don't want to hear about build failures from derivatives, only from Debian.12:40
bigjoolsjtv: and no, this should apply just to failures12:40
jtvcjwatson: that's where we started.12:40
jtvThat's exactly what we're trying to solve here, which is difficult enough, but since we're in a hurry to stop the outflow of those messages we're bikeshedding a new notification regime into my last-minute branch.  :)12:41
jtvCome to think of it, maybe we shouldn't do that.12:41
jtvBut there are two reasons for adding these notifications.  Hold on to your seat; this may scare you.12:43
jtvOne is that it protects my test from quietly becoming meaningless: "X is notified but Y is not" is less susceptible to that than "Y is not notified."12:44
jtvThe other is that the maintainer specifically gets added to the recipients list if no blamer (in this case, the signer) is given.12:44
bigjoolswe don't need a new notification regime - build failure notifications are a separate code path to the upload ones12:44
jtvOh.  No, I got confused again.  The maintainer gets added if a blamer _is_ given.  Shoot me.12:44
jtvWell this is Upload.notify calling notify, is it not?12:45
bigjoolsit depends on whether it's an upload failure or a build failure12:45
jtvLooks to my untrained eyes like the problem case could be either.12:47
bigjoolsindeed - since we separated out uploading from the buildd-manager12:47
bigjoolswhich I suspect is the cause of this bug12:48
bigjoolsso it might be worth checking the BFN code12:48
bigjoolsand see how it compares to the failure-to-upload notification code12:48
jtvBFN... build failure notification?12:50
bigjoolsyes12:50
bigjoolssoyuz has a lot ofg acronyms :)12:50
bigjoolshttps://dev.launchpad.net/Soyuz/Glossary12:50
bigjoolsneeds adding12:50
jtvOFG, ironically, stands for Opportunity For Growth12:50
Laneyyeah, really /no/ mails should get sent to Debian about anything which happens in Ubuntu, and they should all be sent to the person responsible for the upload — failures to upload and so on too, not just build failures12:50
bigjoolssource uploads are fine, it's just the build uploads12:51
bigjoolsthankfully build upload failures are rarer12:51
jtvWhere is this BFN code you speak of?12:51
bigjoolsone sec12:51
Laneyindeed, was just suggesting being more general if possible12:52
bigjoolsjtv: lib/lp/soyuz/model/binarypackagebuild.py, see notify()12:52
bigjoolsLaney: I would love it if that were easy in the existing code :)12:52
Laney:-)12:52
jtv        if package_was_not_copied and config.builddmaster.notify_owner:12:54
jtv            if (self.archive.is_ppa and creator.inTeam(self.archive.owner)12:54
jtv                or12:54
jtv                not self.archive.is_ppa):12:54
cjwatsonI thought build upload failures were exactly what this bug got filed about12:54
cjwatsonIt certainly came up on debian-devel and I had to do some rapid preemptive damage limitation12:54
bigjoolscjwatson: it is12:54
cjwatsonhttp://lists.debian.org/debian-devel/2011/10/msg00469.html12:55
bigjoolsI am just pointing jtv at the BFN code because it works, and the uploader needs to do the same thing12:55
jtvThe condition I quited seems to be the only case where the BPB notify code cares about the details; apart from that, in non-PPA case, I think it just notifies the archive owner.12:55
jtvs/quited/quoted/12:55
jtvpackage_was_not_copied uses the same logic we proposed.12:57
jtvBut if the package was copied, and the archive is not a PPA, does anybody (apart from the archive owner) get notified at all?12:57
bigjoolsjtv: bloody hell, it's email buildd_admins!12:57
bigjoolsemailing*12:57
bigjoolsWTAF12:58
jtvOn the bright side: only if the archive is not a PPA.  How often does that happen?  :)12:58
bigjools...12:59
bigjoolsok so ignore *that* code :)12:59
bigjoolsbut you know what to do now I hope12:59
jtvGet drunk?12:59
bigjools\o/12:59
jtvSeriously, no, if it's not that then I don't.12:59
bigjoolsjtv: as I said above, look up the SPPH.  If there's no creator on it then look up the PackageUpload.signing_key user13:00
jtvThe latter is what's currently used.13:01
bigjoolsif neither are present, don't email13:01
bigjoolshmmm13:01
bigjoolssorry13:01
bigjoolsI can see where the confusion comes from then13:01
jtvThere is hope in what you say though:13:01
bigjoolswait - signing_key is right13:02
jtvnotify() is "clever" enough to ward off any attempt at change through parameter-passing.  If there's a case where we can just skip the call, we win.13:02
bigjoolsit comes from the key used to sign the changes file13:02
bigjoolsbut with syncs, it won't be there13:02
jtvUpload.signing_key.owner is currently the person notified.13:02
bigjoolsyeah, I suspect it's the changed-by for syncs13:03
bigjoolsanyway, just fix the sync case13:03
bigjoolsand all will be well13:03
jtvIf there's no signing_key for binary uploads resulting from syncs, then we're probably facing notify() finding an alternate victim.13:03
jtvThat would be the changer.13:04
bigjoolscorrect13:04
jtvHowever, if there _is_ a signing_key, it will target both the changer and the maintainer.13:04
bigjoolsbuilds don't have signers at all13:04
bigjoolsthe signing key is only on the source upload, if it was uploaded not synced13:05
jtvAnd of course notify() will pick on the changer either way.13:05
bigjoolsI think that all you need to do is detect that this is a sync and use SPPH.creator13:05
bigjoolsjob done13:05
jtvWon't there be a changer?13:06
bigjoolsignore everything else13:06
bigjoolsSPPH.creator for syncs is what you need13:06
jtvOkay, I'll shoot for that then.13:06
* jtv twiddles13:06
bigjoolsso use IArchive.getPublishedSources()13:06
bigjoolsunless some other code has easy access to the source's publication13:07
bigjoolsnot looked in there for ages13:07
Laneybigjools: this reminds me, do you have or want a bug for exposing sync sponsors in the spph?13:10
bigjoolsLaney: if there is not one already but I think you or someone already filed it13:11
LaneyI think I thought we were repurposing the old one for that13:11
bigjoolswe don't usually do that13:11
Laneyyes, but I was under the impression it was part of the UI fixes13:11
Laneyno worries13:12
bigjoolsmy memory sucks, I can't remember :)13:12
bigjoolsFTR it won't get looked at for a long time unless it gets escalated13:12
LaneyI have that impression of Launchpad bugs, yes :P13:13
bigjoolstoo many bugs, not enough devs :/13:13
Laneythere we go13:15
jtvbigjools: when looking for the SPPH, do I also need to match on component?  Of if I get multiple matches, do I prefer one with a matching component?13:15
jtvGrrr it would be nice if my mouse pointer came back at this point.13:16
cjwatsonLaney: ... or you could submit a branch to fix it - exposing new fields isn't too hard13:17
bigjoolsjtv: build._getLatestPublication() does what you want13:17
Laneycjwatson: That has crossed my mind :-)13:17
jtvbigjools: can I pick any build from Upload.builds?13:17
bigjoolsjtv: yes, they all come from the same source13:18
jtvAre there always builds?13:18
bigjoolsif you have a build upload, yes :)13:18
jtvAnd if not... I guess I revert to the old behaviour anyway.13:19
cjwatsonIs there a trick for debugging failing garbo jobs?  Something is throwing an exception and I just get SilentLaunchpadScriptFailure13:21
bacmatsubara: the deployment report seems to be inaccurate13:31
bacmatsubara: i have a branch merged as r14634 that hasn't been tagged13:32
matsubarabac, looking13:33
jtvbigjools: how do I attach the build(s) to my NascentUpload?13:45
matsubarabac, it seems to be correct. the last successful buildbot run was on r1462613:46
bacmatsubara: pebcak13:47
jtvbigjools: nm, I found a way.  Not one I'm proud of, but...13:51
jtvbigjools: running ec2 now, with fingers crossed.  I'm putting the branch up for review, and then I really have to leave.14:10
jtvbigjools: Care to review?  https://code.launchpad.net/~jtv/launchpad/bug-876594/+merge/8762414:17
allenapjam: Do you have some time to look at https://bugs.launchpad.net/launchpad/+bug/912287?14:34
_mup_Bug #912287: test_sigint_exits_cleanly breaks <spurious-test-failure> <Launchpad itself:Triaged> < https://launchpad.net/bugs/912287 >14:34
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: allenap, jcsackett | Firefighting: - | Critical bugtasks: 3*10^2
cjwatsonI could use a review of https://code.launchpad.net/~cjwatson/launchpad/gina-dsc-binaries/+merge/87632 if an OCR feels up to it.14:57
cjwatsonPlease think hard about the SQL since I'm a novice at that :-)14:58
allenapcjwatson: I'll have a look.15:03
=== matsubara is now known as matsubara-lunch
rick_h__adeuring: ping, I'm back if you want to run through that bug sometime15:39
adeuringrick_h__: ok, mumble?15:39
rick_h__sure thing15:40
rvbaallenap: jcsackett Could one of you guys have a look at this MP please? https://code.launchpad.net/~rvb/launchpad/builders-timeout-903827-2/+merge/8762015:43
allenaprvba: I'm doing another review at the mo, but I'll look when I'm done unless jcsackett gets to it first.15:44
rvbaCool.15:44
jcsackettirvba: i can take a look now.15:48
jcsacketter, rvba. :-P15:48
rvbajcsackett: thanks15:48
jcsackettrvba: looks like a good improvement. r=me.16:02
rvbata jcsackett.16:02
adeuringrick_h__:  #https://pastebin.canonical.com/57786/16:14
adeuringrick_h__: class TestMaloneView in lib/lp/bugs/browser/tests/test_bugs,py16:17
rick_h__adeuring: ah, thanks.16:17
adeuringrick_h__: regarding the sort bug on the page we were talking about: I noticed that the JS code does not issue any HTTP request when a sort button is clicked.16:31
rick_h__adeuring: ok cool, yea it might not be binding on that page since it's not loading the normal "bootstrap" code on that view16:32
adeuringrick_h__: ah, first step for a fix already!16:32
=== matsubara-lunch is now known as matsubara
=== salgado_ is now known as salgado
=== abentley__ is now known as abentley
deryckrick_h__, review is done finally.  r=me, with some minor formatting changes and one question.16:50
=== al-maisan is now known as almaisan-away
rick_h__deryck: saw that, thank you much. I'll update that16:59
deryckrick_h__, np!17:05
rick_h__adeuring: still around?17:46
adeuringrick_h__: yes17:46
rick_h__adeuring: I'm just not able to get a failing test and wondering if I'm just way off base.17:46
adeuringrick_h__: my guess would be that you did not enable the feature flag.17:47
rick_h__I did, I missed that at first17:47
rick_h__and now I get a nice giant json dump in my view.render() when I debug17:47
adeuringrick_h__: flags = {u"bugs.dynamic_bug_listings.enabled": u"true"}17:47
adeuringwith FeatureFixture(flags):17:47
adeuringview = create_initialized_view(...)17:48
rick_h__but what I can't make 100% sure is that my test view matches the url I'm testing for17:48
rick_h__adeuring: right http://paste.mitechie.com/show/488/17:48
rick_h__is what I'm working with to start a test out. The context and the view are the right kind of objects for the traceback (IMaloneApp, SimpleViewClass)17:48
rick_h__what's the way to check the view for the url? using view.request.getURL() just get's me 127.0.0.117:49
adeuringrick_h__: looks good. I think it is not strictly necessary to check the URL, but you can do that with a call of canonical_url()17:49
rick_h__adeuring: yea, I just wanted to sanity check that my html I'm getting is in fact for the route /bugs/+bugs17:50
rick_h__and not /bugs/something_not_failing17:50
adeuringrick_h__: ah, you need to call view.render() inside the "with"17:50
rick_h__oh? all the tests in test_bugtask didn't, and my render() result has the dynamic buglisting in it17:51
adeuringrick_h__: well, try it here, I'd bet that the test will pass when you call view.render() without the feature fla setting17:52
adeuringwell, that view.render() will fail without the fix for MaloneAPp17:52
rick_h__adeuring: yea, that threw the exception ok cool.17:53
adeuringrick_h__: great. The difference to the other tests may be that you can call assertSomething() outside the !with", but you must call the tested changes within the "with"17:55
* adeuring has to run to an evening meeting17:55
rick_h__adeuring: ok, I gotcha. THanks17:55
lifelessand good morning18:17
rick_h__party lifeless18:17
lifelessgary_poster: hey; you have some high, assigned and probably stale bugs. Can you confirm they are stale, or whatnot? https://bugs.launchpad.net/launchpad/+bug/578854 https://bugs.launchpad.net/launchpad/+bug/588401 so far18:18
_mup_Bug #578854: Confusing docs: doc/buildout.txt <lp-foundations> <Launchpad itself:Triaged by gary> < https://launchpad.net/bugs/578854 >18:18
=== deryck is now known as deryck[lunch]
lifelesshuh, we still have windmill tests in-tree18:27
lifelessI wonder if they are being run18:27
gary_posterlifeless, will look18:49
gary_posterin a few hours :-)18:49
gary_posteror maybe tomorrow18:49
lifelesssure; they are high, I am doing the review of high bugs :)18:50
lifelessflacoste: call?18:59
gary_posterlifeless, flacoste, btw, I intend to do our call in 1 hour on Google hangouts.  I'll invite you18:59
gary_posterthen18:59
lifelesscool... I'm robertcollins <> gmail.com, for google plus19:00
flacostegary_poster: fwiw, i wasn't able to get google hangout to work this morning with mrevell his invite never appeared for me19:01
lifelessusually spelt with a . actually, but google does address collapsing19:01
flacostegary_poster: i'm francis.lacoste@canonical.com19:01
gary_posterack flacoste and lifeless, hopefully it will work19:02
rick_h__abentley: ping, have a sec?19:03
abentleyrick_h__: sure;.19:03
rick_h__abentley: so the JS code on the bugs.lp.net/bugs/+bugs is bombing because there's no content in the LP.cache which seems to get set as part of the LaunchpadView automatically19:04
flacostelifeless: skype me19:04
rick_h__abentley: that context is used for the lp.client.load_model stuff to help generate the link and such19:04
rick_h__abentley: so debating on if there's something I can do in the getCacheJSON to get a context or if this is something that should be hacked around in this particular view to fake the context enough for lp.client?19:05
rick_h__sorry, /content/context19:05
rick_h__abentley: ^19:05
abentleyrick_h__: Ah.19:06
abentleySo this is a top-level page that you're using to search all bugs in Launchpad?19:06
rick_h__abentley: right19:07
abentleyrick_h__: I don't see it being a quick hack sort of thing.  I assumed our bug listings always had a context.  I'm not sure what violating that assumption does to it.19:10
rick_h__abentley: yea, that's where I was heading19:11
rick_h__abentley: I *think* the only bad side effect is that lp.client for getting the url of the ajax request19:11
rick_h__abentley: but definitely not willing to bet on it19:11
abentleyrick_h__: So what's actually oopsing here?19:11
rick_h__abentley: well the original oops was that BugsBugTask...View didn't implement macro_search_title19:12
rick_h__abentley: I've updated that and now that the page doesn't oops, the JS fails to run on any ajax interaction19:12
rick_h__abentley: so two different issues, oops is fixed, but the page overall still fails19:13
abentleyOkay.19:13
bachi jcsackett, could you look at https://code.launchpad.net/~bac/launchpad/904335-export-tags/+merge/8766419:17
abentleyrick_h__: I think it's valid for context to be null for Y.lp.client.load_model.  Does that give you enough?19:18
abentleyrick_h__: You'll have to update Y.lp.client.load_model to actually support that.19:18
abentleyrick_h__: The thing is, that page actually does have a context.19:19
abentleyrick_h__: It's just not one with a WS url.19:19
rick_h__abentley: ok, I'll run with testing the context as null and see how far I get19:20
abentleyrick_h__: So perhaps it's better to just change ListingNavigator.load_model to use a trimmed version of the current URL.19:21
rick_h__abentley: yea, that's what I wasn't sure if there was a better fix to getCacheJSON itself or not19:21
rick_h__abentley: ok, will check that out then19:22
abentleyrick_h__: I don't think getCacheJSON is the issue.  It doesn't provide the context, because there's no sane context to provide.  The page's actual context is something we don't provide in the web service, and probably shouldn't provide in the web service.19:22
rick_h__abentley: ok, that's what I was hoping you'd verify.19:23
abentleyrick_h__: cool.19:23
=== deryck[lunch] is now known as deryck
deryckabentley, rick_h__ -- I'm going to work on the open questions now, just so no one works over top of me.19:29
deryckabentley, rick_h__ and FYI, since it might take a while. ;)19:29
rick_h__deryck: understood, leave some breadcrumbs to get back out of there19:36
deryckheh, seriously.19:36
=== matsubara is now known as matsubara-afk
gary_posterflacoste, lifeless google hangout waiting for you20:00
flacostegary_poster: lifeless might be a little late, was grabbing food20:01
flacostegary_poster: where should I see your invite?20:01
flacostegary_poster: and are you using your canonical.com account?20:02
gary_posterflacoste, was using gmail account.  I sent two invitations to you just in case20:02
flacostehmm20:02
gary_posterflacoste search for me20:02
gary_posterit will say I'm in a hangout20:02
gary_posterclick on it20:02
flacostegary_poster: is it the yellow hangout?%20:03
lifelessI don't see an invite yet20:05
lifelessahha20:06
flacostelifeless: search for gary and join the yellow hangout20:07
lifelessyeah plugin is installing20:07
flacostelifeless: if you have found the invite, please tell me where?20:07
lifelessin the 'notifications' drop down from the black bar at the top of the screen20:07
rick_h__abentley: working on looking at best tests to add but can you peek at this and see if it's too hacky? https://code.launchpad.net/~rharding/launchpad/oops_912178/+merge/8767520:23
rick_h__abentley: doing that change *works* locally20:23
abentleyrick_h__: You shouldn't need to omit the +bugs if present.20:26
rick_h__abentley: ok, but the code that builds the url has that as part of it, sec let me get it20:27
rick_h__abentley: it's the "view_name" passed into load_model20:28
abentleyrick_h__: Right.  But the view name is only needed if you have a context.  Otherwise, it doesn't really make sense.20:28
rick_h__abentley: which lp.client.get_view_url uses20:28
rick_h__abentley: hmm, right, but I'm basically faking a context so that everything elses passes through. So I still use get_view_url to build the query params, the ++model++ and such20:29
abentleyrick_h__: Since we're using the URL to get this data some of the time, I recommend using the URL all of the time.20:30
abentleyrick_h__: and then you can strip all that out.20:30
rick_h__abentley: are we the only consumers of lp.client.load_model?20:30
abentleyrick_h__: No, I believe there's one other call site.20:31
abentleyrick_h__: lib/lp/translations/javascript/sourcepackage_sharing_details.js20:31
rick_h__abentley: ok, so if I change the load_model to use the url vs building it have to check it out over ther eas well20:32
abentleyrick_h__: Yes, or else you can make a new function that is a callee of load_model, and accepts a URL instead of context+view_name20:33
lifelessgary_poster: oh hai?20:57
gary_posterlifeless, yeah, trying to get back.  though maybe we should just say....20:57
gary_posterthank you lifeless flacoste bac benji gmb frankban !20:58
gary_posterbac, I'll be ready for our call as soon as I get back on20:58
lifelessgary_poster: thank you20:58
lifelessgary_poster: francis says next week, talk about success factors20:58
gary_postercool, sounds good20:58
abentleylifeless or gary_poster: I have a question about eager loading BugAttachments.20:59
lifelessgmb: You have a number of uhm assigned bugs, wondering if you could unassign or update them ?20:59
gmblifeless: sure thing. I'll do that before I sod off.21:00
lifelessabentley: I'm about to go on a call, but if you ask, I will try to answer as time permits21:00
* gary_poster is going on a call too, and will know less21:00
abentleylifeless: Okay.  In the current codebase, BugComment uses cached data from Message, but also has values from bugtask.bug.attachments_unpopulated inserted.  This eager loads the data.21:02
abentleylifeless: I'd like to change BugComment so that it delegates to its Message.  I had thought that since bugtask.bug.attachments_unpopulated still runs, it would eager load the data into the Storm cache.21:03
abentleylifeless: but in fact, there are extra queries.21:03
lifelesswhat are the extra queries ?21:05
abentleylifeless: http://pastebin.ubuntu.com/794224/21:05
abentleylifeless: They are per-Message BugAttachment lookups.21:06
abentleylifeless: Well, one is.  Another is a similar issue with message chunks.21:06
bacthanks for the review jcsackett21:08
lifelessabentley: ah, so IIRC bugcomment is an unusual class, its memory only; holds the calculated index21:08
lifelessabentley: is that right? and now the index is persisted, it can do away21:08
lifeless?21:08
lifelessmmm, possibly not the class I'm thinking of21:08
abentleylifeless: The first part, that it's memory-only, is substantially true.21:09
lifelessabentley: anyhow, you should have a backtrace of the thing triggering the extra query21:09
lifelesslast element of the timeline tuple21:09
abentleylifeless: I'm pretty sure I know what's triggering the extra query.21:09
lifelessabentley: ok; an attribute accesss?21:09
abentleyMessage.bugattachments.21:10
lifelessok21:10
lifelessso sqlmultiplejoins will always do queries21:11
lifelessthey are something we need to purge from the codebase, or at least stop using them21:11
lifelessthe workaround is to create a @cachedproperty property that can return the bugattachments, and inject the result into the messages from a decoratedresultset21:12
lifelessyou can replace the attributename - e.g.21:12
lifeless_bugattachments = SQLMultipleJoin(...)21:12
lifeless@cachedproperty21:12
lifelessdef bugattachments(...21:12
lifelessor you can add a new one and expose in the interface etc etc21:12
lifelessyou'll then need to make sure the code path instantiating the objects still does the queries you want and so forth21:13
abentleylifeless: So to make that work here, I think I'd need to inject the values into the cache in the code that uses bugtask.bug.attachments_unpopulated21:14
lifelesssounds plausible yes21:14
abentleylifeless: The cachedproperty definition would be something like "return list(self._bugattachments)" ?21:18
lifelessabentley: extactly21:38
abentleylifeless: How does this look? http://pastebin.ubuntu.com/794262/21:39
=== jcsackett|afk is now known as jcsackett_
flacostegary_poster, lifeless: https://dev.launchpad.net/Projects/ParallelTesting22:05
gary_posterthank you flacoste22:06
lifelessabentley: looking22:12
lifelessabentley: yes, thats the sort of thing22:13
abentleylifeless: thanks.22:14
=== jcsackett_ changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugtasks: 3*10^2
wgrantHmm22:46
wgrantI think bug #909318 may be bad22:47
wgrantHalf the sort options have gone missing on qastaging22:47
wgrantOh, nevermind.22:48
wgrantOnly the shown fields have sort buttons.22:48
wgrantStevenK: Is your private maintainer QA imminent, or should we deploy now?23:22

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!