[00:32] where are the soupmatchers? [00:33] * thumper pulls again [00:33] lp: [00:33] ? [00:37] lifeless: Did your parallel-supporting DB fixture ever land? [00:37] no [00:37] :( [00:37] feel free to hack on it [00:41] lifeless: Hm, that's a bit of an odd one. [00:41] Thanks. [00:41] wgrant: oh, its easy [00:41] wgrant: canonical.lp.dbhost [00:41] etc [00:41] Probably, yes. [00:41] are redudant fugly shit [00:41] It's just not what I would have expected. [00:41] the script entry point isn't resetting it quite right [00:42] with the result that fti.py attempts to work on launchpad_dev [00:42] rather than the supplied -d launchpad_test_template or whatever [00:42] Yep. [00:59] gah [00:59] I have a test that failed on ec2, but passes locally [00:59] WTF? [00:59] I've done a make schema [00:59] but still weird shit ... [01:00] isolation error? [01:00] what test [01:01] p.code.browser.tests.test_sourcepackagerecipe.TestSourcePackageRecipeView.test_request_builds_page [01:01] wit an l at the start [01:03] * thumper fires up make run [01:04] thumper: hi? [01:04] poolie: hey [01:07] shall we have a chat if you're back? [01:08] sure [01:10] * thumper shoves it back through ec2 again [01:38] too tired to write the mail now, here is link if anybody wants to play with it http://webprojekty.cz/ccx/trac/wiki/lpbot [01:49] ccxCZ: a link to what? [01:53] irc notification bot for launchpad projects [01:53] anyway gn, I have to go [01:54] wgrant: databasefixture and librarian branches are updated and pushed, if you're interested === ccxCZ- is now known as ccxCZ [02:16] === Top 10 Time Out Counts by Page ID === [02:16] Hard / Soft Page ID [02:16] 134 / 5092 Archive:+index [02:16] 70 / 240 BugTask:+index [02:16] 24 / 249 Distribution:+bugs [02:16] 20 / 118 ProjectGroupSet:CollectionResource:#project_groups [02:16] 11 / 265 POFile:+translate [02:16] 11 / 13 DistroArchSeries:+index [02:16] 11 / 1 ProjectGroup:+milestones [02:16] 7 / 35 Milestone:+index [02:16] 6 / 306 Distribution:+bugtarget-portlet-bugfilters-stats [02:17] 5 / 9 Person:+bugs [02:17] Ow :( [02:17] I must get back to Archive:+index. [02:29] wgrant: that would be the bomb [03:48] thumper: ping [04:05] poolie: a thought… would it save EC2 startup time (or server load) if we could use a virtual-machine image that had some fixed version of our source tree or repo pre-installed, so that it only needs to download the updates? [04:07] jtv: thats what we have, isn't it ? [04:07] oh :) [04:41] wallyworld: hey [04:41] wallyworld: it is time for pizza and movies :) [04:41] just wanted to confirm that you want me to look at bug 670452 next [04:42] <_mup_> Bug #670452: Hard to find related branches when composing recipe [04:42] wallyworld: aye [04:43] cool. i'll take a look once i finish seeing if i can improve that oops reporting test [04:43] haveagoodweekend [04:50] * wgrant theorises that HTML forms were designed as a cruel joke. [04:56] wgrant: careful—that line of reasoning leads down a dangerous path to paranoia, misanthropy and most probably, truth. [04:57] General observation about software stuff, not a comment about HTML forms specifically. [04:58] Heh. [04:58] Think Mahabharata-style stripping of illusions. [04:59] I could say something about pills in The Matrix if I could bear the thought of that crappy film. [04:59] Besides, I'm regularly informed through emails from helpful strangers that given the choice, there is no good reason to spurn the blue pill. [05:03] … [05:03] You're still reading the Wikipedia entry on Mahabharata, aren't you? [05:03] I was debating whether or not to look it up. [05:04] If you were debating it on your own, you probably want prozac, not viagra. My bad. [05:04] jtv: Hey, the first one was awesome. It was just the other two that made me cringe [05:05] StevenK: the first pill, the first book of the Mahabharata, or the first wgrant personality in the debate? [05:07] jtv: I'm sorry, the first Matrix movie [05:08] Ah that one. Did one thing for me: realize how precious my time was. Only time I ever walked out of a cinema shortly after the film started. [05:08] I've met other people who did that. [05:08] I only saw them a few months ago. I quite liked the first one. [05:10] jtv: I had a similar experience with my wife, sister and sisters friend at a production of Les Mis. Yay. Play is over. We can go home now. "Um Steve? no. That's just the first half, this is the intermission" AAAAAAAAAAAAAAAAAAAAA [05:11] spm: hang on, still laughing [05:11] :-) [05:11] Hah. Whew. That's better. [05:11] So I went home, ladies, enjoy the play. Ring me when you want to be picked up. :-D [05:12] Bored out of my tiny little mind. Some lady was whing about doing it tough. Some dudes with guns were whatever. Bored. [05:12] Bored against the backdrop of the French Revolution. But still bored. [05:13] Saw one cartoon about this kind of thing… spectator #1: "man but this is boring. I should have brought a good book!" [05:13] Spectator #2: "that's why I always read the reviews first." Goes back to reading Tolstoy. [05:13] bwhahahaa [05:18] jtv, hi, it could [05:22] poolie: lifeless noted that we already seem to do this. [05:22] could be good to know what fraction of total time is spent pulling that source [05:22] i suspect it's not very high [06:02] One of the current test failures in devel is strange - it reports a "test with error" but the test does not output a traceback or anything ... [06:03] looks like this: henning@dustpuppy:$ bin/test -vvcm lp.services.job.tests.test_runner -t TestJobCronScript.test_configures_oops_handler [06:03] Running tests at level 1 [06:03] Running canonical.testing.layers.LaunchpadZopelessLayer tests: [06:03] Set up canonical.testing.layers.BaseLayer in 0.004 seconds. [06:03] Set up canonical.testing.layers.ZopelessLayer in 9.778 seconds. [06:03] Set up canonical.testing.layers.DatabaseLayer in 0.482 seconds. [06:03] Set up canonical.testing.layers.LibrarianLayer in 10.697 seconds. [06:03] Set up canonical.testing.layers.MemcachedLayer in 0.112 seconds. [06:03] Set up canonical.testing.layers.LaunchpadLayer in 0.000 seconds. [06:03] Set up canonical.testing.layers.LaunchpadScriptLayer in 0.005 seconds. [06:03] Set up canonical.testing.layers.LaunchpadZopelessLayer in 0.000 seconds. [06:03] Running: [06:03] lp.services.job.tests.test_runner.TestJobCronScript.test_configures_oops_handler [06:03] Ran 1 tests with 0 failures and 1 errors in 0.848 seconds. [06:03] Tearing down left over layers: [06:03] Tear down canonical.testing.layers.LaunchpadZopelessLayer in 0.000 seconds. [06:03] Tear down canonical.testing.layers.LaunchpadScriptLayer in 0.002 seconds. [06:03] Tear down canonical.testing.layers.ZopelessLayer ... not supported [06:03] Tear down canonical.testing.layers.LaunchpadLayer in 0.000 seconds. [06:03] Tear down canonical.testing.layers.LibrarianLayer in 0.003 seconds. [06:03] Tear down canonical.testing.layers.MemcachedLayer in 0.101 seconds. [06:03] Tear down canonical.testing.layers.DatabaseLayer in 0.236 seconds. [06:03] Tear down canonical.testing.layers.BaseLayer in 0.001 seconds. [06:03] Tests with errors: [06:03] henninge: Pastebin? [06:03] lp.services.job.tests.test_runner.TestJobCronScript.test_configures_oops_handler (subunit.RemotedTestCase) [06:03] is that test a twisted test? [06:03] oops [06:04] henninge: does it have run_tests_with = ? [06:04] sorry, meant to paste http://paste.ubuntu.com/536572/ [06:04] lifeless: I don't konw what that is but that string does not appear in the file . [06:05] looks like this http://paste.ubuntu.com/536573/ [06:06] henninge: what about ZopeTestInSubProcess [06:07] actually, I just realized that that I pasted the wrong output but it's similar. [06:08] ah, interesting [06:09] lifeless: no, that neither [06:09] this might be allenaps change to use unicode in subunit [06:10] aha [06:12] * henninge tries with that reverted [06:14] nope,same result :( [06:19] wgrant: we're turning the publicrestrictedlibrarian back on [06:20] because it seems to work in tests [06:20] lifeless: Yay. [06:20] But why? :/ [06:20] Was Apache fixed? [06:20] wgrant: can you give it a thorough spin [06:20] wgrant: To quote spm, FIIK. [06:20] Heh. [06:20] Sure. [06:20] Say when. [06:21] so, r11980 seems to be the culprit for the current test failure [06:21] at least for two of them ... [06:21] the ones that don't produce output [06:23] wgrant: no, no changes in apache. I did a moderate amount of local faffing around to determine that the proposed changes shouldn't make a difference (apache ignores those bits), ie it should "Just Work" as is. So we switched it on, tested, off. and it worked. ie FIIK. [06:23] wgrant: oh, it was live at '19:21 < lifeless> wgrant: can you give it a thorough spin [06:23] ' [06:24] lifeless: Still broken. [06:25] Can you see https://launchpad.net/~soyuz-team/+archive/ppa/+build/1334368? [06:25] The build log link there. [06:25] And lots of other similar ones. [06:25] The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression. [06:26] I'm not in soyuz-team [06:26] wgrant: gimme a url [06:26] lifeless: Neither am I, but I have a sub. I thought you might be a commercial admin. [06:26] https://i35262589.restricted.launchpadlibrarian.net/35262589/buildlog_ubuntu-karmic-i386.openproj_1.4-2%2Bpx1_FAILEDTOBUILD.txt.gz?token=b8e6f2f070469191af32ce99bb92fae8 [06:27] StevenK: Right, it's the usual uncompressed 404, served with gzip headers. [06:27] So there are two levels of WTFery. [06:27] Haha [06:28] HTTP request sent, awaiting response... 404 Not Found [06:28] Ah yes [06:30] spm: please turn it off again [06:31] done [06:31] so how did it work for me/us? but not here? [06:31] Oh. its the 404? [06:31] It works for some files. [06:35] spm: ok, so it *is* the 404s [06:35] not the files themselves, the 404 response? [06:35] wgrant: does that same build log show properly now? [06:36] Repeating the same wget still gives me a 404 [06:36] of course [06:36] you need the source url [06:36] on the appservers [06:36] thats what redirects or proxies [06:36] Yes, the build log now works [06:36] lifeless: Proxying works fine. [06:37] wgrant: whats the original url ? [06:38] https://launchpad.net/~soyuz-team/+archive/ppa/+build/1334368/+files/buildlog_ubuntu-karmic-i386.openproj_1.4-2%2Bpx1_FAILEDTOBUILD.txt.gz ? [06:39] I suspect url mangling [06:39] I need to chat to spm briefly [06:39] * spm questions the brief part [06:39] Bwahaha [06:46] so I think its the % [06:51] wgrant: whats the debian version string for that, unmangled [06:51] 1.4-2+px1 [07:02] thanks [07:03] so, % urls are mangled by something in the request path [07:03] they are decoded [07:03] and then passed on decoded?! [07:03] * lifeless bets on apache [07:03] wouldn't know a standard if it bit it [07:03] lifeless: I was thinking that [07:13] https://bugs.launchpad.net/launchpad-foundations/+bug/681675 [07:13] <_mup_> Bug #681675: content coding for build logs is done in apache rather than the librarian [07:13] updated https://bugs.launchpad.net/launchpad-foundations/+bug/677270 [07:13] <_mup_> Bug #677270: apache/squid breaks restricted librarian on urls with percent encoded characters. [07:14] Anybody have a clue for me? This test is failing *even* when I revert to the revision of the last successful buildbot run. [07:15] http://paste.ubuntu.com/536585/ [07:15] It start two jobs and both seem to fail on _pythonpath_. Is that a local error for me? [07:16] I am getting this on devel r11979 [07:16] So does buildbot, it seems [07:16] which is said "last known good" revision [07:16] henninge: If changing devel doesn't fix it, I'd blame an egg change? [07:16] hm [07:17] henninge: 11980 is the twisted runner change, I was thinking it was to blame :) [07:17] but doesn't version.cfg control which version of an egg a revision is using? [07:17] jml: ^ [07:17] henninge: You need to remake. [07:17] henninge: you have to run bin/buildout again [07:17] lifeless: it is to blame for the other two failing test [07:17] wgrant: make clean ; make build? Did that ... [07:18] henninge: Hmm. [07:18] * henninge tries bin/buildout [07:18] there's probably a missing dep on versions.cfg [07:19] no change [07:19] buh [07:21] * StevenK stares at Hudson: "took 5 min 5 sec" [07:21] However, r11980 is devel #250 on Hudson, and that didn't fail any tests [07:23] * henninge tries r11980 locally again [07:28] * henninge notices that db-devel passed revision 10000 [07:28] org.apache.commons.jelly.JellyTagException: jar:file:/var/run/hudson/war/WEB-INF/lib/hudson-core-1.377.jar!/hudson/model/AbstractBuild/sidepanel.jelly:34:42: java.lang.OutOfMemoryError: Java heap space [07:28] Wheee! [07:28] \// [07:28] Java, you suck, and I hate you [07:29] I think Hudson is now unhappy, since it now gives 503s [07:31] And even /etc/init.d/hudson stop ... doesn't [07:33] Heh [07:33] Right, it does, it just takes 2 minutes? Srsly? [07:34] you were in swap [07:34] Grah, it is 50 MiB into it [07:34] How is 1.5GiB not enough for Java?! [07:35] how much memory did you tell java it can use? [07:35] Whatever the default is? [07:35] you might have been swapped out even if you weren't exceeding the machine memory in one proc [07:38] It's still 48MiB into swap with apache and java dead, so it isn't that [07:38] This machine still has a full Launchpad development environment on it, so that can't be helping [07:41] And restarting Hudson means it has lost track of the build it was in the middle of [07:41] * StevenK shoots the buildslave in the head [07:47] Project parallel-test build (15): STILL FAILING in 34 sec: https://hudson.wedontsleep.org/job/parallel-test/15/ [07:49] lifeless: Do you want me a queue another parallel-test build? [07:49] StevenK: ask me on the 3rd [07:49] StevenK: of january [07:50] sorry, the 4th [07:50] By which it would have landed? [07:51] no, by which I'll be back at work [08:00] lifeless: "by which I'll be back at work"? you haven't heard? we're replacing you with a perl script. I thought you knew. ?? [08:00] spm: never a win [08:00] #!/usr/bin/perl -w [08:00] see [08:00] while (1) { nag(); } [08:00] minus win [08:00] nah. -w is for wussies [08:01] Perl coder for six years at previous job. Old habits die hard === almaisan-away is now known as al-maisan [08:16] And there goes X in a screaming heap [08:37] good morning [09:06] hello [09:07] who's fixing the build? [09:17] henninge: hello [09:18] henninge: have you submitted anything to fix the build? [09:18] I'm confused. [09:18] r10005 doesn't look like a testfix to me... [09:18] jml: I hoped to find out what to do about the third test still failing [09:19] not much point in fixing two out of three tests [09:19] wgrant: what about it? (I haven't looked, trying to deal with the current failure) [09:19] wgrant: no but then db-devel wasn't broken [09:19] henninge: agreed. just wanted to check [09:20] henninge: It's labelled as testfix. [09:20] hey look [09:20] But doesn't seem to have a test fix. [09:20] it's ZopeTestInSubProcess again [09:20] ffs [09:21] wgrant: sorry, jtv is just telling me off about it, too ... [09:21] "now now henninge, that's not nice" [09:21] there, see? [09:21] I think it might confuse the QA bot a bit, but I guess we'll see. [09:21] we'll see ... [09:22] I wonder what happened re upgrading subunit [09:23] I see we're at the "someone should do something about this" phase of discussion [09:23] ok. [09:23] jml: That's surely the best phase. [09:24] wgrant: I don't know, I'm a "someone else just did something about it" kind of guy. [09:30] henninge: test_timeout fails for you locally, even if you revert to r11979? [09:35] we should change these to be testtools RunTest thingies anyway [09:37] presumably they are in sub processes for a good reason. [09:38] jml: yes, it does. [09:38] lifeless: I mean, there should be a testtools subprocess RunTest thingy [09:38] lifeless: rather than using a mixin with a run() method [09:38] +1 [09:39] henninge: ok. so something is very weird. [09:39] because a 'known good' build is breaking [09:40] I'm going to try to get more info on what the child process is doing [09:40] I *really* doubt r11980 has anything to do with these failures, fwiw. [09:41] jml: Its plausible [09:41] jml: if the reactor is in a surprising state [09:41] it forks, it doesn't exec [09:44] how can I get at the stdout & stderr of the child process? [09:45] hello [09:46] * jml cheats [09:48] lifeless: oh wait, it's not plausible at all [09:48] jml: ok [09:48] lifeless: because the test fails with r11979 too [09:50] also fails when not run in a subprocess [09:55] jml: to be clear: I could verify that the other two failing tests (*not* the timeout test) pass on 11979 but fail on 11980. The timeout test failure does not seem to be connected to that revision. [09:56] s/verify/verify locally/ [10:01] henninge: do you have a plausible reason as to why? [10:02] no, I don't ... :( [10:02] actually ... [10:03] allenap: I don't think it's related to the unicode thing [10:03] henninge: I suspect bad local state, actually [10:04] jml: As well as inside the buildbot slaves? [10:04] StevenK: yes. [10:04] jml: I don't deny that. Did you try it on your machine? [10:04] jml: the only clue is this: http://paste.ubuntu.com/536585/ [10:04] I find that a little hard to believe. Can haz proof? === jkakar_ is now known as jkakar [10:04] The test starts two jobs wich both fail on a missing _pythonpath_ [10:05] StevenK: working on it. [10:05] But I don't know how that can happen just for those two and not for everthing else. [10:05] the clue is that reverting to about 20 revisions ago still has the failure [10:05] good point [10:06] jml: Hudson might actually be your proof [10:06] jml: Now that I think about it [10:07] also, remember, the Makefile has been changed four times recently (11937, 11957, 11958 and 11979) [10:08] StevenK: in that it works? [10:08] jml: Indeed [10:08] jml: But the Hudson slaves are different to the buildbot slaves [10:08] naturally [10:10] how do we clean out the build on buildbot? [10:10] I suspect we run make clean only [10:11] how do we move from suspicion to certainty? [10:12] We channel mars, or someone who actually does more with buildbot than try and replace it [10:16] * jml has to go [11:06] rf-get and update-sourcecode doesn't want to fix the lack of a AsynchronousDeferredRunTestForBrokenTwisted module.... [11:09] jml: I did find an interesting problem. The read side of the pipe in ZTISP was being opened rU. Locally that has caused tests to error, but with no output at all. Changing it to rb means that they succeed. I don't really know why, but perhaps this is related to the unicode thing too. I'm landing a branch now to revert the getreader() thing, and to open both ends of the pipe as binary. === matsubara-afk is now known as matsubara === al-maisan is now known as almaisan-away [12:31] bigjools: that sucks. will try to look into that after the build is fixed [12:31] allenap: cool. that fixes all three failing tests? [12:32] jml: a make clean fixored it [12:32] bigjools: ahh good [12:32] not sure why I needed that though :( [12:36] bigjools: me neither. maybe I did something a bit stupid as I developing it. [12:36] it's not clear how to evolve Launchpad & an upstream in parallel [12:38] hmm [12:38] I wonder how I can make a script that downloads an openid-protected page [12:40] jml: I think it should fix them, but then I haven't been able to replicate the exact failures. I'm hoping :) [12:41] jml: see utilities/pastebin [12:41] well, the old one [12:41] jml: from faustian_pact import convenient_openid_wrapper [12:41] hmm. I don't think I have that one. [12:41] sure you do, you have bzr repo? :) [12:42] bigjools: faustian_pact is in Launchpad's history? [12:42] maybe not that one [12:42] I can't see you facing allenap on IRC when you talk [12:43] yeah, they probably haven't ported that to kde yet [12:44] db_lp broken again [12:45] any volunteers? [12:48] * bigjools 's kde sarcasm detector app goes off [12:48] allenap: test_timeout still fails for me with your branch, but the other two are fine. [13:01] https://bugs.launchpad.net/launchpad-foundations/+bug/681770 [13:01] <_mup_> Bug #681770: Failure in lp.services.job.tests.test_runner.TestTwistedJobRunner.test_timeout === jml changed the topic of #launchpad-dev to: Launchpad Development Channel | Week 2 of 10.12 | PQM is open | firefighting: db-devel broken | https:/​/​dev.launchpad.net/ | Get the code: https:/​/​dev.launchpad.net/​Getting [13:34] jkakar_: hi [13:36] Hiya jml! === jkakar_ is now known as jkakar [13:37] jkakar: how's things? [13:39] jml: Going really well, thanks. I'm sprinting in Barcelona, so it's been an exciting week. Just got back from lunch. [13:39] jml: How about you? [13:40] jkakar: well. bit of a cold this week but otherwise fine. slowly mastering the art of the automobile [13:41] jkakar: you coming to London any time soon? [13:44] (also, yay sprinting) [13:47] jml: Driving, oooh, fun times. :) [13:47] jml: Will be in London in a couple weeks, yep. [13:48] all confirmed? [13:57] bloody windmill [13:58] bigjools, ? [13:58] it hangs when I run it locally, which means my test run never completes [13:59] ah, not fun. That is new, I don't think anyone has mentioned that yet [13:59] did Deryck kill the windmill suite? [13:59] (yet?) [13:59] never mind Deryck, I want to kill it :) [13:59] heh [13:59] bigjools, I should ask: is this problem new? [13:59] speaking of which... [13:59] jml, your @skiptest decorator is the big win for us there [14:00] the build is still broken, failing with a windmill test. I suspect a fix like http://pastebin.ubuntu.com/533852/ might be needed [14:00] mars: I'm not sure :( [14:00] it only happens on one of my boxes [14:00] mars: wasn't mine, I don't think [14:01] * jml doesn't actually know anything about windmill, that paste is just what deryck did last time [14:01] jml, that fix didn't land? [14:02] mars: it landed. a different test is failing. [14:05] jml, if the needed fix is similar to what you posted, then it will have to be applied by inspecting the test for races caused by missing timeouts [14:06] mars: make sure you pass that on to whoever sets about actually fixing it. [14:06] sure, I can do that [14:07] Deryck's windmill fix has not landed [14:08] well, I guess we'll look at the bug filed for that particular breakage and find out why === matsubara is now known as matsubara-lunch === almaisan-away is now known as al-maisan [14:46] jml: is it only you and me today on The Strategerie? === jelmer_ is now known as jelmer [14:56] flacoste: https://bugs.launchpad.net/launchpad-foundations/+bug/681770 [14:56] <_mup_> Bug #681770: Failure in lp.services.job.tests.test_runner.TestTwistedJobRunner.test_timeout [14:57] jml: lost connection? === matsubara-lunch is now known as matsubara [15:26] would it be evil to use a storm validator to auto-update a different field? === salgado is now known as salgado-lunch [15:45] oh dear, it's not good when the same class name appears twice in a test file is it ... === beuno is now known as beuno-lunch [16:02] flymake! pyflakes! happiness! [16:02] pyflakes didn't detect it [16:03] I only noticed because on of my new tests wasn't getting run [16:03] one* [16:03] really? [16:03] it gives a warning here for one of the two declarations [16:03] hmm [16:03] bigjools: if so, that's a bug I'm going to fix right now. [16:04] I wonder if I've got an old vim pyflakes [16:06] can someone please look at this, I've got a test failure that I cannot fathom. It's totally unrelated to my changes yet reverting them makes the test pass. http://pastebin.ubuntu.com/536736/ [16:08] bigjools: It must trigger a database flush or something.. [16:09] bigjools: my bet is that the fact you've changed builderok into a property is the culprit [16:09] jelmer: indeed - but how is that affecting whether something else is unicode? [16:10] oh, I wonder if it hits the DB and gets converted [16:10] bigjools: Yeah, that's what's probably happening. [16:10] that's nasty [16:10] thanks jelmer [16:11] jml: bin/lint.sh does not show the duplicated clas [16:11] s [16:11] see lib/lp/buildmaster/tests/test_builder.py [16:11] bigjools: I don't use or care about lint.sh [16:11] TestBuilder is declared twice [16:12] yes but vimflakes doesn't see it either - what do you care about? [16:12] pyflakes [16:12] that does not see it either [16:13] pyflakes lib/lp/buildmaster/tests/test_builder.py [16:13] nowt [16:13] I see. [16:13] * jml fixes [16:16] jelmer: heh - we both missed the point of the test - the values should be unequal. The unicode was a red herring. [16:17] argh, I see [16:17] bigjools: it was a database flush that was causing the issues though? [16:18] I don't know [16:18] fg [16:27] /home/jml/src/launchpad/devel/lib/lp/buildmaster/tests/test_builder.py:127: redefinition of class 'TestBuilder' from line 89 [16:27] \o/ === salgado-lunch is now known as salgado [16:35] lp:~jml/pyflakes/duplicate-class-defs if anyone wants to use it. [16:35] http://divmod.org/trac/ticket/3034 if you care about upstreaming [16:37] * bigjools claps jml [16:38] jml: that was quick! [16:39] jelmer: pyflakes is really easy to patch [16:39] particularly after the first patch :) [16:40] jml: I tried to merge the latest trunk into the bzr lazy_import branch at one point and gave up. [16:40] oh yeah. they changed it quite significantly recently to use ast or something [16:41] still structured the same but quite different textually [16:46] jelmer: I found the problem [16:46] Builder.selectBy(builderok=True) [16:47] ah, a select on a non-storm property? [16:47] yeah [16:48] confusing error then.. [16:48] the selectBy doesn't break! [16:48] it just returns nothing === beuno-lunch is now known as beuno === matsubara is now known as matsubara-afk === al-maisan is now known as almaisan-away [17:12] who wants a Friday afternoon vaguely on-topic distraction? [17:12] I have pretty pictures [17:12] http://people.canonical.com/~jml/lpstats/good-and-bad-by-time-bar.png [17:12] http://people.canonical.com/~jml/lpstats/how-many-tests-are-slow.png [17:13] * bigjools needs one of those [17:13] not a metric? :) [17:13] right [17:14] it *could* be a metric, but the numbers don't quite add up and I haven't figured out why [17:14] kidding - slightly. What's the colours/numbers measuring? [17:14] the colours are ... bands of test run time [17:15] e.g. tests that take under a second to run, but over 0.1s are green in both graphs [17:15] right, so it's a distribution [17:15] http://people.canonical.com/~jml/lpstats/good-and-bad-by-time.png and http://people.canonical.com/~jml/lpstats/good-and-bad.png are different versions of the same respective data [17:15] bigjools: yes [17:15] is it easy to change to a line graph? [17:15] bigjools: one distribution is by number of tests within that band [17:15] might be easier to interpret [17:16] bigjools: the other is by time taken by tests in that band [17:16] bigjools: I think the bar graphs are close to what you mean by line graphs [17:16] unless you mean something like http://people.canonical.com/~jml/Tests-finished-each-minute.png [17:17] I've only ever seen distribution graphs done as a curvy line, usually looking like a bell :) [17:17] they are frequently done as bars, particularly for logarithmic distributions [17:18] (i.e. http://people.canonical.com/~jml/lpstats/good-and-bad-by-time.png and http://people.canonical.com/~jml/lpstats/good-and-bad.png) [17:18] or maybe I meant e.g. [17:18] but then it's Friday afternoon, I've had no sleep from watching too much cricket, and I need a beer [17:18] hah [17:19] apart from that I feel quite lucid [17:19] anyway, the rough conclusion is that the tests that take over a second make up a small fraction of the tests by number [17:19] (~2000 / 12000) [17:20] I bet we could make those 1 second or under tests faster [17:20] but make up the majority by time [17:20] (~8000 / 10000) [17:20] bigjools: we could, and that would be great, but the graphs basically say that if we _only_ did that, it wouldn't matter much. [17:22] maybe [17:22] if we took the test suite as it is now, and ran the fastest tests first, those taking under a second would finish in the first half hour, the remaining time would be spent in the ~15% of the tests that take over a second [17:22] let's just delete them all [17:23] btw how do doctests fit in this? [17:23] are they one test or lots of tests? [17:23] each doctest is counted as one test. [17:24] I bet those 15% are largely doctests :) [17:24] (including pagetests) [17:24] in fact the latter are slower than an Aussie outfielder [17:24] data is gathered from: ./bin/test --subunit | subunit-ls --times --no-passthrough | sed -e 's/ /,/' > test-runtime-data.csv [17:24] hah [17:26] nice analysis though [17:27] ditching pagetests gets more weight! :) [17:32] bigjools: fwiw, of the ~1500 tests that take over a second, 574 are doctests [17:33] oh, wow [17:33] 315 of those are pagetests (rough count) [17:33] I expect manty of the others are soyuz uploader tests [17:34] I did this: gzip -dc /home/jml/Downloads/testtools-experiment-r11753.subunit.gz | subunit-ls --times --no-passthrough | awk '{ print $2 " " $1 }' | sort -n > test-run-times [17:34] then used emacs to chop out all of the sub 1s tests [17:34] then wc -l test-run-times, grep -c _txt test-run-times and grep -c ' [0-9x][0-9x]' test-run-times [17:35] bigjools: slow unit tests, ordered by time: http://pastebin.ubuntu.com/536769/ [17:36] some obvious suspects [17:37] bigjools: by name: http://pastebin.ubuntu.com/536771/ [17:37] heh [17:38] test_all_scripts makes me weep [17:38] of course, subunit encodes layer start up as a test :) [17:38] it's duplicating tests done elsewhere [17:38] 82.739 gina_txt [17:38] 86.680 soyuz-upload_txt [17:38] the shame [18:07] abentley, any idea what's with the list of 'properties changed' messages in the diff at https://code.launchpad.net/~salgado/launchpad/expose-blueprints/+merge/41898 ? [18:08] g'night all. [18:08] have a good weekend [18:09] abentley, looks like a bug in the incremental diff thing? [18:09] salgado: No, they're new to me. [18:09] salgado: Yes, definitely that. [18:13] abentley, can you look into that or do you want me to report a bug and/or complain on the ML? [18:14] salgado: please file a bug. [18:14] salgado: I will investigate, but it needs tracking. [18:16] abentley, https://bugs.launchpad.net/launchpad-code/+bug/681885 [18:16] <_mup_> Bug #681885: Spurious 'properties changed' line on incremental diffs [18:17] thanks for investigating [18:27] salgado: So I think there's a bug in bzrlib that makes the execute bit of directories and symlinks handled differently for RevisionTrees and PreviewTrees. For RevisionTrees, it's False and for PreviewTrees, it's None. [18:29] salgado: This bug will only be exercised if you merge from trunk or your prerequisite branch, but we certainly want you to be able to do that. [18:30] oh, right, that makes sense. the busted diff is the one which includes a merge from trunk [18:30] salgado: I'm going to see if the same thing happens with merge --preview. [18:44] flacoste: I'm confused about the recent changes to the release process, and lifeless's proposal and how they would affect the PQM closure window. [18:45] abentley: let's have a call about it in 30 minutes? [18:45] flacoste: great! === matsubara-afk is now known as matsubara [19:23] abentley: i'm on mumble [19:39] in launchpad, is there a preference in naming methods when getting latest items, like IPersonPublic.latestKarma compared to IPersonPublic.getLatestMaintainedPackages? [19:40] the former could've been named getLatestKarma or the latter named latestMaintainedPackages, so I'm wondering if there's a general preference... and a motivation would also be nice :) [19:40] cr3, the former is not an appropriate method name in Launchpad -- methods must be named after verbs [19:42] salgado: awesome, I'm pleased so hear that methods should start with active verbs [19:43] in general we have good coding/naming standards in Launchpad. the only problem is that we don't always follow them [19:45] salgado: no worries, this innevitably happens in projects when they become very large even with the best of intentions [19:46] salgado: for example, I can imagine having to define my own oauth classes to be used by the python oauth module which has different naming conventions, and then having those same conventions leak into the rest of my code. [19:47] in those cases, I usually duplicate method or attribute names at the end of my class definition with a comment like: # Compatibility with oauth module [19:49] * lifeless thinks that this is noise and overspecified in launchpad [19:51] lifeless: what's noise and overspecified exactly? naming conventions or duplicating names for compatibility purposes? [19:51] both [19:52] lifeless: I'm not sure I follow, what's noisy about naming conventions? [19:52] the former is more to remember to meet 'ok to land' which adds little if any actual value; the latter is extra code which makes backtraces longer, will confuse folk that actually use the real module when analysing your code [19:58] lifeless: I'm not sure I agree but I'll admit that the importance of naming conventions is mostly a matter of taste, so open to pointless debates like vim vs emacs, but I happen to find value in following conventions for consistency purposes which gives me pleasure when using interface that are predictable [19:59] I think there are several reasons I don't find that [very] valuable [20:00] firstly, its an all or nothing: either you can completely confidently guess at the right thing, or you need to do a search & read docs. [20:01] even in small programs there is often enough nuance needed that the obvious thing isn't necessarily the right thing. [20:01] secondly, unless you completely ban all external code (which is a bad idea for so many reasons), you have to work on multiple code bases when fixing and refactoring. [20:02] Its extremely rare to be able to consume a component and *never* find a bug or issue in it that needs fixing. [20:05] I do find value in contracts - e.g. in the context manager contract [20:05] that can be argued as a consistency thing, but I think its more reuse. [20:06] Its not 'same style', its interface substitutable [20:07] lifeless: contract definately has value [20:12] mars: is there a reason that we didn't disable domain hashing in our google analytics tracker code? [20:13] mars: setAllowHash [20:14] mars: if i read http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html#domainSubDomains correctly we should be using it [20:14] otherwise, it means that we are overestimating visitors as each visitor to a different subdomain is considered different [20:44] flacoste, I wasn't aware of that option [20:44] mars: ok, i'll land the fix [20:46] flacoste, thanks. I haven't seen that option before - IIRC I read the help docs, but not the tracking setup docs [20:54] flacoste: did you see the apache pain ? :) [20:55] lifeless: yes, it was a deeper issue than i thought, but i'm glad that we have a fix through mod_rewrite [20:55] flacoste: we do? [20:55] flacoste: we left it unfixed.. [20:55] lifeless: [B] [20:55] it seems that will work, no? [20:55] flacoste: not in our testing [20:55] [P,B] [20:55] it mangled the / [20:56] ! [20:56] wow [20:56] that sucks big time [20:56] GET /57533044/foo+bar.txt?token=48 [20:56] wrong due to + [20:56] would setting the header in the librarian, bypass this? [20:56] (as we wouldn't have to use GET /57533044%252ffoo%252bbar%252etxt?token=488 [20:57] flacoste: the content encoding header is orthogonal [20:57] flacoste: it corrupts 404s, it doesn't cause them. [20:57] AFAICT [20:57] why is it working in the other setup? [20:57] flacoste: its not working anywhere is it ? [20:58] flacoste: define 'it' :) [20:58] well, it works when we disable the feature flag [20:58] the librarian isn't used then [20:58] we are able to retrieve these files now [20:58] doh, of course [20:58] with the flag off, the appserver serves it using the internal librarian port to obtain the content [20:58] it works because we are serving this content from the app server [20:58] right [20:58] missed that [20:59] so the only fix is either fix apache or change front-end for the restricted librarian? [20:59] of course, with the flag off kees has a script that gets 503 timeouts so often it takes hours to download security debs to check :( [20:59] lifeless: we could turn the feature flag on for kees :-) [20:59] flacoste: we could try to reverse engineer which things will be decoded by apache and match those rules in the librarian. [21:00] but that seems spectacularly fugly. [21:00] yeah [21:00] flacoste: folk are still commenting on this cluster of bugs in apache this year. [21:00] even though they are marked variously 'wontfix' and 'fix released' [21:00] how did tom feel with switching front-end? [21:00] there may be some dark art to make it work. [21:00] we didn't talk in detail about it [21:01] apache is a known quantity, and there is a feeling that it adds some security vs running (whatever) backend service live on the interwebs [21:01] I'm not having whatever backend service terminal SSL :-P [21:01] s/terminal/terminate/ [21:01] elmo: I was thinking squid [21:02] well [21:02] I don't believe this is intractable [21:02] elmo: I wouldn't want the complexity of SSL in the librarian code - shudder. [21:02] U1 ran into similar rewrite escaping issues and were able to work around it [21:02] elmo: I thought they did, but I couldn't find the resolution [21:02] I'd like to explore fixing or working around apache and at least filing bugs about it's broken behaviour further before we seriously consider abandoning it [21:03] elmo: certainly [21:03] elmo: could you find what U1 did to address this? [21:03] lifeless: right now? no, but I'll have a look [21:03] thanks [21:04] elmo: in terms of fixing apache [21:04] I linked to one insightful comment from apache upstream [21:04] apparently it does a escape decode very early in its processing pipeline [21:04] before mod rewrite or mod proxy get close to the request === matsubara is now known as matsubara-afk [21:05] I guess adding a request variable at that point to save the original value and pass it down might help. [21:27] Um ... [21:30] I think it is getting too late for me ... [22:40] The DB config is far more duplicated and evil than I could ever have imagined :/ [22:42] wgrant: looking at my branch ? [22:42] lifeless: Yeah, I've fixed it. [22:42] wgrant: I'd like to nuke the canonical.lp.dbhost etc [22:42] wgrant: I just didn't want to make the branch bigger [22:42] lifeless: Yes... [22:42] wgrant: what did I have wrong? [22:43] lifeless: The db_options option parser thing used to set canonical.lp.dbname. But you removed that when you turned it into a function. [22:43] Also, you missed two references to canonical.lp.dbname. [22:44] lifeless: I've made db_options set lp.dbname_override, which lp.get_dbname() now consults. Any less horrific suggestions? [22:49] seems fine [23:32] wgrant: want me to land it ? [23:37] lifeless: Please do. [23:37] make check runs OK now, until it hangs as it does on devel. [23:37] So ec2 should be happy. [23:37] wheres your fix? I'll pull into my branch [23:37] lifeless: lp:~wgrant/launchpad/databasefixture [23:45] how do you get other people to get emails on ec2land ? [23:46] ec2 land, I don't know. [23:46] ec2 test takes a -e option. [23:46] ah [23:46] well, I've ec2landed it [23:46] will forward you the epic failure, should there be one, tonight [23:46] Hopefully it won't be necessary! [23:46] Thanks. [23:49] also \o/ the site message is gone [23:49] hopefully we'll see less noddy bugs on lp itself. [23:49] Yep. [23:50] i have a reasonable query implementation in my head now [23:50] need to write it up [23:54] its away