/srv/irclogs.ubuntu.com/2011/02/25/#launchpad-dev.txt

LPCIBotProject devel build (473): STILL FAILING in 5 hr 24 min: https://hudson.wedontsleep.org/job/devel/473/00:05
LPCIBot* Launchpad Patch Queue Manager: [testfix][r=jml, leonardr][bug=251685,00:05
LPCIBot586695] An implementation of the Poppy FTP server using Twisted.00:05
LPCIBot* Launchpad Patch Queue Manager: [r=henninge][no-qa] Replace DistroSeries/SourcePackageName with00:05
LPCIBotSourcePackage in translationsharinginfo.00:05
LPCIBot* Launchpad Patch Queue Manager: [r=leonardr][ui=none][bug=721784][no-qa] [no-qa]00:05
LPCIBot[r=leonardr][bug=721784] Add ec2 list command to list running ec2 instances00:05
LPCIBotand test status00:05
wgrantAny other reviewers around?00:10
wgrantsinzui: ^^?00:10
lifelesssinzui: thanks, was otp00:11
lifelesswgrant: is that the right way around?00:12
lifelessshouldn't it be 'is not None' ?00:12
lifelesssinzui: trying it now00:13
wgrantlifeless: Yes.00:13
wgrantSo, then, why does it work.00:13
lifelesswgrant: because its not none so it leaves it installed00:14
lifelesswgrant: you're testing the external contract 'do not warn on this case' - but thats not comprehensive ;)00:15
lifelesssinzui: ><00:15
lifeless  File "/home/robertc/launchpad/lp-branches/working/lib/canonical/launchpad/browser/launchpad.py", line 283, in makeBreadcrumbForRequestedPage00:15
lifeless    if view.__name__ != default_view_name:00:15
lifelessAttributeError: 'Branch' object has no attribute '__name__'00:15
lifeless            request = make_fake_request(00:16
lifeless                'http://code.launchpad.dev/~%s/%s/%s/+index' % (branch.owner.name, product.name, branch.name),00:16
lifeless                    [branch.owner, product, branch])00:16
lifeless            view = create_initialized_view(branch, '+index', request=request, principal=branch.owner)00:16
lifeless            view.render()00:16
wgrantlifeless: Heh, what this shows is that the synchronizer can just be registered at startup.00:17
wgrantIt doesn't matter if it's removed any more, because with Storm there is only ever one.00:18
wgrantWill investigate later.00:18
lifelessyou're inverting the if for now ?00:19
wgrantYes.00:19
wgrantJust testing that it behaves properly in the app.00:19
wgrantIt does.00:20
wgrantlifeless: DOne.00:21
lifelessapproved00:23
wgrantThanks.00:24
lifelesssinzui: something really odd is going on here00:44
lifelessin pdb I get this:00:44
lifeless(Pdb) self00:45
lifeless<zope.browserpage.metaconfigure.SimpleViewClass from /home/robertc/launchpad/lp-branches/working/lib/lp/code/browser/../../app/templates/launchpad-hierarchy.pt object at 0x7879450>00:45
lifeless(Pdb) view00:45
lifeless<zope.browserpage.metaconfigure.SimpleViewClass from /home/robertc/launchpad/lp-branches/working/lib/lp/code/browser/../templates/branch-index.pt object at 0x2f409d0>00:45
lifelessbut in the test, the second is the branch /object/00:45
lifelessnot the view00:45
lifelessah00:47
lifelesssinzui:00:47
lifeless(Pdb) self.request.traversed_objects[4]00:47
lifeless<zope.browserpage.metaconfigure.SimpleViewClass from /home/robertc/launchpad/lp-branches/working/lib/lp/code/browser/../templates/branch-index.pt object at 0x402a9d0>00:47
lifelesssinzui: I think create_initialized_view should poke that in00:48
lifelessfingers crossed!01:00
lifelesssinzui: so I made it work, but its showing a query count of 19, which is implausibly small01:06
lifelesssinzui: http://pastebin.com/nB3ZSn2t for your reference, I'm going to use getUserBrowser now01:07
lifelesssinzui: getUserBrowser finds - Difference: queries do not match: 50 is >= 5301:11
lifelesswgrant: have you landed that webapp session cache preloading yet ?01:36
wgrantlifeless: It's in ec2.01:36
wgrantWindmill killed it last night.01:36
lifelessits new matcher time, baby01:37
wgrantOh?01:37
lifelessrewriting assert_milestone_page_query_count as a matcher for reuse01:38
wgrantExcellent.01:42
wgrant0 tests run in 3:51:18.052785, 0 failures, 0 errors01:45
wgrantAh, windmill.01:46
lifeless.,01:46
wgrantDie Windmill die.01:46
wgrantOK, I am going to lunch and then beat Windmill to death with a few ec2 instances.01:46
lifelesswgrant: are you cleaning up test_milestone in that change?02:04
lifelesslp:~lifeless/launchpad/bug-710685 if anyone is interested02:06
=== lifeless changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
wgrantlifeless: What needs cleaning up?02:25
lifelesswgrant: accomdations for the session issue02:25
lifelessI have a test in there that does a request to seed it02:25
wgrantAh.02:25
lifelessmay be others scattered around the code base02:25
wgrantI have two unexplained failures that *appear* to be fallout, but look fairly irrelevant, and only show up on ec2. I am sorting them out first.02:26
wgrant+opstats OOPSes unexpectedly :/02:26
wgrantBut this is in PageTestLayer...02:26
lifelesshttp://pastebin.com/f6xQ1J8L02:26
lifeless^- thats what writing scaling tests is down to now ;)02:26
lifeless+opstats - whats the oops ?02:26
wgrantNot sure yet.02:26
wgrantCannot reproduce locally.02:27
lifeless><02:27
lifelessit runs w/o a db02:27
wgrantBut it's slightly crazy, since PageTestLayer runs an appserver in a subprocess...02:27
wgrantAh, hm.02:27
james_w`do you not get the oops in the subunit stream now?02:27
wgrantTrue.02:27
wgrantjames_w`: Not this one :/02:27
james_w`damn02:27
wgrantIt's a doctest, which may be relevant.02:27
lifelessjames_w`: only if the generator is in the same process02:27
lifelesswgrant: this is xx-oops.txt ?02:28
wgrantlifeless: xx-opstats.txt02:28
lifelesswgrant: cause I saw an ec2 failure with it, but I made sure it passed locally before submitting02:28
lifelessbah, thats the one I meant02:28
wgrantAlso librarian.txt failed.02:28
lifelesswgrant: thats in-process FWIW, but its a doctest02:28
wgrantBut not on a second run.02:28
wgrantI guess I will run just those tests in devel on ec2.02:29
wgrantInterestingly they passed yesterday.02:30
wgrantAll I've changed since it loading bzr plugins.02:30
wgrantSo perhaps they are yet more wonderful spurious failures for me to crush this afternoon.02:30
* lifeless facepalms02:32
lifeless    @cachedproperty02:32
lifeless    def linked_bugs(self):02:32
lifeless        """Return a list of DecoratedBugs linked to the branch."""02:32
lifeless        bugs = self.context.linked_bugs02:32
lifeless        if self.context.is_series_branch:02:32
lifeless            bugs = [02:32
lifeless                bug for bug in bugs02:32
lifeless                if bug.bugtask.status in UNRESOLVED_BUGTASK_STATUSES]02:32
lifeless        return bugs02:32
wgrantHahahah02:32
wgrantThat's been done before.02:32
lifelessthere are two bugs here.02:32
wgrantNot cached if it's not a series branch, and lots of queries if it is.02:33
lifelessyes!02:33
lifelesswell, not -quite-02:33
lifelessbecause its a DecoratedBranch02:33
lifelesswhich needs to be unwound and pushed down02:33
wgrantutilities/ec2 list is great.02:34
lifelessyep, both cases scale poorly02:37
wgrantHeh02:37
wgrantlifeless: Nice Matcher.02:38
lifelesswgrant: thanks02:39
lifelessUI check02:42
lifelesscurrently the menu shows02:42
lifeless'Link to another bug report'02:42
lifelessor 'Link to a bug report'02:43
lifelessdepending on - you guessed it - a query02:43
wgrantNice.02:43
wgrantDrop it.02:43
lifelesswhich doesn't matches the is_series_branch change02:43
lifeless*check*02:43
lifelessso, its a) broken.02:43
wgrantb) pointless02:43
lifelessyeah.02:43
lifeless'Link a bug report' is how I'd like to phrase it02:43
wgrantYeah.02:43
james_w`The tags applied to this bug. Web service: The list of tags is whitespace delimited. Launchpadlib: The list of tags is represented as a sequence of strings.02:43
wgrantjames_w`: huwshimi has a branch for that.02:44
james_w`great02:44
wgrantAlso, you seem to have a parasite.02:44
* lifeless sobs02:45
lifelessisBugBadgeVisible02:45
wgrantHah.02:46
wgrantNice.02:46
lifelessnot when you conside rthat context is a decorated branch02:46
lifelesswhich means that this requires /all/ the bugs to evaluate02:46
lifelessregardless of what it claims02:46
=== james_w` is now known as james_w
lifelesshmm02:49
lifelessthe linked_bugs api call probably takes forever on these branches too02:49
lifelessbecause its not eager loading anything, it will do just-in-time permission checks for every bug02:50
lifeless*meep*02:51
lifelessrelated_bugs02:51
lifelessrepeatedly queries the target branch bug list for every bug in the source branch02:51
thumperthat kinda sucks02:51
thumperI'm sure that wasn't the intention :)02:52
lifelessI'm sure it wasn't either02:52
huwshimiwgrant: Just sending that off to land now :)02:52
thumpergiven that I wrote it :)02:52
wgranthuwshimi: Good luck with that...02:52
huwshimiwgrant: Is stuff still not working?02:52
lifelessits a symptom of us not having a persistence layer and data access being mixed with business logic as python code02:52
wgrantlifeless: Confirmed xx-opstats.txt occasionally shows up on devel... but only on ec2.02:52
wgranthuwshimi: ec2 land is still a bit broken.02:52
wgrantpqm-submitting the branch now.02:52
lifelesswgrant: I'd lke to see the error02:52
huwshimiwgrant: Should I just wait for Monday02:53
huwshimi?02:53
lifelessthumper: I know you spent a lot of time on this, its really tricky with the tools we /had/ and still pretty darn tricky02:53
lifelessthumper: https://bugs.launchpad.net/launchpad/+bug/710685 is the bug I'm chasing02:53
_mup_Bug #710685: Branch:+index timeouts - 3 queries triggered per linked bug <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/710685 >02:53
wgranthuwshimi: 40 minutes should do it.02:53
huwshimiwgrant: Oh awesome02:54
* thumper sighs02:54
wgrantlifeless: Forwarded.02:54
lifelessthumper: http://pastebin.com/uf0FCV1G is my work in progress - currently that test shows 58 new queries in the second assert - for both the series and nonseries case.02:54
wgrantlifeless: That's plain devel except for my fixed ec2test-remote.py02:54
wgrantCan't reproduce the librarian failure anyway, but it only showed up in one of the three runs.02:55
huwshimiwgrant: I assume these errors are related to those issues? http://paste.ubuntu.com/572017/02:55
wgrantSo it's probably old and spurious too.02:55
lifelessthe good news is we squashed nearly 200 timeouts since last week02:55
huwshimiwgrant: From another branch02:55
lifeless600 overnight vs 80002:55
wgranthuwshimi: That's fixed now.02:55
lifelesswgrant: your mua sucks02:55
wgrantlifeless: Oh?02:55
lifelesswgrant: I got a .eml attachment with base64 encoded internal structure + headers02:56
wgrantlifeless: I use Thunderbird on my desktop and Evolution on my laptop, and they both suck.02:56
huwshimiwgrant: Is that just related to landing the branch? As in, can I just manually land that branch or do I need to resubmit for testing?02:56
wgranthuwshimi: I'd lp-land that.02:56
wgrantNo point retesting.02:57
huwshimiwgrant: Great, thanks.02:57
wgrantThe fact that the original change got through in the first place shows that there are no tests.02:57
wgrantbuildbot approaches the moment of truth...02:58
wgrantIt is past it!02:58
wgrantWindmill did not blow up!02:59
wgrantlifeless: Were you able to read the attachment?03:00
wgrantOr shall I forward with Evo instead?03:00
wgrantAnd add Thunderbird to my list of things to eliminate after Windmill and xx-opstats.txt03:01
StevenKHmmm. Can someone try to click the diff link on https://code.launchpad.net/~wgrant/launchpad/secret-query-count-determinism and then try and close the diff popup?03:02
thumperanyone seeing ec2 errors on xx-opstats.txt ?03:03
StevenKI thought wgrant just mentioned that03:03
lifelesswgrant: not without more futzing than I have mental space for right now03:03
StevenK[13:52] < wgrant> lifeless: Confirmed xx-opstats.txt occasionally shows up on devel... but only on ec2.03:04
wgrantStevenK: Yes, broken here too.03:04
wgrantthumper: When did you first see that.03:04
wgrantStevenK: (the diff popup, that is)03:04
StevenKwgrant: Excellent. Let me file a bug03:04
thumpernow03:04
thumperwell, on the ec2 run that just finished03:04
wgrantthumper: Which rev of devel?03:04
thumperworks locally now though03:04
* thumper checks the email03:04
wgrantthumper: It always works locally.03:04
thumperr1245703:04
wgrantBut fails around half the time on ec2.03:05
wgrantThanks.03:05
thumperhalf?03:05
wallyworldanyone want to claim a review? https://code.launchpad.net/~wallyworld/launchpad/recipe-request-build-partial-success/+merge/5087303:05
lifelessthumper: hi03:05
lifelessthumper: question for you about linked bugs03:05
lifelessthumper: which bugtask do we /intend/ to show ?03:05
thumperlifeless: shoot03:05
thumperlifeless: it should be the bugtask relating to the target of the branch03:05
lifelesstal:define="bugtask bug/bugtask03:06
thumpersometimes it is linked to a bug that doesn't have a task for that03:06
lifelessis the lookup03:06
thumperin which case, we get the first03:06
lifelessI can't find a bugtask attribute on bug03:06
thumperis it on the annotated bug?03:06
lifelessah03:06
lifelessDecoratedBug03:07
lifelessright03:07
lifelessis branch.target the context of the branch03:07
lifelesse.g. the product/sourcepackage ?03:07
thumperit is a BranchTarget object03:08
wgrantlifeless: Can I blame you?03:08
wgrantI think I might.03:08
lifelessthumper: I'm sure you considered this, but what about linking to bugtask ? It would push this complexity to where we add links, but we wouldn't pay it after03:08
lifelesswgrant: it might be me03:08
lifelesswgrant: pastebin it03:09
wgrantlifeless: I'm thinking that your profiling stuff is suspicious.03:09
wgrantBut I still can't repro locally.03:09
thumperlifeless: it was considered but just not done, we could also link revisions as fixes03:09
wgrantlifeless: http://paste.ubuntu.com/572027/03:10
StevenKEw, doctest diffs03:11
wgrantI guess I will add some getLastOops stuff to it and rerun.03:12
wgrantBecause it does not want to happen locally.03:12
wgrantHas anyone seen it before r12457?03:12
wgrantConfirmed.03:13
wgrant+opstats OOPSes on launchpad.dev03:13
lifelessits throwing a 50303:13
wgrantHm, not 500?03:14
lifelesswgrant: thanks for finding and digging03:14
lifeless+ 503s:1@129860316103:14
lifeless+ 5XXs:1@129860316103:14
wgrantOh.03:14
lifelessand there is one error higher up03:14
wgrant+opstats explodes when you are authenticated regardless.03:14
lifelessyes03:14
wgrant503... it times out?03:14
wgrantlifeless: Can you check how many BugSubscriptionFilters staging and qastaging have?03:30
wgrantWe added them manually on production, so I think they may be missing on the stagings.03:30
wgrantWhich would explain the quick query.03:30
wgrantThe plan suggests that there are very fwe.03:31
lifeless403:33
wgrantHah.03:33
wgrantSo the plan is completely invalid.03:33
wgrantThat would do it.03:33
lifelesshow many filters does prod have?03:40
lifelesswgrant: ^ ballpark03:41
wgrantlifeless: SELECT COUNT(*) StructuralSubscription03:41
wgrantIt has one for every strucsub.03:41
lifelesswgrant: that was the conversion thing ?03:41
lifelessso, unknown number. did you happen to see the actual row count inserted ?03:42
wgrantlifeless: Yes, we added a no-op filter for every subscription.03:42
wgrantYes.03:42
lifeless[yes unknown?]03:42
wgrantINSERT 0 2405603:42
wgrantlifeless: I have a traceback for you.03:46
wgranthttp://paste.ubuntu.com/572033/03:46
wgrantIt is *timing out* in the flag check.03:46
wgrantAh.03:48
wgrantI see.03:48
wgrantThe tests override the timeouts.03:48
wgrantThis wasn't a problem before because there was no DB access.03:48
wgrantBut now it checks the timeout before it can raise a DisallowedStore.03:49
wgrantImpressive.03:49
lifelessthe flag layer checks the timeout03:51
lifelessbecause if you just query and get timed out by the db - in other tests - you end up with a doomed transaction03:51
lifelesswhich is a world of pain when that happens *in the error handler*03:52
wgrantAh, right.03:52
lifelesshowever03:52
wgrantHave you filed a bug, or shall I?03:52
lifelessits passing that (not timed out), then doing the query, and is slow enough it has then timed out03:52
lifelesswgrant: if you would03:53
lifelessthat would be great03:53
wgrantlifeless: But there should be a DisallowedStore in there somewhere, right?03:53
wgrantBefore it gets to the query.03:53
lifelessI would have expected that, yes.03:55
lifelessexcept03:55
lifelessuhm03:55
lifelessit probably hasn't traversed to +opstts yet03:55
lifeless*+opstats* yet.03:55
wgrantHa ha ha.03:56
wgrantNice.03:56
wgrantBug #72471803:56
_mup_Bug #724718: xx-opstats.txt failing occasionally <spurious-test-failure> <Launchpad itself:Triaged> < https://launchpad.net/bugs/724718 >03:56
lifelessthose tests are basically bong03:59
wgrantAlmost all of our tests are basically bong.03:59
lifelessevery time I change instrumentation gathering, or things like features, I meet them again.03:59
lifelesswgrant: uhm, it may be we need to patch into zope publication more and switch to a 'straight after traversal before callObject' point04:06
lifelesswgrant: and/or call out from right after the dbpolicy is installed04:06
lifelesswhich would be a shame, because traversal is nonfree04:06
wgrantYes :(04:06
wgrantAnyway, sounds like we may want to roll it back, or possibly just mangle the test a bit.04:07
wgrantlifeless: +1 on your structuralsubscription suggestion.04:08
lifelesswgrant: do what you think best; I think pushing the timeout up -just a little- will probably make it reliable04:08
lifelessthumper: so whats the branch target for a junk branch? I'm very confused about the difference between a branch target and a bugtask target04:09
thumperlifeless: it is a PersonTarget04:09
wgrantlifeless: It looks like the timeout-causing views will adapt themselves to the configured timeout values.04:09
thumperlifeless: BranchTaget objects are found in lp.code.model.branchtarget04:10
wgrantWhich is handy, albeit in a "I think I'm going to be sick" way.04:10
lifelessthumper: interesting thing04:11
lifelessthumper: linked bugs show *no* bugtask if the task is on a different context04:12
lifelessthumper: so I can just push that down to the bug search04:12
thumperlifeless: that seems wrong...04:12
lifelesslib/lp/code/browser/decorations.py04:12
lifelessthe bugtask property returns04:12
lifelessthe result of getBugTask04:13
lifelesswhich looks for an exact match and on failure returns None04:13
lifelesswhich is excellent, I can push this all down to the db04:14
lifelessrefactor to return tasks not bugs04:14
lifeless\o/04:14
wgrantlifeless: OTOH I can fix this permanently by popping the config before requesting +opstats04:15
wgrantI might do that.04:15
lifelesswgrant: \o/04:15
lifelesslets see how badly I've broken this04:20
lifelessthumper: ah, I see what its doing; I will preserve it. Some epic confusion is possible here ;)04:24
* wgrant narrows eyes at Windmill.04:26
wgrant--layer=WindmillLayer has passed 5 times on ec2 so far.04:27
wgrantBad Windmill.04:27
wgrantlifeless: https://code.launchpad.net/~wgrant/launchpad/bump-opstats-test-timeouts/+merge/5124904:28
thumperwgrant: passed or failed?04:29
wgrantthumper: passed.04:30
wgrantthumper: I want it to fail so I can minimise the problem from "the whole test suite"04:30
wgrantBecause it's much quicker to run WindmillLayer than everything.04:30
wgrantIn fact it takes only 46 minutes.04:31
wgrantlifeless: Thanks.04:31
thumperwgrant: comments welcome https://code.launchpad.net/~thumper/launchpad/inline-recipe-name-edit/+merge/5124804:32
* thumper lands self reviewed branch04:34
thumperhttps://code.launchpad.net/~thumper/launchpad/recipe-heading-overlap/+merge/51250 in case anyone cares...04:35
thumperfixes bug 72113404:35
_mup_Bug #721134: Description and Recipe Text heading overlap when logged out <recipe> <regression> <ui> <Launchpad itself:In Progress by thumper> < https://launchpad.net/bugs/721134 >04:35
* thumper EODs04:37
thumperI'll check in later on ec2 test runs04:37
wgrantlifeless: It has the usual line editor glitches, but apart from that looks great.04:38
wgrantEr.04:38
wgrantthumper: ^^04:38
lifelesswgrant: what does ?04:38
thumperwgrant: what line editor glitches?04:39
wgrantthumper: Clicking the edit link next to the name shifts the whole page down slightly.04:39
thumperwgrant: file a bug and I'll fix it04:39
thumperwgrant: I did fix the multi-line editor 1px down-shift04:39
thumperwgrant: that it got on hover04:40
thumperwgrant: those are the sort of bugs that most people never notice, but once you have, it annoys the shit out of you04:40
wgrantthumper: The single-line editor one is really obvious.04:40
wgrantHave you seen it?04:41
thumperwgrant: not focused on it04:41
wgrantthumper: lazr-js or launchpad?04:42
thumperwgrant: both?04:42
thumperI fixed the multiline in lazr-js04:43
wgrantthumper: Bug #72472704:45
_mup_Bug #724727: Single-line inline editor causes page to shift when editing <javascript> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/724727 >04:45
thumperwgrant: ta04:45
* StevenK peers at dogfood04:51
wgrantStevenK: Oh, are you doing stuff to it?04:51
wgrantI am testing the trio of poppys.04:52
StevenKKeyError: 'request_daily_build'<br />04:52
wgrantStevenK: New templates, old code?04:52
wgrantWell, what is the full traceback?04:52
StevenKCould be. Unsure04:52
StevenKwgrant: Let me dig up the OOPS04:53
wgrantStevenK: Shall I restart the appserver?04:53
StevenKwgrant: 17471.DF5 in the usual place04:53
wgrantJa, needs appserver restart.04:54
* wgrant restarts the appserver.04:54
StevenKwgrant: I'm worried that Julian is no longer testing Zope's poppy04:55
wgrantStevenK: I just did.04:56
wgrantStill works.04:56
StevenKwgrant: Er, sorry. That due to his changes the testsuite no longer is.04:56
wgrantAh/04:56
wgrantMaybe.04:56
StevenKHas the appserver restarted?04:56
wgrantNo.04:57
wgrantStill building the WADL so it can stop.04:57
StevenKFail04:57
wgrantIs down.04:58
wgrantComing back up.04:58
StevenKYes, he no longer is.04:58
wgrant:(04:58
lifeless\o/ down to one bugtask query04:59
lifeless2 related lookups to squash05:00
StevenKwgrant: I'm not sure when Julian plans to kill the Zope FTP server, though, so it could be a non-issue05:00
StevenKwgrant: I take it by the lack of make processes, the appserver is back?05:01
wgrantStevenK: It should be.05:02
wgrantI cannot auth to poppy-sftp, though :(05:02
wgrantHm.05:02
wgrantAppserver did not come back up.05:02
wgrantDid Julian pull db-devel?05:02
wgrantProbably.05:02
wgrantwut05:02
StevenKwgrant: That reminds me. When I was in Adelaide there was one wireless network in range of where I was staying. The ESSID was 'lolwut'05:03
StevenKwgrant: Usually when the appserver fails like this, dogfood-nohup.out fills with tracebacks05:04
wgrantStevenK: It did.05:05
wgrantThe 'wut' was at a very strange error.05:05
wgrantBut I was looking in development-nohup.out instead.05:05
wgrantdogfood-nohup.out has the usual patch failure.05:05
wgrantFaking it now...05:05
wgrantStevenK: We're back.05:09
lifelesslp:~lifeless/launchpad/bug-710685 handles products properly now, still have productseries and distroseries to capture05:10
StevenKwgrant: Confirmed, thanks.05:10
huwshimiwgrant: Any luck with ec2 land or still working on it?05:13
StevenKhuwshimi: The fix landed, merge devel05:13
huwshimiStevenK: Awesome thanks.05:14
* StevenK grumbles at the lack of logtailing on dogfood buildds05:15
wgrantAh, poppy-sftp works better when it's not using the former production xmlrpc server.05:16
wgrantStevenK: Do it manually.05:16
StevenKHeh, former production?05:16
StevenKwgrant: I don't know how :-(05:16
wgrantStevenK: It was still using xmlrpc.lp.internal:8097, which died a couple of months ago.05:16
wgrantStevenK: import xmlrpclib; xmlrpclib.ServerProxy('http://something.buildd:8221/rpc').status()05:17
StevenKWhich says IDLE05:19
wgrantThat would suggest idleness.05:19
StevenKClearly, but the build page itself and /builders disagrees.05:20
StevenKNow it says building. WTF05:20
wgrantCould have been resuming.05:21
wgrantOr just being shit.05:22
StevenKI did say karmic, it could have been digging out a chroot tarball05:22
wgrantIndeed.05:22
wgrantStevenK: I am done with mawson.05:25
wgrantall three poppys work!05:25
LPCIBotProject devel build (474): STILL FAILING in 5 hr 20 min: https://hudson.wedontsleep.org/job/devel/474/05:25
LPCIBot* Launchpad Patch Queue Manager: [testfix][r=jml][no-qa] Fix test failures in05:25
LPCIBotdevscripts.ec2test.tests.test_remote05:25
LPCIBot* Launchpad Patch Queue Manager: [r=lifeless][no-qa] Allow overriding the profiling_allowed config05:25
LPCIBotentry via a feature flag.05:25
LPCIBot* Launchpad Patch Queue Manager: [r=jtv][no-qa] Work around Storm ClassAlias bug more cleanly.05:25
StevenKwgrant: As am I. Incidently, you'll get some mail.05:25
wgrantWhich mail?05:26
wgrantI got two more disappointing ec2 successes.05:26
wgrantBut is there anything else?05:27
StevenKI changed some bug statues05:27
StevenK*statuses05:27
wgrant:( short months make me sad.05:28
StevenKwgrant: Oh?05:29
StevenKwgrant: Based on your experience do you think bug 579870 can be nailed shut?05:30
_mup_Bug #579870: Packages built from daily builds say 'No signer' <lp-soyuz> <recipe> <Launchpad itself:Triaged> < https://launchpad.net/bugs/579870 >05:30
wgrantStevenK: Yes, it's fixed.05:30
wgrantStevenK: Less time to fix bugs.05:30
wgrantThe milestone is looking rather sad, yet we are a week from release.05:30
StevenKwallyworld: O hai?05:31
wallyworldStevenK: de ho05:32
StevenKwallyworld: We were going to add a button "Build right now" to daily built recipes, were you working on that?05:33
wgrantIt's done.05:34
wgrantWill be deployed in 4 hours.05:34
StevenKAh, what's the bug number, I haz dupe05:34
* wallyworld looks05:34
wgrantbug 68762305:34
_mup_Bug #687623: No ability to manually trigger a build 'like the daily build system' <lp-code> <qa-ok> <recipe> <Launchpad itself:Fix Committed by wallyworld> < https://launchpad.net/bugs/687623 >05:34
* wallyworld unlooks05:35
StevenKSo marked, thanks05:35
StevenK3 bugs knocked off05:35
wallyworldthere's also some enhancements to that stuff waiting for review https://code.launchpad.net/~wallyworld/launchpad/recipe-request-build-partial-success/+merge/5087305:35
wgrantwallyworld: I also filed bug 724679 earlier.05:37
_mup_Bug #724679: Not obvious why "Build now" button is missing <recipe> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/724679 >05:37
wallyworldwgrant: you reall think that's a bug?05:38
wallyworldpbkbac05:38
wallyworld:-P05:38
wgrantwallyworld: It had me confused for a while.05:38
wallyworldwgrant: i'm not sure what we can do about it though05:38
wgrantwallyworld: Problem Between Keyboard And Blood Alcohol Content?05:38
wallyworldwgrant: you should know by now i can't type :-)05:39
StevenKlifeless: What you want to do with bug 721460?05:40
_mup_Bug #721460: Cannot use 'lp:bzr' as a branch in a recipe <recipe> <Launchpad itself:Incomplete> < https://launchpad.net/bugs/721460 >05:40
StevenKwgrant: Thoughts on bug 515918?05:41
_mup_Bug #515918: package_name and suite not passed to dailydeb <lp-soyuz> <recipe> <Launchpad itself:Triaged> < https://launchpad.net/bugs/515918 >05:41
wgrantwallyworld: I put some concrete suggestions in the bug... do you have any thoughts?05:42
* wallyworld looks at the bug05:42
wgrantStevenK: I'm not sure.05:43
wgrantStevenK: That needs testing.05:43
wallyworldwgrant: it's not quite that simple. there are other reasons why the build now link won't show, besides the recipe being stale05:44
wallyworldwgrant: eg if the user doesn't have upload permissions to the archive05:44
wgrantwallyworld: Right, but one of those already has a warning at the top of the page.05:44
wgrantAnd the other is a bug.05:44
wallyworldhmmmm. if you can convince thumper to assign it to me, i'll do it :-) he had some definite ideas about how he wanted that to work05:45
wgrantI only know of two other cases it won't show:05:45
wgrant 1) No permissions, for which there is already a big warning at the top of the page.05:46
wgrant 2) Not a daily build, for which we should show the link.05:46
wgrantBecause that's still useful even for non-daily builds.05:46
wgranteg. when updating stuff in the ~launchpad PPA... we don't want daily builds, but a single-click build request would be wonderful.05:47
wgrantIn fact, you are more likely to want the "Build now" button if you are not a daily build.05:47
wallyworldthere's already a "request builds" link for adhoc builds05:47
wgrantBut that is a more complex issue than merely presenting it better for daily builds.05:47
wgrantwallyworld: Right, but these aren't ad-hoc builds.05:47
wallyworldthe daily "Build now" link has a specific purpose05:47
StevenKwgrant: http://pastebin.ubuntu.com/572056/ from Hudson05:47
wgrantwallyworld: Right, and I want that purpose.05:48
wallyworldand you get it, no? but not if the recipe isn't stale05:48
wallyworldwhich is what the requirement stated05:48
wgrantStevenK: Which revs is that?05:48
wallyworldso for the case "when updating stuff in the ~launchpad PPA,....", you wouls just use the "Request Builds" link?05:49
StevenKwgrant: r1245805:49
wgrantwallyworld: But it's already preconfigured.05:49
wgrantStevenK: Are you sure?05:49
wgrantThat could have plausibly been introduced by r1246005:49
StevenKwgrant: Er, a little05:50
wgrantBut it passes here.05:50
wallyworldwgrant: by "it's", you mean the "Build now" link is already configured to do the same thing as a daily build would if it were to run?05:50
wgrantwallyworld: The ~launchpad recipes want the same functionality as a daily build, except on request.05:51
LPCIBotProject devel build (475): ABORTED in 25 min: https://hudson.wedontsleep.org/job/devel/475/05:51
LPCIBot* Launchpad Patch Queue Manager: [r=allenap][no-qa] Implement splitting Package/Product translations05:51
LPCIBot* Launchpad Patch Queue Manager: [r=thumper][bug=724004][no-qa][incr] Rename LP.client.cache and05:51
LPCIBotLP.client.links to LP.cache and LP.links in preparation of05:51
LPCIBotLP.client becoming a YUI module.05:51
LPCIBot* Launchpad Patch Queue Manager: [r=mbp,05:51
LPCIBotwgrant][ui=sinzui][bug=591274] Modified the bug tag field width so05:51
LPCIBotthat it is a more appropriate length for the content.05:51
LPCIBot* Launchpad Patch Queue Manager: [r=jml][bug=724039, 724232][no-qa] Prepopulate the cookie secret cache,05:51
LPCIBotpreventing tests from seeing an extra query when they are the first05:51
LPCIBotin a layer. Also unbreak ec2 land and silence the import fascist.05:51
LPCIBot* Launchpad Patch Queue Manager: [r=lifeless][bug=724522] Make clear_request_started() work when05:51
LPCIBotcalled twice in a row, unbreaking request retrying.05:51
LPCIBot* Launchpad Patch Queue Manager: [r=leonardr][bug=712329,05:51
LPCIBot712331] Add extra recipe methods to the web service.05:51
wgrantwallyworld: Daily builds get to build daily, but they also now get this nice single-click button to do everything.05:51
StevenKSorry for the spam, I'm upgrading to Jenkins05:51
wallyworldwgrant: and you get that but not if the recipe isn't stale :-)05:51
wallyworldwgrant: so your issue is you want to request a daily build even if the recipe isn;t stale?05:51
wgrantwallyworld: Even if it's not configured to build daily?05:52
wallyworldah, so when it's configured as " build on request", you want to trigger the build_daily() method05:53
wallyworld?05:53
wgrantwallyworld: Yes.05:53
wallyworldthat's confusing perhaps?05:53
wgrantThe name is confusing, but the action is not.05:53
wgrantI guess I don't understand why only daily builds get the one-click functionality.05:53
wallyworldso the problem scope is larger then since the naming of the boolean choices for "build daily/build on request" would need rework etc05:54
wgrantRight.05:54
wgrantThat's why I separated it from the daily build status issue.05:54
wgrantMostly.05:54
wallyworldwgrant: i only came to recipes late so haven't got all the history of the requirements discussions etc05:54
wallyworldso i can't really tell you for sure why certain decisions were made05:55
wallyworldi can follow up with thumper05:55
wgrantI was only really involved in the backend stuff, not the later frontend development :(05:55
wallyworldsure, but here we're talking about the semantics of a recipe attribute05:56
thumperwgrant: it is my suggestion, but I'm about to take the girls out to watch the rugby05:57
wgrantthumper: What is your suggestion?05:57
lifelessStevenK: I think its invalid05:58
wgrantWon't Fix, if anything.05:58
wgrantIt is very valid.05:58
lifelessStevenK: its definitely confusing on qastaging05:58
* StevenK waits for aptitude06:00
StevenKSigh, the jenkins package conflicts with hudson06:00
StevenKThis is not convincing me of a pain-free upgrade process06:01
StevenKwgrant: You know, I think that rabbitmq install error is due to DEBCONF_FRONTEND=noninteractive06:18
wgrantStevenK: That rabbitmq install error?06:18
StevenKwgrant: When Jenkins installs rabbitmq on a slave it errors06:19
lifeless:(06:19
wgrantAh.06:19
lifelessStevenK: I have a branch using rabbit06:19
lifelessso thats probably important to fix ;)06:19
wgrantlifeless: It's not quite that easy to get rid of the buildd secret, sadly.06:19
wgrantlifeless: apt still needs it.06:19
wgrantEven if lp-buildd does not.06:19
lifelesswgrant: theres an alternative anyhow.06:20
huwshimiHave a nice friday everyone06:20
lifelesswgrant: add and subscriber 'buildd' to all private ppas06:20
wgrantNight huwshimi.06:20
wgrantlifeless: Yeah.06:20
wgrantlifeless: Do we have to use config-manager in PQM?06:21
wgrantCan't we just use the precommit hook to pull download-cache?"06:21
wgrantWithout c-m it doesn't have to redownload the whole tree.06:21
StevenKlifeless: It actually drops files on disk, the postinst fails06:21
wgrantAnd it takes about 10 seconds instead of 20 minutes.06:21
lifelesswgrant: yes06:22
StevenKAnd I think it's because of noninteractive06:22
lifelesswgrant: why wouldn't it need the whole tree?06:22
wgrantlifeless: It already has the whole tree.06:22
wgrantlifeless: eg. look at shipit merges.06:22
lifelesswgrant: after the rm -rf  ?06:22
wgrantlifeless: Why would it rm -rf?06:22
lifelessbecause it doesn't trust the build before06:22
lifelessit might have been hostile06:23
wgrantshipit merges have most of the history, and take like 2 minutes.06:23
wgrantAh, not 2 minutes, 25 seconds!06:23
wgrant25 second PQM!06:23
lifelessconfig-manager can do a lightweight checkout06:24
lifelessthe thing thats slow is grabbing the whole history because *make check* uses bzr operations06:25
lifelessfix *that* and we can switch to lightweight checkouts06:25
wgrant        [ `PYTHONPATH= bzr status -S database/schema/ | \06:26
wgrant                grep -v "\(^P\|pending\|security.cfg\|Makefile\|unautovacuumable\|_pythonpath.py\)" | wc -l` -eq 0 ]06:26
wgrantThat's the only bzr operation I can see.06:26
lifelessright06:26
lifelessit opens the tree06:26
lifelessthe tree opens the branch06:26
lifelessthe branch opens the repo06:26
wgrantAnd the lightweight checkout works.06:26
lifelessit wants the pending head revision to show the last commit06:26
lifelesswgrant: not once you chroot06:26
lifelesswgrant: the ssh key for lp being outside the chroot06:27
lifeless(and likewise the local disk copy in ~/archives/rocketfuel being outside the chroot)06:27
wgrantlifeless: :(06:27
spivlifeless: I'm late to this discussion, and have to hit the road in a sec, but stacked commit would help there.06:27
wgrantlifeless: We could still make it approximately lots of times faster by just cping the tree across...06:27
lifelesswgrant: except we don't start from a known good treee and we don't have any operation to give us one reliably.06:28
StevenKBut the local disk might be hostile!06:28
wgrantlifeless: Hm? The on-disk copy is good.06:28
lifelessspiv: stacked branches still open the parent06:28
lifelesswgrant: I thought you meant the build tree06:28
wgrantlifeless: If PQM's checkout outside the chroot is fucked, we are all fucked.06:28
spivHmm, even for 'bzr status'?  That might be fixable.06:28
lifelesswgrant: because we're not lightweighting it, *all* of sourcecode is copied.06:28
wgrantlifeless: Right. And if we can't lightweight it, then we should just cp -a the tree into the chroot.06:28
lifelessspiv: mixed blessing to change that06:29
wgrantThen we can stop running buildout.06:29
wgrantAnd have 30s PQM.06:29
lifelesswgrant: its more complex than that; its in a shared repo06:29
wgrantlifeless: That can be fixed.06:29
wgrantOr the shared repo can be copied.06:29
lifelesswgrant: and we don't want information leakage of embargoed revisions if someone gets smart06:29
lifelesswgrant: its really a lot simpler to stop calling into bzr06:29
wgrantlifeless: You know...06:30
wgrantWe don't need to chroot, really.06:30
wgrantWe don't need buildout.06:30
wgrantWe don't need to run any code from the tree.06:30
wgrantWe just need to run bzr st, check that no DB stuff is modified, and grep for conflict markers.06:30
wgrantThat's all check_merge does now.06:30
lifelessso06:31
lifelesschange pqm06:31
lifelessit does all of that except the db check06:31
wgrantJust need to change the config, even.06:31
lifelessadd a feature to exclude changes to a subtree, add that to the config for devel, done.06:31
wgrantWe could just add the grep to the precommit hook.06:31
wgrantIt's sitting in Makefile at the moment.06:32
lifelesswgrant: thats possible too06:32
lifelesswgrant: and the pqm precommit hook runs outside the chroot06:32
wgrantlifeless: Exactly.06:32
wgrantNo PQM code change required.06:32
wgrantBut no chroot required.06:32
LPCIBotProject db-devel build (394): STILL FAILING in 2 min 9 sec: https://hudson.wedontsleep.org/job/db-devel/394/06:32
wgrantAnd no config-manager required.06:32
wgrantSo no half-hour required!06:32
wgrantI'm not sure if we want the conflict marker test still.06:33
* StevenK peers at Jenkins06:34
wgrantWe would lose the guarantee that buildout works.06:34
wgrantBut I think that is a reasonable sacrifice for 60x faster landing.06:34
lifelessbuildbot will tell us that06:35
StevenKUhhh06:35
StevenK$ bzr branch http://bazaar.launchpad.net/~launchpad-pqm/launchpad/db-devel /mnt/test/launchpad/workspace/db-devel06:35
StevenKbzr: ERROR: http://bazaar.launchpad.net/~launchpad-pqm/launchpad/db-devel/.bzr/repository/packs/09fb66d3dfb9df78e2bb1ca7b6c7aac9.pack is redirected to https://launchpad.net06:35
StevenKERROR: Failed to clone http://bazaar.launchpad.net/~launchpad-pqm/launchpad/db-devel06:35
lifeless\o/06:35
lifelessalso wtf06:35
lifelessi guess its a 40406:35
StevenKIt works now ...06:36
lifelessso you hit a repack06:36
lifeless(during a)06:36
lifelessfile a bug06:36
spivStevenK: what lifeless said06:36
spivStevenK: especially \o/06:36
StevenKIt was repacking while downloading?06:36
lifelesspqm did it, yes06:36
spivStevenK: concurrent push while you pulled06:36
StevenKIt's a bzr bug or codehosting?06:37
spivI'd say both :)06:37
lifelesscodehosting06:37
spivMainly codehostin06:37
lifelessbzr can't really sensible handle a redirect there06:38
lifelessbecause it points at not-a-pack06:38
spivBut I think it would be ok for bzr to understand that a redirect while reading a pack indicates "probably not there"; if bzr has gotten as far as trying to read packs it's already successfully fetched a bunch of other stuff under .bzr/06:39
lifelessspiv: 'ewww'06:39
spivIt might be too nasty to code though.06:39
* lifeless puts on the http nazi hat06:39
StevenKlifeless: https://bugs.launchpad.net/launchpad/+bug/72475006:40
_mup_Bug #724750: repacking during checkout results in wierd error <Launchpad itself:New> < https://launchpad.net/bugs/724750 >06:40
lifelessStevenK: go on, triage it.06:40
StevenKBah, sorry, forget to set status and importance06:40
lifeless:)06:40
lifelessStevenK: jinx06:40
StevenKTriaged/Low. Not sure if you agree06:41
lifelesshttps://code.launchpad.net/~lifeless/launchpad/bug-710685/+merge/5125806:41
lifelessStevenK: I agree06:41
lifeless^ thats I can has review, plox06:42
StevenKWaiting for diff06:43
wgrantWhat.06:44
StevenKwgrant: Hm?06:44
wgrantlib/lp/tests/test_no_conflict_marker.py06:44
wgrant49 lines of Python wrapped in two of make wrapped in one of shell.06:44
wgrantTo run one line of shell.06:44
StevenKEEEEEK06:45
StevenKlifeless: You stop importing TestCase in lib/lp/testing/tests/test_matchers.py and one class still bases off it?06:46
StevenKlifeless: Your multi imports require ( and )06:47
StevenKlifeless: You didn't drop the unittest import from lib/lp/code/browser/tests/test_branch.py06:49
StevenKAs well as lib/lp/code/browser/decorations.py06:51
StevenKI'm not sure about the move into setupBrowserForUser(), but I'm willing to humour you06:52
wgranthttps://pastebin.canonical.com/43935/07:05
wgrantI think that does the same as we do now, except without the test that buildout works, because I hate buildout.07:05
lifelessStevenK: I don't stop importing TestCase07:08
StevenKAh. Fix your imports anyway07:08
StevenK:-)07:08
lifelesswhere are you saying () is needed ?07:10
lifelessI've removed the two useless imports of unittest07:10
lifelessStevenK: ^07:11
StevenKlifeless: from lp.testing import TestCase, TestCaseWithFactory , for instance.07:11
lifelessblah07:12
lifelessI *actually* intended that to be ok when I argued about this07:12
lifelessbut the nuance got lost somewhere07:12
lifelesschanged07:12
StevenKJust run the import formatter and stress less07:13
lifelessStevenK: anything else ?07:22
StevenKlifeless: Not that I can think of right now07:23
lifelessman, oracle are really not dealing with hudson stuff well07:26
wgrantOh?07:26
StevenKOh?07:26
wgrantWhat have they broken now?07:26
lifelessthe long thread with charles rhys07:28
wgrantlifeless: So, any flaws in my PQM plan?07:30
wgrantI admit to not knowing PQM very well at all.07:30
lifelesswgrant: pqm already rejects conflicts07:31
wgrantlifeless: Sure, but people sometimes commit them.07:31
wgrantI've seen them in MPs :/07:32
wgrantBut we could probably drop that check, true.07:32
lifelessother than that, it seems fine07:32
lifelesswhile you're at it07:33
lifelesscare to look at why prod config landings take an hour07:33
wgrantSame reason.07:33
wgrantThey grab and build LP, then verify all of the configs against the schema.07:33
wgrantWe could probably install lazr.config on prasé and do it without using the tree, though.07:33
wgrantLet's see how easy that would be.07:34
StevenKlifeless: You missed the imports in lib/lp/registry/browser/tests/test_milestone.py07:34
wgrantMmm, not really feasible.07:35
wgrantWe may have to live with long prod configs for a while :(07:35
lifelessStevenK: which imports07:35
StevenKfrom testtools.matchers import LessThan, Matcher ; from lp.testing.matchers import HasQueryCount, BrowsesWithQueryLimit07:35
* wgrant foods.07:36
wgrantI will return and request a deploy to finish off that incident.07:36
wgrantUnless buildbot chokes on Windmill again, in which case I will be tempted to rs=me disablement of WindmillLayer.07:36
StevenKHaha07:37
lifelessStevenK: thanks07:37
StevenKlifeless: If you've made that change, r=me07:37
lifelessI have07:37
lifelessneeds a non-* review07:38
StevenKIndeed07:38
StevenKCan't help you, sadly07:38
lifelessoh, there is a stub07:45
lifelesshttps://code.launchpad.net/~lifeless/launchpad/bug-710685/+merge/5125807:46
wgrantYay.07:55
lifelessstub: could I get a review of https://code.launchpad.net/~lifeless/launchpad/bug-710685/+merge/5125807:59
stublifeless: yer - looking already.07:59
lifelessstub: cool, thanks07:59
stublifeless: I don't particularly like how you are having to sniff params.linked_branches for type in model code (browser code I could forgive when things are coming from HTML forms).08:00
lifelessstub: it doesn't make sense to have a different parameter08:01
lifelessstub: I don't like the sniff either, but the original linked_branches code was bong08:01
lifelessit should have used not(None) and None with a normal searchbuilder right from the get go.08:01
lifelessstub: we can fix that up separately08:03
stublifeless: So what is zope_isinstance(params.linked_branches, (any, all, int)) doing? any and all are builtin functions08:03
lifelessstub: not here they aren't08:04
lifelesscanonical.launchpad.searchbuilder08:04
lifelessthis is the standard way for passing in constraints to bug searches08:04
stubI see now.08:05
stubMight be better to use a namespace since we are overriding builtins (searchbuilder.any)08:06
lifelessstub: perhaps; its used bare /throughout/ bugtask.py though08:07
lifelessstub: what I mean is, it wouldn't reduce the burden of that override at all to do different here08:08
stubyup. Just thinking about 'best practice', and if it really matters (they may be builtins, but does anyone use 'em?)08:08
lifelessand it would be inconsistent08:08
lifelessI think we should improve it - perhaps move to Any rather than any, as a separate, large mechanical change.08:08
=== almaisan-away is now known as al-maisan
stublifeless: Ok. Better sooner than later though, as people will start cargo culting this code.08:09
lifelessah, the use of it in browser code I can change easily.08:09
lifelessand will do so now08:09
lifelessdone08:10
stublifeless: line 139 of the diff, you should use shortlist rather than list08:12
lifelessstub: doesn't that blow up at 100008:12
stub(Not that I'm sure why you need to materialize the result set apart from doing what the docstring says)08:13
stublifeless: It should emit warnings for smaller lists than that.08:13
lifelessstub: we're doing this because we have bugs with 400+ bugs08:13
stublifeless: But if we are materializing large lists, we have a different problem.08:13
lifelessbranches with 400_ bugs08:13
lifelessstub: yah, I'm wondering about paginating these08:14
lifelessI can put shortlist in there08:14
stublifeless: You can specify the expected sane limit08:14
lifelesswhere does it live?08:14
stubcanonical.launchpad.helpers (for now...)08:15
lifelessI'll run with the default08:16
lifelessan oops will be no worse than the current timeouts08:16
stublifeless: So 'linked_bugtasks' has a docstring stating it returns DecoratedBugs08:17
lifelessoh, shall fix.08:17
lifelessI got kindof mired in the restructuring mess here - was tired at the end08:18
stublifeless: And further down, you do 'for bugtask in self.branch.linked_bugs'08:18
lifelesshah - UserWarning: shortlist() should not be used here. It's meant to listify sequences with no more than 15 items.  There were 36 items.08:18
stubshortlist should be emitting soft oopses now soft oopses exist.08:19
stubBut the goal is good :)08:19
lifelessi've given it a 1000 expected length.08:19
lifelessthats a great point.08:20
lifelessfixing that bugrask in linked_bugs code -   http://pastebin.com/bw7Cv4UM08:21
lifelessit is late evaluation08:21
lifelessbut AFAICT that code path isn't actually used anymore08:22
lifelessI just haven't tracked down every case to be sure of it.08:22
stubthat looks fine08:23
stubWhat does self.assertThat(branch, browses_under_limit) actually check? I'm not sure how a branch can be used to check a query limit.08:25
lifelessit renders the default view for the branch08:25
lifelessand checks the queries made doing that08:25
lifelessit uses userBrowser08:25
lifelessso we get the full stack, all the portlets etc08:25
lifelesssee the matcher, its new in the branch - it wraps a QueryCollector + HasQueryCounts08:26
jtvhi folks08:28
stubjtv: Yo. I need you to better describe how you want those tests to look so I can land that branch.08:30
jtvstub: you could have a pruner that takes a list of ids for its constructor… makes it easy to create pruners that will or won't clean up specific objects.  Or you could do it on some other specific attribute value.08:31
jtvThen you can do things like "create 3 objects that will get cleaned up; run one pruner iteration with a batch size of 2; now 2 are gone but one's still there."08:32
jtvPresto: no reliance on sample data.08:33
stubI'm not relying on sample data08:33
jtvI thought you were?08:33
jtvThe IrcID thingies?08:33
stubLast iteration changed. Instead of using a random table with some arbitrary data (IrcId), I create a new table with some arbitrary data (FooSomething)08:34
jtvOh cool08:34
jtv(Meanwhile, I'm browsing to the MP)08:34
stubThe data never mattered - I just needed a table with some data in it (> chunksize items actually)08:34
stublifeless: we probably can do the 'filter unnecessary bugtasks' in SQL, but I doubt it will be much of a win over the current approach. Not dealing with large numbers of items to prune here.08:36
jtvWow that's a large indentation.  Wasn't it easier to put the method body in a separate method, and wrap the call to that method in a try/finally?08:36
lifelessstub: i think we should leave that for a later iteration08:36
lifelessstub: *but* - some bugs have 100's of tasks08:36
lifelesspathological ones to be sure08:36
stublifeless: Yes. I'm suggesting that later iteration might never happen.08:36
stubOutliers, that are probably indicative of another bug (something is wrong if a bug has 100's of tasks)08:37
lifelessstub: indeed. Lets be guided by data :)08:37
lifelessstub: yes, something is wrong... we have users08:37
stubStatus: 666 (Electrocute Luser)08:38
lifelessin fact looking at this I see another possible bug, Should we really show 'wontfix', 'invalid' and 'opinion' bugs08:38
lifeless(we do currently, but it seems like an easy way to deal with these pathological bugs, just don't bring back those tasks.08:38
stublifeless: This is model code, so you really shouldn't be making decisions for the browser code here.08:38
lifelessstub: the browser code passes the filter in08:39
lifelessstub: I'm saying the filter may be bong08:39
lifelessI've preserved the behaviour, but its not necessarily defined correctly to start with08:39
stubOk. So different, existing bug :)08:39
jtvstub: big improvement in that you no longer rely on pre-existing items… is it safe to make BulkFoo a non-temp table?08:40
stubjtv: Yes, as the test suite will clean everything up. But I can't see why I can't use a temporary table in any case.08:41
jtvstub: that's the thing—you're not using a temp table08:41
lifelesstemp table would be faster to test with08:42
jtvTypo?08:42
stubI know. By double negative was attempting to say I can change that without ill effects.08:42
jtvAh sorry08:42
jtvSeems cleaner to make it a temp table and have cleanUp drop it.08:43
jtvIf the base class didn't do the query, this would be easy to unit-test without a table; you could just pass a list.08:45
stubjtv: I need a table so I can define a Storm class so I can add it as an attribute to the BulkPruner08:46
jtvAh, the bulkpruner also does the delete in SQL of course.  Stupid of me.08:47
jtvI'll have a coffee after this.08:47
stubGet me one too please. My eyes blur over when I look at lifeless's filter code.08:47
jtvFor that, I recommend beer.08:48
jtv(Any other religions we can offend with simple beverages?)08:48
stubok. I see why it is done that way and how it works now.08:49
stubI don't need props to offend religions08:49
* stub is naturally offensive08:49
jtvPlus, you have a T-shirt!08:49
adeuringgood morning08:54
jtvstub: I still think it'd help to break that test down into chunks that prove separate things.  "isDone initially returns zero."  "A run with a batch size of 2 removes exactly 2 objects."  "Iterating until isDone() clears up everything."  (I don't see why there are two of those bits in the test.)08:56
stubjtv: I don't think the test is particularly large or unwieldy, and I know every test is going to take about 1.5 seconds as the database will need to be reset. But I can change that if you insist.08:58
stublifeless: approved08:58
lifelessstub: thanks08:58
jtvstub: that long?09:00
jtvWhere does the time go?09:00
stubLast I checked. dropdb, createdb --template (in a loop, waiting for dropdb to complete and pg to complete)09:01
stubAlthough if I use a temporary table, I can tell the test suite the db isn't dirty and avoid that09:02
lifelessstub: you can use a temp table with storm09:02
stubSo yes, we can split the tests without time increases with a little magic.09:02
jtvMaybe try the timing with the temp table first.  :)09:02
stublifeless: Yes, but I'm defining a Storm subclass to access it.09:02
lifelessstub: sure, I don't understand why that implies any trauma09:03
stublifeless: Ideally I could create a Storm class on the fly but I don't know if I can.09:03
lifelessstub: you can - curry it in your test09:03
jtvAFAIR you can09:03
lifeless[not that you need to, but you definitely can]09:03
stubI mean easily. temporary_table = StormTempTable("SELECT * FROM FooBar WHERE wibble IS FALSE")09:04
lifelessI was thinking - definte the temp class once09:04
lifelessdo store.execute() once in the test to create the temp table09:04
stublifeless: That is what I'm doing. I just need to add 'TEMPORARY' to my 'CREATE TABLE' statement in the test.09:05
lifelesscool09:05
lifelessdoesn't sound magic then :)09:05
mrevellhi09:30
jtvhi mrevell!09:34
lifeless\o/ profiling on qastaging. -win-09:44
wgrantlifeless: Do they go somewhere useful now?09:44
jtvlifeless: don't play with our feelings… seriously?09:44
lifelesswgrant: I suspect the rsync isn't in cron or whatever yet09:44
lifelesswgrant: will worry about that when losas are not sprinting09:45
jtvDo we still need to get the config swizzled in order to use them?09:45
lifelessjtv: no09:45
lifelessjtv: just need to be in team launchpad09:45
jtv\o/09:45
lifelessjtv: it will still lock every other concurrent request out09:45
jtvso not something we're going to do in production then09:45
lifeless(or it should anyhow...) - but thats a profiling limitation09:45
lifelesswe could actually, once we're single threaded in production09:45
jtveh :)09:46
lifelessthats coming with the new servers09:46
lifelessand haproxy reconfiguration09:46
lifelessjtv: anyhow - https://bugs.qastaging.launchpad.net/++profile++show/ubuntu/+bug/109:47
_mup_Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I09:47
stubjtv: This really isn't better. I've replaced a simple, linear test with several less simple tests for a net increase in complexity and decrease in readability09:47
jtvstub: oh well, at least you gave it a try.  Thanks for that—I won't hold you up any longer.09:48
lifelesswow, 1/3 of a second in 0.3811      0.0110   +storm.references:133(__get__)09:49
jtvlifeless: yes, they're expensive even when they come out of the cache.09:50
lifelessjtv: I knew that in principle, but I didn't have data to support it09:50
lifelessthis isn't conclusive yet either because it may still be lazy loading on that page09:51
jtvYou could have asked.  :)  I fixed a timeout recently that was largely based on that.09:51
lifelessjtv: I remember the review, I forget the page id09:51
jtvSo do I, unfortunately—but IIRC it was more or less two consecutive lines in the code, with ridiculous time spent python-side without queries.09:52
jtvSometimes I wonder if it'd be worthwhile to have per-request caches in front of the object-info dict in storm.09:53
wgrantlifeless: OK, ++show is extremely awesome.09:53
jtvWhat's that do?09:53
lifelessjtv: click on the url I linked before09:53
lifelesswgrant: that was gary's magic09:53
lifelessI'll let everyone know about this and the improving scaling count helper on monday09:54
jtvOh wait I've seen this before09:54
jtvDidn't realize you got the page underneath as well though.  Awesome!09:55
jtvI wonder if I could hack up my browser to add a "profile this request" link to all my LP pages…09:56
wgrantjtv: You were getting 502s from that error, right?09:59
stubjtv: Can you push the relevant buttons on https://code.launchpad.net/~stub/launchpad/garbo/+merge/50595 to keep ec2 land happy?09:59
jtvwgrant: from what error, sorry?10:00
wgrantjtv: The one you're discussing in #launchpad10:00
jtvstub:  I was in the process of doing that, actually.10:00
jtvwgrant: ah, they were getting those non-oops "can't connect to Launchpad server" errors.10:00
jtvstub: see?  It's people like wgrant keeping me from approving your work.10:00
wgrantjtv: Yeah, the 502s. They're fixed now.10:00
jtvGreat!10:01
wgrantBut they do indicate an IntegrityError.10:01
jtvWhich is exactly what I currently have a fix in EC2 for.  And thanks for fixing "ec2 land" btw.  :)10:01
wgrantIt finally landed.10:01
wgrantAfter Windmill kicked it out twice.10:01
jtvGrr10:01
wgrantand a new spurious failure (now fixed) kicked it out a third time.10:02
wgrantr12426 started creating the no-op filters.10:22
wgrantr12435 is the only rev since that affects bug notifications.10:24
lifelessnight all10:26
=== danilo-afk is now known as danilo
=== adeuring changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: adeuring | https://code.launchpad.net/launchpad-project/+activereviews
=== al-maisan is now known as almaisan-away
wgrantadeuring: Hi.11:01
adeuringhi wgrant11:01
wgrantadeuring: https://code.launchpad.net/~wgrant/launchpad/remove-canonical.widgets/+merge/51277 should be a nice quick one.11:01
wgrantIf you could.11:01
adeuringwgrant: I'll look11:01
adeuringwgrant: r=me.11:13
wgrantadeuring, jml: Thanks.11:14
jmljelmer: thanks for the email.11:58
jelmerjml: np. Let's get this show on the road :)11:59
LPCIBotProject devel build (476): STILL FAILING in 5 hr 44 min: https://hudson.wedontsleep.org/job/devel/476/12:03
deryckMorning, all.12:07
* jml is off for a bit, last driving lesson in a while, I hope.12:08
jtvgood luck jml, good morning deryck12:21
jtvAhhhh an empty translations import queue for once.  Lovely.12:21
danilostub, hi, just one q re your review of https://code.launchpad.net/~danilo/launchpad/bug-720826-db/+merge/5114612:32
danilostub, we are mostly going to do joins through bugnotification, is _pkey as you suggest going to be enough for that?12:33
stubdanilo: yes12:33
danilostub, (fwiw, we might not even need the index on bug_subscription_filter, so how bad for the DB is it to add it "just in case"?)12:34
danilostub, ah, interesting, so the BTREE index on a tuple will be a BTREE on the first element of the tuple "first"?12:35
stubthere is a good chance we won't need it, as the primary key index should be usable going in that direction too.12:35
stubbut it will be faster, and just in case.12:35
stubdanilo: I don't know the details of the structure.12:36
danilostub, well, what I am saying that we are not going to be joining through this table from the direction of a bugsubscriptionfilter (iow, we won't be taking a set of bugsubscriptionfilters and look for all bugnotifications that it caused; at least not for now)12:36
stubSo that is two reasons we might not need it :) I just put it there because your patch had it too.12:37
danilostub, right, I just put it in for "just in case" (i.e. we might want to do that when we start trying to estimate how much mails is each filter generating)12:38
danilostub, but I wonder if it is a drag on the DB and we shouldn't create such indexes "just in case" (iow, I am asking how bad is it to have an index that's not used?)12:39
stubIt slows down inserts and chews some disk space, apart from that not much.12:40
danilostub, right, thanks12:40
danilostub, I think I'll leave this one in12:40
stubIf the filters can be removed, we want the index.12:40
LPCIBotProject db-devel build (395): STILL FAILING in 5 hr 50 min: https://hudson.wedontsleep.org/job/db-devel/395/12:40
danilostub, right, good point12:46
* jtv wants hypothetical indexes12:47
danilojtv, I want a hypothetical database ("if you need it, it'll be there" :)12:58
jtvGo buy hardware12:58
danilojtv, hypothetical hardware?12:59
jtvhypotheticall, yes12:59
danilojtv, there's not enough "all" for what we might need :)13:01
LPCIBotProject devel build (477): ABORTED in 1 hr 12 min: https://hudson.wedontsleep.org/job/devel/477/13:16
LPCIBot* Launchpad Patch Queue Manager: [r=thumper][bug=721134] Fix the heading alignment for the multi-line13:16
LPCIBoteditors on the recipe index page.13:16
=== bac changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: adeuring, bac | https://code.launchpad.net/launchpad-project/+activereviews
bachi adeuring13:17
adeuringmorning bac13:18
=== almaisan-away is now known as al-maisan
bigjoolsadeuring or bac, no rush, but I have a branch up for review if one of you can take it please14:15
adeuringbigjools: I'll look14:15
bigjoolsthank you14:16
sinzuiSo begins another day where the first 1.5 hours is spent working natty bugs14:37
bigjoolsnatty is not yet released, right? :)14:40
sinzuiI do not think people will be happy if it were released today14:45
jcsackettsinzui: you free to mumble about the messages stuff in about half an hour?14:47
sinzuisure14:48
sinzuiif mumble/pulse works14:48
sinzuiI had to fix the mic again this morning14:48
adeuringbigjools: PoppyAnonymousShell.openForWriting() has a "catch-all" except. I think we do not want to catch KeyboardInterrupt and SystemExit. And I think we should log an error for other exceptions.14:48
adeuringotherwise, the branch looks good, I think14:49
bigjoolsadeuring: that was cargo-culted from the parent class... I wasn't sure what to do about it TBH14:50
jcsackettsinzui: dig. i think all meeting plans these days involve a "natty-errors" fudge factor. :-P14:51
adeuringbigjools: admittedly, I am not familiar with twisted, so I am not sure about KBInterrupt and SystemExit. But nevertheless I think we should log other exceptions.14:51
adeuring"eating" exceptions simply scares me ;)14:53
bigjoolsadeuring: yeah14:53
bigjoolsadeuring: so I'll re-raise KeyboardInterrupt and SystemExit14:54
bigjoolsadeuring: oh wait14:54
bigjoolsadeuring: yes twisted has confused us both momentarily - the defer.fail() is effectively the same as re-raising the exception, it gets dealt with later14:55
adeuringbigjools: intersting. So,  IOError and OSError are re-raised too?14:56
adeuringah, no, there no fail() call14:56
bigjoolsadeuring: no, they are converted to ftp errors14:56
bigjoolsftp.errnoToFailure will return a defer.fail14:57
adeuringbigjools: right, thanks for the explanation, so r=me. But perhaps a small comment that twisted properly deals with the exceptions? (just to avoid the same question I asked again)?14:57
bigjoolsadeuring: yup, will do, thanks for the review14:57
bigjoolsI am blocked on landing this right now anyway14:58
bigjoolstalking of which, does it matter if we lay our own eggs in lieu of a proper Twisted release?14:59
=== henninge_ is now known as henninge
jmlgary_poster: hi15:08
gary_posterjml, hi on call but maybe will postpone call if your conversation will change the tenor of the call :-)  what is your topic?15:18
jmlgary_poster: general mgmt stuff. It can wait.15:19
gary_posterok cool will ping jml thanks15:19
jmlgary_poster: np15:19
* jml fetches tea & chocolate.15:19
gary_posterjml, ping?15:34
jmlgary_poster: hi.15:34
jmlgary_poster: skype? (mumble's broken for me atm)15:34
gary_posterhey.  Skype or mumble?15:34
gary_posterok15:34
abentleyjkakar: I'd like to be notified via a Zope event whenever objects of a particular type are removed from the store.  It looks like Storm does emit an event then, but I can't find any documentation of how that works.15:36
abentleyjkakar: Do you have any pointers?15:36
jkakarHmm, let me look at some code, one sec.15:37
jkakarabentley: Okay, so the only thing I can recommend is not really part of the public Storm library.15:43
jkakarabentley: I wouldn't rely on it not changing under you.15:43
jkakarabentley: Anyway, Storm has an internal event system which it uses to keep track of things.  You can hook into it, but as I said, it's not recommended.15:44
abentleyjkakar: understood.  I already have a 95% solution, by overriding Foo.destroySelf.  Maybe that's enough.15:45
jkakarabentley: That's what I was going to recommend... providing a wrapper/hook on the public API.15:45
abentleyjkakar: Yeah, it just wouldn't surprise me if someone did Store.remove instead of destroySelf at some point.15:47
abentleyjkakar: It's more Storm-y.15:47
jcsackettsinzui: mumble?15:47
jkakarabentley: Right.15:49
abentleyjkakar: Perhaps you could put a docstring in storm.event that says it's for internal use only?15:49
jkakarabentley: That's a good idea.  We desperately need to improve our documentation system... no one has taken up the charge to do it, though... I've made some small starts, but haven't managed to push through.15:50
=== deryck is now known as deryck[lunch]
=== beuno is now known as beuno-lunch
benjianyone done a rockefuel-get lately and then not been able to make?  SyntaxError: invalid syntax (shipit.py, line 51)16:34
benjihmm, conflict markers in the file, trying to see if it's just a local problem or not16:39
henningeadeuring, bac: It would be great if either of you could look at my branch! It's UI work.16:40
henningehttps://code.launchpad.net/~henninge/launchpad/devel-705176-sharing-info-on-page/+merge/5128316:40
henningesinzui: Can you do a UI review on that, please? ^16:41
sinzuiokay16:41
adeuringhenninge: I'll look16:41
henningeadeuring, sinzui: thanks. I gotta run out now for 30 min but will be back to answer any questions ... ;-)16:42
=== al-maisan is now known as almaisan-away
=== beuno-lunch is now known as beuno
=== deryck[lunch] is now known as deryck
=== Ursinha is now known as Ursinha-lunch
* henninge is back17:21
henningeadeuring: are you still reviewing?17:37
adeuringhenninge: nearly done, give me five more minutes17:37
* henninge sets count down on watch ;)17:37
henningeadeuring: cool, thanks ;)17:37
adeuringhenninge: r=me with a few nitpicks17:40
daniloallenap, hey, sorry for missing out on that bit of extra review you asked for, had a nice, wild day — +1 for ignoring my lazy ass :)17:40
allenapdanilo: :)17:41
henningeadeuring: Danke! Schönes Wochenende!17:43
daniloallenap, fwiw, if you run into problems, you can always change the user to be defined as group=launchpad when it inherits all the permissions of the "launchpad" user (though, you might know that already, but I am just saying :)17:43
adeuringhenninge: Dir auch auch ein schönes Wochenede!17:44
=== Ursinha-lunch is now known as Ursinha
lifelessmoin18:19
sinzuilooks like I win. I get to try a bug import18:21
LPCIBotProject db-devel build #396: STILL FAILING in 5 hr 7 min: https://hudson.wedontsleep.org/job/db-devel/396/18:24
* jml has to go18:55
=== bac changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: bac | https://code.launchpad.net/launchpad-project/+activereviews
=== Ursinha is now known as Ursinha-afk
jcsackettare we still having ec2 problems? i just got back three ec2 runs which seem to have taken the full time, but show 0 tests run, 0 errors, 0 failures. log looks like everything actually ran.19:37
* jcsackett is confused.19:37
lifelessjcsackett: hi19:41
lifelessjcsackett: windmill19:41
jcsackettlifeless: oh goodie.19:42
jcsackett(ah, the problems with splitpanes)19:42
lifelessI prefer F16's myself19:43
* jcsackett laughs.19:43
jcsackettso, we're having windmill issues in the tree, still, or i have somehow blown up windmill in my branch?19:43
lifelessbit from column A19:43
lifelessbit from column B19:43
jcsackettrighto.19:44
lifelessshiny: http://caniuse.com/19:44
lifelesssinzui: ping19:52
sinzuihi lifeless19:52
lifelesshi19:52
lifelessI'd like to mark bug 719182 wontfix19:52
_mup_Bug #719182: boolean interpretation for feature flags <feature-flags> <Launchpad itself:In Progress by sinzui> < https://launchpad.net/bugs/719182 >19:52
lifelessbut I just noticed you're working on it19:52
lifelessand I don't want to be a nuisance19:52
lifelessthe problem statement at the top is false: we don't have varying interpretations for booleans; that all got cleaned up by wgrants work19:53
LPCIBotProject devel build #478: STILL FAILING in 5 hr 52 min: https://hudson.wedontsleep.org/job/devel/478/19:53
sinzuifab19:54
lifelessthats ok with you ?19:54
sinzuiIndeed it is.19:54
lifelesscool. I'll twiddle the knobs.19:54
gary_posterlifeless do you happen to know if there is a way to use the WITH statement in Storm?  Mucking about with SQL, I can get the 1200-1500ms query from bug 723999 down to 180ms simply, and if I can use the WITH statement somehow I can get it down to 50ms.19:55
_mup_Bug #723999: BugNomination:+edit-form structural subscriptions taking 4.8 seconds during nomination editing POST <story-better-bug-notification> <timeout> <Launchpad itself:Triaged by yellow> < https://launchpad.net/bugs/723999 >19:55
lifelessgary_poster: thats a decent improvement :)19:56
gary_poster:-)19:56
lifelessgary_poster: The short answer is 'probably not'19:57
gary_poster:-(19:57
gary_posteroh well19:57
gary_poster180 is the big improvement, so I'll run with that19:57
gary_posterthanks19:57
lifelessstorms compiler will put the SELECT at the start19:57
gary_poster:-/19:58
lifelessso we'd need to hack into that to actually support with (or similar) directly.19:58
lifelessyou could use a temp table explicitly19:58
gary_posterhow would I do that?19:58
gary_poster(pointing to an example or telling me what to grep for would be great)19:58
lifelesshave you seen gavins hack to do distinct on ?19:59
gary_posterI don't think so19:59
lifelessSQL("distinct on foo 0 as ignore")19:59
gary_posterit didn't stivk with me if so19:59
lifelessand use that as the first thing in the select clause19:59
lifelessstore.find((SQL("distinct on foo 0 as ignore"), Foo, Bar), ...)19:59
lifelessfor _, foo, bar in result:19:59
gary_posternot entirely sure I follow but will grep to see if that helps20:00
lifelessyou can probably inject a INTO TEMPORARY TABLE (I forget the syntax offhand ...) in the same way20:00
lifelesshowever20:00
gary_posterah ok20:00
* gary_poster waits for however ;-)20:00
lifelessthen you've make the temp table, and use it in followups20:00
lifelessoh the however: 180*4=720ms, which is tolerable for a month or two20:01
gary_postersure20:01
gary_postersince I'm focusing on it I want to see if I can get it down20:01
gary_poster'cause 200ms is even better ;-)20:01
lifelessI am a little scared by the size of query, and if you have any concerns about the modelling that you inherited with this project, I stand ready to consult20:02
lifelessyeah, 200ms is even better20:02
lifelessif the same basic temp table is used by all 4 queries20:02
gary_posterthe query is down to, say, 25 lines lifeless.  no worries there20:02
lifelessthen a temp table can be an even bigger win than with - make it once, use it 4 times20:02
gary_poster(25 nicely formatted lines)20:02
lifelessgary_poster: \o/ that will be a significant benefit all of its own.20:03
gary_posteryeah20:03
gary_posterok, I'll read up on temporary tables; I didn't realize you could use them within a transaction20:03
lifelessoh yeah, they are awesome20:04
lifelessvariables FTW20:04
gary_poster:-)20:04
abentleyderyck: could you have a look at https://code.launchpad.net/~abentley/launchpad/refactor-merge-job/+merge/51359 ?  I may have used too much magic.20:04
gary_posterok thank you very much lifeless.  I'll dig, and come back up for air with you if I encounter confusion.20:04
lifelesscool20:05
deryckabentley, sure.  I'll take a look.20:05
abentleyderyck: thanks.20:05
abentleybac: Could you please review https://code.launchpad.net/~abentley/launchpad/refactor-merge-job/+merge/51359 ?20:17
lifelessjcsackett: you wanted to talk about spam20:22
jcsackettyes, but i think it's no longer necessary.20:23
lifeless?20:23
jcsackettyou were concerned about performance implications for pushing the visible attr down into imessage and having multiple message systems use it, yeah?20:23
lifelessyes20:23
lifelessmessage is fat, link tables are pretty darn narrow20:24
lifelesswe probably need an overhaul on message20:24
lifelesse.g. drop the fti index20:24
jcsackettright. i'm thinking as far as not having to rewrite code too much, going for an IHideable or similar, and having shared rules there. it means some reimplemenation, but at least reliably linked.20:24
bacabentley: yes20:25
jcsackettrather than questions being entirely different from bugs, and so forth.20:25
lifelessjcsackett: bugmessage is 188MB, message is 2.4GB20:25
abentleybac: thanks!20:26
lifelessjcsackett: postgresql has to read every row that indexes say *might* be a match, because the liveness of the row is only in the row20:26
jcsackettlifeless: right.20:30
lifelessjcsackett: this doesn't mean we /can't/ put it on message, but it does mean we need to try the migration, measure the impact20:31
lifelessjcsackett: it -might- be faster than it is now. It might be slower.20:31
jcsackettlifeless: yeah, i'm going to give it a try.20:31
lifelessjcsackett: what I know *for sure* is that we have issues in this area, and we doing things that are hard to undo (e.g. schema schanges) should be done with care.20:31
lifelessjcsackett: as a test case, i give you http://bugs.launchpad.net/bugs/120:32
lifelessoops20:32
_mup_Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I20:32
lifelessjcsackett: https://bugs.launchpad.net/ubuntu/+bug/1?comments=all20:32
_mup_Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I20:32
lifelessjcsackett: that url is (now) (largely) driven by messaging system performance20:33
jcsacketti'm still impressed the non-all comments version renders, btw. :-P20:33
lifelessjcsackett: actually, thats a little unfair of me : we're looking at pagination - but still - the count(*) in a batchnavigator isn't free20:33
jcsackettno indeed.20:33
jcsacketti'll probably getting into that stuff more on monday. today has been hunting down permissions stuff, since the visible attribute being used for culling spam on bug comments is admin only, and we would like registry to be able to deal with it.20:34
lifelessjcsackett: its not reliable yet, I need to keep pushing it20:34
bacabentley: why do you use a staticmethod for _register_subclass instead of a classmethod?20:38
abentleybac: it had to be invoked in TranslationPackagingJob, and that didn't work with a classmethod.20:39
abentleybac: There's no syntax for "invoke this class's classmethod, but with this other class as the first parameter."20:40
* bac looks20:40
lifelessthat would be a definitional problem - unless the otherclass is a subclass20:41
abentleylifeless: otherclass is indeed a subclass.20:57
lifelessabentley: does it define its own version of that method ?20:58
abentleylifeless: yes.20:58
lifelessah20:58
lifelessthat will indeed be tricky20:58
abentleybac: The follow-on is here: https://code.launchpad.net/~abentley/launchpad/translation-splitting-job/+merge/5137121:02
abentleybac: You can see that these refactorings make the actual definition of TranslationSplitJob very small.21:02
abentleybac: just noticed schedule_merge needed to be deleted.  Pushed now.21:08
abentleybac: thanks for your review.  Updates pushed.21:27
lifelessalso, I hate sample data22:27
lifelesslib/lp/soyuz/doc/closing-bugs-from-changelogs.txt is going boom because of the dsp.currentrelease change to not pick a crazy random package.22:27
jcsackettlifeless: sample data is the devil. kill the doctest--you have solid unittests.22:28
lifelessjcsackett: we do? kill the whole thing?22:29
* jcsackett considers.22:29
jcsacketti *thought* we did.22:29
jcsackettperhaps do a check, and then kill it.22:29
lifelesswhere would I find the unit tests?22:29
jcsackettcrap, i don't actually see a test that exactly handles that.22:31
jcsackettsorry for the false hope.22:31
jcsackettfair bit of that does look to me like it would be better covered by unit tests, but i imagine you don't really want to write a ton more tests if you can just update the doc.22:32
jcsackettsinzui: are we doing standup this evening?22:33
sinzuijcsackett: yes.22:35
lifelesswgrant: while you're around, whats the easiest way in a doctest of doing an upload to the currentseries of ubuntu - see the error i've just forwarded you22:49
wgrantlifeless: Use the factory.22:50
wgrantOr maybe SoyuzTestPublisher.22:50
wgrantDepending on what exactly you want.22:50
lifelesswgrant: well, thats why I'm asking :)22:50
lifelessI had tw oissues in my branch to nuke Distro.getCurrentSourceReleases()22:50
wgrantAha.22:50
wgrantI see now.22:50
lifelessone was a type items() rather than values()22:50
lifelessthats fixed22:50
lifelessthe closing bugs upload one however is epic fail sample data22:51
lifelessthis isn't a critical bug, I want to sweep it under the carpet for later polish22:51
lifelessso I was figuring that if I do a new upload of cdrkit to hoary22:52
lifelessit will work22:52
wgrantlifeless: Try just using factory.makeSourcePackageRelease22:53
wgrantIt may need more than that.22:53
wgrantBut we'll see.22:53
lifelessis there a global factory in doctests?22:53
* lifeless doesn't do doc tests :)22:53
=== bac changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
wgrantlifeless: I think 'factory' may be a factory.23:00
wgrantBut not entirely sure.23:00
wgrantI don't write new ones.23:00
=== Ursinha-afk is now known as Ursinha

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