=== wgrant changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 238 - 0:[######=_]:256 [00:36] sinzui: Did you typo your MUA's display name? [00:36] You've lost your capital "c" [00:40] sinzui: Nice presentation. [00:57] wgrant: ? [00:57] i filed https://bugs.launchpad.net/launchpad/+bug/812597 [00:57] <_mup_> Bug #812597: gina imports from debian arrive too slowly < https://launchpad.net/bugs/812597 > [00:59] poolie: It would only be 7 hours if Debian decided to shift their publishing schedule to right after gina runs. [00:59] They still only publish every 6 hours, AFAIK. [01:00] i see [01:00] and we're pretty sure we're in sync with that? [01:00] It requires checking [01:00] The current schedule was devised to run just after they published. [01:00] But they like to change. [01:00] Without telling anybody. [01:13] Doesn't Debian have a push-mirror feature for some mirrors that runs right after publication? Could one host a mirror, and then use post-mirroring hooks to call gina at the right times? [01:14] wgrant: The amount of QA to do makes me sad. [01:58] hmm... is there any way to test emails on qa staging? [01:59] yes [01:59] for in you need losa to run the script by hand [01:59] for out you also need to run the relevant script by hand [02:00] but then you can access the shared mailbox to see what was sent out [02:02] sinzui: Anything to watch out for in oneiric atm? [02:02] dev/run, ecryptfs were fragile recently, may not be totally sorted yet [02:02] wgrant: what presentation ? [02:03] lifeless: sinzui's velocity presentation from the Prague epic. [02:03] ah yes [02:03] +1 [02:03] I use LUKS rather than ecryptfs, because it's flaky and slow. [02:04] lifeless: Ok, I would like to get a notification of a tag change from a bug. What scripts do I need to run? Is there a wiki page for this? [03:12] StevenK: QA! [03:12] wgrant: I have a better idea. LUNCH! [03:12] I was just doing a pre-lunch QA check myself. [03:12] I shall update mawson now. And then break for lunch. [03:13] Thanks. [03:13] Huh. [03:13] Julian used one of Job's YAGNI columns. [03:13] Indeed [03:14] which one ? [03:14] requester [03:39] Hm. [03:39] Has someone decided to show the battery indicator at all times in oneiric? :( [03:39] * wgrant blames thumper. [03:39] heh [03:39] wgrant: not me though [03:39] but at least I have a battery indicator now [03:39] Bah. [03:49] thumper: global menus fixed yet? [03:49] nah mate [03:50] * wallyworld sad [03:55] wallyworld: Hm, we have a picker regression. [03:55] ? [03:55] https://qastaging.launchpad.net/launchpad/+filebug, the "Assign to" picker has quotes around the text. [03:55] Not there on prod. [03:56] Yippie, build fixed! [03:56] Project db-devel build #731: FIXED in 5 hr 31 min: https://lpci.wedontsleep.org/job/db-devel/731/ [03:56] Normal bug assignee pickers are OK. [03:56] https://code.launchpad.net/~wallyworld/launchpad/picker-displays-null-812253/+merge/68318 should fix it [03:56] wgrant: How do you suggest I QA r13455? [03:57] StevenK: Reject a delayed copy. [03:57] wallyworld: Ah, great. [03:57] That means I need to create one [03:57] StevenK: Easy enough to do. [03:57] And delayed copies make me cry. [03:57] Yes [03:58] wgrant: So copy something from the soyuz-team P3A to somewhere else? [03:58] StevenK: Something that's not already public, yes. [03:58] * StevenK digs [03:59] Why is syndaemon enabled by default :/ [03:59] How stupid. [04:08] Delayed copy of launchpad-dependencies - 0.39 (source) [04:09] Good enough === almaisan-away is now known as al-maisan [04:11] wgrant: But I can't find that delayed copy using queue? [04:14] Yippie, build fixed! [04:14] Project devel build #898: FIXED in 5 hr 34 min: https://lpci.wedontsleep.org/job/devel/898/ [04:17] StevenK: You'll have to get the ID manually, I guess. [04:17] Hopefully that will work. [04:22] wgrant: scripts/ftpmaster-tools/queue reject -s hardy -Q accepted 2752292 worked fine [04:22] Running: "info 2752292" [04:22] Item 2752292 is in queue REJECTED [04:28] Great. [04:28] qa-ok, I s'pose. [04:28] Already done [04:31] * StevenK kicks bigjools for the fun that is r13459 [04:31] StevenK: It is flagged. [04:32] Then what's left? [04:35] lifeless: LXC works fairly well in oneiric. [04:35] With most of those bugs fixed. [04:35] StevenK: Check that the methods don't work, I guess. [04:39] wgrant: For r13459? [04:40] Yes. [04:41] And lib/lp/soyuz/interfaces/archive.py contains the generic exception ForbiddenByFeatureFlag. [04:42] Fail. [04:42] Did somebody break the JS build again? [04:42] Oh? [04:43] Ah, no, I just killed buildout in a bad place. [04:46] wgrant: I'm hoping my sudo bug is fixed [04:48] lifeless: Not sure. [04:52] StevenK: Erm. [04:53] wgrant: Hm? [04:53] StevenK: [DOGFOOD] [PPA stevenk] [ubuntu/hardy] launchpad-dependencies 0.39 (Rejected) [04:53] There was a blamer. [04:53] Or SPR creator, possibly. [04:53] flacoste: [04:53] That is the creator [04:54] wgrant: Neither copyPackage{,s} appears in the API on dogfood for devel :-( [04:56] StevenK: You'll probably need to force it to rebuild the WADL [04:56] StevenK: But this is to be tested on qastaging. [04:56] Oh, easy fixed [05:00] wgrant: On qas, I get a 403 calling IArchive.copyPackage() [05:01] Good. [05:02] Ah yes, the exception is 403 [05:02] Shall I qa-ok it? [05:08] StevenK: Might as well. [05:17] GAVIN! [05:18] (The 3 branches linked to bug 809786) [05:18] <_mup_> Bug #809786: Need to filter by package-set on DistroSeries:+localpackagediffs < https://launchpad.net/bugs/809786 > [05:18] 518 lines, 4720 lines, and 2878 === al-maisan is now known as almaisan-away [06:12] Curious. [06:19] StevenK: Hm? [06:20] wgrant: I finally got +localpackagediffs to load, but I can't tell what Gavin changed/fixed [06:20] StevenK: It was pure refactoring that's landed so far, AFAICT. [06:20] All 6000 lines of it [06:24] wgrant: So qa-untestable? [06:25] Probably. [06:25] wgrant: So the only thing left is Danilo's revision of doom === jam1 is now known as jam [07:48] good morning [07:50] morning all [07:50] I'm trying to understand an LP api timing. I could have sworn I was doing the same request last week, and it was returning in 100-200ms. [07:50] hi jam, hi adeuring! [07:50] But this week it is more like 700-1000ms [07:50] hey jtv [07:50] is there any way to debug these sort of things? [07:50] hi jtv [07:51] jam: What sort of request? [07:51] Can we use ++profile++ on API requests? [07:51] jam: 100-200ms is rather quick for LP. [07:51] jtv: Possibly... ++oops++ doesn't work, since it only executes when the template renders. [07:51] wgrant: getPublishedSources [07:52] jam: Let's see. [07:52] Everything should be faster this week :( [07:52] That's on Archive? [07:52] Could be distroseries. [07:52] Or distribution. [07:52] I guess. [07:52] StevenK: Thanks for looking at the changes to +localpackagediffs. As long as it loads, it's fine. The changes so far are almost all moves and shakes. [07:53] allenap: GAVIN! *Scary* branches! RARGH! [07:53] allenap: But yes, it at least loads [07:53] wgrant: https://api.launchpad.net/1.0/debian/+archive/primary?distro_series=%2Fdebian%2Fsid&exact_match=true&pocket=Release&source_name=%22bzr%22&status=Pending&ws.op=getPublishedSources&ws.size=1 [07:54] Archive [07:54] Yuck. "clauses.append("SourcePackageName.name LIKE '%%%%' || %s || '%%%%'" % quote_like(name))" [07:54] But this is exact_match. [07:54] So that should be skipped. [07:54] (it also shouldn't exist at all, but such is Soyuz) [07:54] Do we actually know we're looking at the archive code, actually? [07:55] Yes. [07:55] debian/+archive/primary [07:56] jam: Render time is just about identical compared to 1.5 weeks ago. [07:56] jam: Do you have any hard data to support the slowdown? [07:57] The only recent direct change in that piece of code was in June, where it looks like multi-name matching was introduced. But that should barely touch the exact-match code path. [07:58] Unless the thing gets passed some kind of placeholder that acts like a string but isn't of type str or unicode, but I don't really know whether that's possible or whether it would work if it was. [08:01] AND SourcePackageName.name = E'bzr' AND [08:01] Good morning [08:01] From using that URL locally. [08:01] morning al [08:01] l [08:03] wgrant: I know I did timing tests last week, and had some perf tests. [08:03] but no, I don't have very hard data. [08:05] wgrant: take that back, I have my .bzr.log [08:05] from today: 6.778 LatestPublication.get_latest_version took 1.524s [08:05] Oh, this is for the checking if the branch is up to date thing? [08:05] from last week: 7.974 LatestPublication.get_latest_version took 0.214s [08:05] wgrant: yep [08:05] Have you moved to Australia lately? [08:05] so the ones I was testing before is "ubuntu/natty/bzr" [08:06] Oh. [08:06] That's a bit different :) [08:06] but that is still slow [08:06] 700ms orso [08:06] :( [08:06] jtv: Storm contains a Like operator that might spell that better if you are coding nearby. [08:06] just tested now 939ms [08:06] stub: I'm not, but that's part of what made me nauseous. [08:07] It's even easier than Like; IIRC you can use the regular str methods such as startswith. [08:07] There's one for "contains" as well. [08:07] I recently used .contains() [08:07] wgrant: with bzr.dev tip, you can run this script: http://paste.ubuntu.com/647087/ [08:07] even better [08:07] wgrant@carob:~$ time curl -H 'Authorization: there is none' 'https://api.launchpad.net/1.0/debian/+archive/primary?distro_series=%2Fdebian%2Fsid&exact_match=true&pocket=Release&source_name=%22bzr%22&status=Pending&ws.op=getPublishedSources&ws.size=1' -s -o /dev/null [08:07] real 0m0.253s [08:08] (python latest_version.py ubuntu natty bzr) [08:08] Someone went to the trouble of coding up a hybrid storm/sqlobject method so that they could write up that horrible LIKE clause. [08:08] jtv: Can you point out the method so we can have it shot? [08:09] jam: So, it takes around 250ms from the DC. [08:09] StevenK: Archive.getPublishedSources [08:09] jam: For natty it's down around 150ms, as expected. [08:09] Since there's a lot less data. [08:09] StevenK: please don't shoot that one [08:09] (this isn't exactly optimised) [08:10] It deserves it. [08:10] wgrant: I'm seeing 600ms in "_ssl.sslwrap" is that the SSL handshake ? [08:10] jam: I assume so. [08:10] so that is very different from last week, I believe [08:11] Sure your connection latency doesn't suck? [08:11] wgrant: I'm in Netherlands [08:11] ping says 36ms [08:11] How long does the curl I listed above take? [08:12] 321ms I believe [08:12] And then try a couple of times without the Authorization header. [08:12] (the presence of even an invalid one gets it past Squid) [08:13] wgrant: but that is because curl fails immediately with "SSL FAILED" [08:13] morning bigjools! [08:13] Helpful. [08:13] hello jtv [08:13] jam: want to meet up later this week? [08:13] but I can pass -s, I guess [08:13] I still don't get any output to tell if it is working [08:14] jam: Well, probably better to make it work rather than ignoring the error... [08:14] :) [08:14] I wasn't sure what -s did [08:15] apparently it is --quiet not "--ignore-certificate" [08:15] wgrant: with -k instead of -s, I get 892ms [08:15] I get no cert error locally or on carob. [08:15] wgrant: launchpad isn't in my cacerts [08:15] -k works fine for testing [08:15] Mine are stock Natty. [08:17] so, still the same time for a successful request, about 900ms, which could be 600ms in ssl handshaking [08:17] which is definitely slower than last week [08:17] I don't know why [08:18] is there a graph/monitoring of ssl stuff? [08:20] Internally it's fine. [08:23] wgrant: right, so from devpad, I see 148ms [08:24] 900ms from 150ms away [08:24] So 650ms overhead, which is about four ways... [08:24] wgrant: I'm 38ms away by "ping" [08:24] so 17 round tirps [08:24] trips === almaisan-away is now known as al-maisan [08:26] Odd. [08:26] Still, fine in and next to the DC. [08:26] So I am tempted to blame your machine/connection. [08:27] .nl hasn't imposed a Great Firewall lately? :) [08:33] :( [08:33] zope.app.testing fixed their Referer default. [08:34] So 350 or so tests fail with OffsiteFormPost errors. [08:47] vila: can you try the query from France? [08:47] otm [08:47] time curl -k 'https://api.launchpad.net/1.0/debian/+archive/primary?distro_series=%2Fdebian%2Fsid&exact_match=true&pocket=Release&source_name=%22bzr%22&status=Pending&ws.op=getPublishedSources&ws.size=1' -o test.txt [08:48] jam: real 0m0.532s [08:48] (from Paris) [08:49] rvba: Is that after a couple of tries? [08:49] real [0m0.362s - 0m0.532s] [08:49] wgrant: that's the range I get [08:50] After a couple of tries: real 0m0.344s [08:50] That's a bit better. [08:51] wgrant: of course *right* now it just dropped to 300ms, but now curl varies from 300-953ms [08:52] and it still is taking 700+ from python [08:53] which still doesn't get close to the 150ms from last week [08:55] Was this on the same machine in the same environment? [08:55] yes [08:55] actually, the only difference offhand is that now I'm on a wired connection to my router, while last week I was on wireless [08:56] I guess it was 200ms last week, which is close to 300. [08:56] the variability is surprising [08:56] and last week was python, not curl [08:56] I get 50ms from squid. [08:57] Which sucks, but it's always within 1ms. [08:57] what do you mean by "from squid" ? [08:57] We have a proxy in front of the appservers [09:00] StevenK: sure, but is he saying bypassing the squid proxy, the appservers respond in 50ms [09:00] or from the squid machine [09:00] or he gets 50ms making a request to squid without an appserver [09:00] No, he is saying that squid replies in 50 [09:00] 50ms to get the copy that squid has cached. [09:00] ie. after requesting a few times without Authorization [09:03] wgrant: my requests also were without auth, but you're saying from where to squid? [09:03] carob to squid [09:03] Via the usual HTTPS frontends [09:04] wgrant@carob:~$ time curl 'https://api.launchpad.net/1.0/ubuntu/+archive/primary?distro_series=%2Fubuntu%2Fnatty&exact_match=true&pocket=Release&source_name=%22bzr%22&status=Pending&ws.op=getPublishedSources&ws.size=1' -s -o /dev/null [09:04] real 0m0.050s [09:04] (Debian is, unsurprisingly, identical) [09:05] sure. Though that just dropped as well [09:05] it was 150ms for me when I first reported devpad numbers [09:05] even running a couple of timse [09:05] times [09:06] wgrant: so I still think there is something that is slowing queries down, that magically disappeared in the last hour [09:08] eg, we're missing some monitoring somewhere that would tell us something is going on for people actually getting a much slower launchpad [09:09] Even in front of squid? [09:09] wgrant: I ran the same query, and it was 150ms from devpad to api.launchpad.net [09:10] Hmm. [09:10] I think I managed to provoke squid to skipping just now, and I got 400ms [09:10] (that was to debian, though) [09:11] but I'm playing with setting Authorization, and I'm getting 50ms [09:11] jam: first try: 1.355s real, then 0.249s, 0.199s, 0.194s, 0.189s , 0.198s [09:11] so it sounds like squid doesn't actually pay attention to it. [09:11] vila: right, so those sound like cached and uncached responses. [09:11] further tries stabilize at 0.200s [09:11] and arguably we should be really counting the uncached values as our user-experience. [09:11] we might need to put this behind a flag [09:13] vila: I couldn't figure out what you meant by OTM, on-the-mumble? [09:13] jam: yeah :) [09:13] jam: Apache is configured to send anything with Authorization or Cookie straight to haproxy, not squid, AFAIK. [09:13] wgrant: tell that to my curl results :) [09:14] though I could be typing something wrong [09:14] ah, Authentication not Authorization [09:14] my bad [09:15] right, that does bypass it [09:15] that's 479ms stabilizing to 230ms on carob bypassing squid requesting debian urls [09:15] which is hopefully worst-case in DC times [09:16] I clicked "Build now" on https://code.launchpad.net/~testing-cabal/+recipe/testtools-daily and get what looks to be a JS alert saying "Server error, please contact an administrator" [09:16] what's going on? [09:21] wgrant: ok, this is weird. curl is going to 91.189.89.224, but python is going to 91.189.89.225 [09:21] and *that* seems to be the difference in timings [09:22] it is "banana" vs "nutmeg" [09:22] Yes, they are two frontends [09:22] StevenK: any idea why banana would be 300ms slower than nutmeg? [09:24] Both 50ms cached... [09:25] And both 200-250ms uncached. [09:28] stub: hi [09:29] lifeless: hi [09:29] stub: I thought I'd touch base on 'kick connections out and keep em out' implementation choices [09:34] anyone got any ideas on where to look to investigate why an api method I added is not available over the wire to dogfood? It's in dogfood's WADL but launchpadlib says "'Entry' object has no attribute ...." === gmb changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: gmb | Critical bugs: 238 - 0:[######=_]:256 [09:35] wgrant: how do you get curl to target a server? [09:35] can you just do the IP address, or are they vhosts? [09:36] (I get ACCESS DENIED going to the IP address.) [09:36] jam: They're vhosts on special IP addresses. [09:36] time curl -H 'Authorization: blah' -H 'Host: api.launchpad.net' 'https://91.189.89.225/1.0/debian/+archive/primary?distro_series=%2Fdebian%2Fsid&exact_match=true&pocket=Release&source_name=%22bzr%22&status=Pending&ws.op=getPublishedSources&ws.size=1' -k -o /dev/null [09:39] wgrant: thanks. So bypassing SQUID going to ubuntu/natty I get a reliable 470-530ms to either server (nutmeg or banana) [09:41] and without Authorization, I get 330-360 from curl [09:41] so something about python is provoking something [09:46] lifeless: I think we are shutting down pgbouncer, which kills all the connections with 'connection terminated unexpectedly' exceptions and future connection attempts will timeout as nothing is listening. The 'suspend' and 'pause' don't terminate the active connections and ignore the 'fail if unable to login in this many seconds' parameter. [09:46] stub: ok [09:47] stub: So we'll need the test fixture to be able to shut down and bring back the one config; I'll add that into a 0.2 tomorrow if noone else gets to it [09:47] lifeless: I don't know if you'll get chance, until your tomorrow, but I've replied to your review of https://code.launchpad.net/~gmb/launchpad/bug-491886/+merge/68174. [09:48] lifeless: We want a pgbouncer test fixture? [09:48] stub: we have one [09:48] stub: the project I put together on Monday [09:48] stub: so we can test this well - we don't need the whole test suite to use pgbouncer, just the tests for interrupt & reconnect detection [09:50] Right. We used to have some disconnection/reconnection tests that used a simple twisted proxy, but this moved to Storm. We don't need to use pgbouncer if we don't want - as far as PG clients are concerned, they just have a socket. [09:50] stub: its pretty quick to bring up, and the code is written [09:51] stub: I suspect we only need 3-4 tests per daemon [09:53] lifeless: any chance you can help me debug a webservice problem on dogfood please? [09:54] I know it's rather late for you [09:54] sure [09:54] sec [09:54] gmb: reviewed [09:54] gmb: generally, I'm happy for any other reviewer to do a follow up once you consider (and action or reject) my suggestions [09:55] lifeless: Thanks, and duly noted for the future. [09:55] gmb: I don't think you need to consider the review pinned to me (unless I specifcally say I want that) [09:55] Okiedoke. [09:55] gmb: I think the try:except: looks a lot simpler :) [09:55] bigjools: whats up ? [09:56] lifeless: Agreed. I was trying to avoid the transaction.abort() but simplicity beats I-don't-want-to-have-to-deal-with-transactions. [09:56] lifeless: I added IArchive.copyPackage to the API. It's on DF's wadl/+apidoc but launchpadlib can't see it :/ [09:56] bigjools: delete your lp lib cached [09:56] bigjools: Remove your cached WADL? [09:56] GAH [09:56] this old chestnut [09:57] why why why [09:57] if it works, file a bug [09:57] I would -so- like to nuke the use of WADL, but I'm old school. [09:57] anything with XML in it reeks of shit [09:58] It lends itself so well to ridicule, though. "qas is WADLing" [09:58] gmb: oh, and the linty stuff I don't care about really, I mentioned it for completeness [09:59] yeah that worked. thanks lifeless [09:59] bigjools: file a bug ? [09:59] yeah doing so [10:00] \o/ [10:00] but on where [10:00] launchpadlib [10:00] its the thing choosing to use wadllib etc; and its the thing we need a versioned dep on to ensure a newer wadllib if thats how we fix it [10:03] could somebody help me land https://code.launchpad.net/~cjwatson/launchpad/multiarch-translations-schema? [10:04] lifeless: bug 812799 [10:04] <_mup_> Bug #812799: Local cache not updated when it should be < https://launchpad.net/bugs/812799 > [10:04] bigjools: triage it ! :) [10:04] [I suggest high] [10:04] lifeless: jeez, gimme time to fart first [10:04] bigjools: well, you're old and all, I don't know I have *that* much time to wait :P [10:05] bigjools: [seriously, when you linked it I figured that meant you'd done all you intended to on it] [10:05] lifeless: my arthritic fingers at my old age don't work as quick as that :) [10:08] lifeless: pgbouncer might help test suite race conditions tearing down/creating databases [10:08] awesome, feature flags are case-sensitive [10:08] mmm... probably not. its more pg tripping over its own feet and waiting for its internals to catch up rather than inbound connections [10:08] stub: if it could force only one connection at a time to template1 [10:09] lifeless: it could do that... [10:09] stub: anyhow, my patch for that seem to work, and we're looking at lxc for parallel in the short-medium term anyhow, now. [10:09] because there are so many similar glitches in our stack at the moment [10:09] [e.g. launchpadlib test cache dir] === al-maisan is now known as almaisan-away [10:16] cjwatson: sure. [10:22] * wgrant curses Python [10:23] Don't make backwards incompatible changes in 2.7 without a non-monkeypatch way to restore the old behaviour. [10:23] wgrant: Hm? [10:23] The default continuation whitespace character in generated email headers changed from tab to space. [10:24] And this is set in an _method of a class. [10:24] So it's not really overridable. [10:24] Yeah, python-devel seems to hate backwards compatibility [10:24] Hmm. [10:24] Ah, mercurial indeed fix it by monkeypatching. [10:24] It turns out I'm not able to land branches any more, because I'm not allowed to edit commit messages on merge proposals for Launchpad. [10:25] Yeah, the emeritus stuff isn't really set up yet. [10:25] Most people are still in ~launchpad. [10:25] Want me to land it instead? [10:26] wgrant: sure. here's the line I'm using: [10:26] ./utilities/ec2 land https://code.launchpad.net/~cjwatson/launchpad/multiarch-translations-schema/+merge/67992 --commit-text="Add include_long_descriptions column to DistroSeries to enable future work separating long descriptions out of Packages file" --no-qa [10:27] wgrant: I would like my commit access back too please [10:31] :( [10:33] shall I set the commit message in the MP? [10:33] It's done. [10:33] ec2 is almost running. [10:34] thanks [10:34] cjwatson: even if it were set, I would need privileges to edit it, since our landing tools push some metadata onto it. [10:34] * cjwatson nods [10:36] Down to 12 2.7 test failures, plus two tests that hang. [10:36] Nearly there. [10:38] \o/ [10:38] wgrant: so the plan is to switch to 2.7 ahead of the next LTS? [10:38] jml: Yes. [10:39] that'd be nice [10:39] We have a Lucid backport already, I believe. [10:39] OK, down to gratuitous difflib formatting changes plus XML-RPC rewrite. [10:39] Yay [10:40] danilos: Does the zero-width space fix the slight underline you get on hover in WebKit? [11:14] lifeless: does fixtures have a way of combining two fixtures? [11:23] wgrant: to add love to this investigation, if I do 2 api requests back-to-back in the same process, the first takes 700ms, the second 200ms. something seems really wonky about ssl.sslwrap [11:23] maybe it caches host identities or something [11:26] oh yay, is loggerhead down? [11:27] * nigelb moves to the correct chanel [11:33] jam: Hmm. [11:33] jam: It's possibly also doing OCSP or something slow like that. [11:39] jml: yes, useFixture, or the hypothetical graph stuff we've talked about vis-a-vis replacing testresources [11:40] jml: re emeritus - yes, its not setup yet; you didnt have to leave ~launchpad :P.... anyhow, getting it setup means moving stuff that references launchpad directly to reference role teams, and I don't know how long the piece of string is yet. === henninge is now known as henninge-lunch === almaisan-away is now known as al-maisan [11:56] woo, timeouts creating an MP [11:59] bigjools: The branch scanner is slow, as it has to insert like 70000 branchrevisions. [11:59] That keeps things locked for a while. [11:59] what did someone just do? [12:00] personally, I was typing. [12:00] badumtish! [12:00] :-) [12:01] StevenK's humour has been rubbing off on gary_poster [12:01] heh [12:01] I say humour in the loosest sense [12:01] yeh yeah yeah [12:01] that reflects more on him than you though :) [12:01] :-) [12:03] gary_poster: Hi. [12:03] hey wgrant. [12:06] gary_poster: Our XMLRPCTestTransport is broken in Python 2.7. getresponse now takes a buffering kwarg, and it's not trivially obvious to me how to make our stuff work with 2.7. I noticed that there's zope.app.testing.xmlrpc.ZopeTestTransport which does a similar thing in a different, 2.7-compatible way. But compared to ours, it doesn't send a Host header or preserve the original interaction. [12:06] I presuuuume we probably want to rebase our stuff around ZopeTestTransport. [12:06] But was wondering if you had any ideas. [12:06] Given your Zopey foundationsness. [12:06] heh [12:13] wgrant, in the abstract, I no longer feel that there's a huge win to trying to coordinate with the Zope community, given its ever-vanishing existence/relevance. Maybe that's unfair. [12:13] In any case, I'm in favor of a relatively attractive path of least resistance, whatever that is. If it would be relatively easy to make the Zope version do what we want, benji and I still have commit and release privs. [12:14] That could potentially get us in one of the "update the Zope world" situations, but if there has been as little activity there as I believe, that might be a non-problem. [12:14] I'm afraid I don't have anything to offer other than that ATM, though if you'd like me to dig in a bit to understand the problem you describe and have a more concrete opinion on a way forward, I'm happy to. [12:15] I'm happy to dig myself, was just wondering if you had any immediate insights. [12:15] 'fraid not. :-/ [12:17] Thanks anyway. [12:17] np [12:17] Shouldn't be too hard to sort something out. [12:17] agreed [12:22] bigjools: :( that needs to be advertised everywhere [12:22] wgrant: ? [12:23] bigjools: I'd not seen that matcher before, and it seems useful in an awful lot of tests. [12:23] yes, it freakin rocks [12:23] seriously, read the matcher docs [12:34] wgrant, yes (regarding zero-width space) [12:35] danilos: Great! [12:38] bigjools: +1000. :) [12:38] testtools in general is super awesome. === henninge-lunch is now known as henninge === Ursinha is now known as Ursinha-bbl [13:07] Morning, everyone. === matsubara-afk is now known as matsubara [13:15] hi deryck [13:35] jkakar: yes! === mbarnett` is now known as mbarnett [13:38] gmb: could I trouble you for review of an oversized refactoring? https://code.launchpad.net/~jtv/launchpad/pre-788078/+merge/68374 [13:47] Hey deryck. You know I'm excited, so please just forgive me :-) but where is the thunderdome JS test stuff? Have you started actually writing tests with it, and are you reasonably pleased with it? (I am reminded because I'm writing some JS in a module w/out tests) [13:48] gary_poster, I have sadly not got very far with it. I had one other remaining thunderdome bit which has taken all my attention.... [13:48] gary_poster, a branch for fixing bug heat. [13:48] sorry :( [13:48] deryck, oh :-( . understood. I am about to finish a bugfix branch myself, so maybe I'll race you for the last bit? :-) [13:49] deryck, if you really want to do it, that's ok. I got to play on it quite a bit [13:50] gary_poster, ok :) I hope to either resolve the heat work or turn to the js stuff while waiting on more info on the heat work today. But I'll see how it goes. [13:50] :-) k cool [13:50] gary_poster, but I'll keep you better informed on my progress, too. :) [13:50] :-) thanks for humoring me [13:52] np! [13:58] How do I get the dev server to not use launchpad.js but the single js files? [13:59] henninge, afaik there is no way. when people talk about that stuff they are talking about running YUI tests. If you discover differently, I would *love* to know too :-) [14:00] That ability was removed once we stopped using the bundled up YUI thing. [14:00] Because it ended up making 400 requests to the local appserver on each page load, which took a couple of minutes. [14:00] oof [14:00] Ah, but my memory was not wrong. [14:00] henninge: I know 'make jsbuild' isn't perfect, but it should be pretty fast. [14:00] No need for appserver restarts or anything. [14:00] Plus you should be doing TDD ;) [14:01] wgrant: no, it's about debugging the js file in the browser [14:01] lots of scrolling and searching in launchpad.js [14:01] henninge: The Launchpad bits should be unminified. [14:01] But yeah. [14:01] my concern with it is that neither chrome debug tools nor firebug handles the large file well [14:01] henninge: You can't debug in the testrunner? [14:01] trying to set breakpoints sucks in that case [14:02] hm, could try that [14:02] wgrant we have lots of legacy JS code without tests [14:02] gary_poster: Indeed :( [14:02] henninge both firebug and chrome debug let you search for a string [14:02] that's what I use [14:02] I find navigation not too bad [14:03] me, too [14:03] the debugger bugs are the killer [14:03] for me [14:04] would be cool if the file had comments with the originial file name whereever that file starts [14:04] wgrant: where is the code that creates launchpad.js? [14:05] lp.scripts.utilities.js.jsmin [14:05] thanks [14:05] Well. [14:05] That minifies it. [14:05] But the input to that is just cat run over all the files. [14:06] and the combining? [14:06] cat :) [14:06] ah [14:06] ;) [14:06] That's all in Makefile. [14:07] rm lib/canonical/launchpad/icing/build/launchpad.js; make jsbuild [14:07] Watch your screen and sob. [14:07] jtv: Sure, I'll take a look at that branch for you. [14:07] great, thanks [14:09] * henninge sobs [14:10] * StevenK sees that henninge is following wgrant's instructions [14:10] yup, always === al-maisan is now known as almaisan-away [14:55] wgrant: whee, thanks [14:56] (there's still multiarch-translations proper, but need to wait for a lucid-updates landing and sort out PPA bits first) === salgado is now known as salgado-lunch === jtv is now known as jtv-afk [15:12] jtv-afk: r=me on the kilobranch. Nice work. [15:23] Hi, how do I update my branch? My devel branch is getting a rocketfuel-get. [15:24] *my feature branch [15:47] nigelb: you merge devel (or stable) into it [15:47] ok, doing that now. === salgado-lunch is now known as salgado [15:54] nigelb: you need to commit after merging [15:54] nigelb: pretty important that you do that. [15:55] jml: oh, ok! [15:55] did windmill get nuked? [15:55] nigelb: yes. [15:55] nigelb: at the rally [15:56] that explains the conflict. === Ursinha-bbl is now known as Ursinha [16:05] where is the ideal place to put a utility function (sorting) [16:06] quick question, can I query the launchpad api using a user SSO identity URL yet, or is it still just username? [16:21] nigelb: lp.services.utils [16:21] nigelb: tests in lp.services.tests.test_utils [16:22] jml: thanks again. Where is everyone today? :) [16:22] nigelb: no idea. [16:23] jml: "byEquality" - it just gets betterer and betterer :) [16:23] bigjools: heh [16:23] nigelb: I guess we must be busy hacking or something [16:24] jml: have you got anything to do with Murdoch taking a pie to the face? [16:24] bigjools: sadly no. [16:24] lol [16:25] I wonder if I should agree to take a pie to the face. [16:25] For fixing all critical bugs before uds-p [16:25] * jml has a side bet for UDS-P. It involves drinking. [16:26] jml: In that case I'll hear that one out :D [16:26] UDS-P should of course be written as UDS :-P [16:27] :) [16:31] er, I'd like some help. [16:33] How would I generalize the sort in this http://paste.ubuntu.com/647431/ [16:33] I want to avoid the bit where I'm doing the lower() and move it to a common function. [16:33] But I'm not sure how to make it generic enough to be used everywhere [16:34] nigelb: I don't think it's worth generalizing, tbh. [16:34] nigelb: hmm. [16:34] If you had to... [16:34] jml: That's what I've been told to do. https://code.launchpad.net/~nigelbabu/launchpad/spec-sub-sort/+merge/63315 [16:34] def case_insensitive_sort(xs): [16:35] return sorted(xs, key=lambda x: x.lower()) [16:36] So, the only bit I'd avoid would be the lower() thingy. [16:36] well, yeah [16:37] I guess jtv could help throw some insight on whether that's enough. He helped with the initial review. [16:37] jtv: ping [16:38] nigelb: I don't have the willpower to read through that whole discussion... [16:38] nigelb: you could also try this: [16:38] def sort_for_display(things_to_display): [16:38] jml: Now you know why it took me this long to do this :) [16:39] return sorted(things_to_display, key=lambda x: x.displayname.lower()) [16:39] or even [16:39] def sort_for_display(things_to_display, display_attribute='displayname'): [16:39] return sorted(things_to_display, key=lambda x: getattr(x, display_attribute).lower()) [16:40] ok, ^ sounds like what's probably generic enough. [16:40] nigelb: yeah, you've got some fairly blocky reviews [16:41] It was hard to get out of that pit of demotivation I fell into after this. [16:41] nigelb: well, basically, the thing is that as long as there's a *name* for what you are trying to do, the exact level of abstraction doesn't matter. [16:41] because it'll probably change as we get it better anyway [16:41] (and the name in this case is the function) [16:42] nigelb: *nod* I know what you mean [16:42] jml: I was trying to use this function in different use cases and I couldn't abstract it will. [16:42] nigelb: ahh, ok. [16:43] *well [16:44] jml: I had to take some time off Lp dev before I could get myself back :) [16:44] * nigelb is now back :D [16:46] jml: in that above function, should x also be a parameter to the function? [16:46] *shouldn't [16:46] nigelb: no. it's the argument to the key function. [16:47] nigelb: please bear in mind that I typed it out into my IRC client, and thus am missing my usual crutches and so I've probably made a NameError or SyntaxError [16:47] I'm testing it on python shell first [16:48] good idea === cr3_ is now known as cr3 === gmb changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 238 - 0:[######=_]:256 [17:09] gmb: are you EOD-ing or was the topic stale? [17:11] Ouch, my launchpad.dev isn't working. Is anyone around to help me figure out how to get it working? [17:13] I guess I'll be back tomorrow. === beuno is now known as beuno-lunch [18:18] sinzui, ping [18:19] deryck, otp [18:20] sinzui, ok, just a question about a bug when you have a moment. === beuno-lunch is now known as beuno [19:25] hi deryck [19:26] hi sinzui. Was only wanting to ask you about bug 812790 since you guys are working on stuff related to people, pickers, etc. [19:26] <_mup_> Bug #812790: strange "no such person" popup on user-relative branch url < https://launchpad.net/bugs/812790 > [19:26] sinzui, not sure if that bug is at all related, but it seems fixed on qastaging. So wondering if the bug should be closed? [19:26] or I can't repro on qastaging anyway. [19:27] We have landed a few fixes in the last 24 hours [19:28] I do not see anything that specifically fixes it though [19:29] sinzui, ok, thanks. I'll leave as is then until we have more info. [19:57] morning [20:01] hi lifeless [20:05] hi jelmer [20:05] gary_poster: hi [20:05] hey lifeless [20:05] gary_poster: that UNION -> OR may be performance sensitive; am just reviewing. [20:05] (on call( [20:06] yah, no worries, just giving you a headsup [20:06] lifeless, wondered about that bu seemed unlikely. I can just revert that part. k [20:21] lifeless, that user_ids_affected_with_dupes code (UNION -> OR) has never been changed since it was originally written. Tempted to revert anyway. Thoughts? [20:22] gary_poster: reverting would be conservative and make qa easier [20:22] gary_poster: thats about it :) [20:22] lifeless, k, agree, will do, thx. [20:24] lifeless, "in the client side js, the limit of checking whether the task was [20:24] new seems unnecessary - isn't it reasonable to just cross check [20:24] regardless?" : [20:24] Since we don't do this generically (yet) I thought it would be surprising to update other tasks in response to saying "me too" because people might confuse coincidence with consequence. I'd be fine if we always kept statuses up-to-date with long-poll later, for instance; then we would not need this "something happened" code path at all. [20:24] For now, though, I stand by my call there. [20:25] its up to you [20:25] there are a couple of bugs I can point you at :) [20:25] where we suffer inflight collisions [particularly on the non-ajax forms] due to stale statuses [20:25] sure [20:25] but that's not what this is about [20:25] I do see your point [20:25] uhm [20:26] perhaps huw can suggest some way [in the future] for us to show 'updated by you' and 'updated by $other' [20:26] gary_poster: e.g. standing by your call is fine. [20:26] cool lifeless, thanks [20:27] gary_poster: it was only a thought in the first place; perhaps I wasn't clear enough about that. [20:27] lifeless, sure. if you didn't want us to respond to them, though, why express them? ;-) [20:28] well, I do like responses :) [20:28] I suspect I should eat before I fail-at-communication-more [20:28] well, and they are good thoughts that merit a response. so... [20:28] lol [20:30] I don't know entirely what I meant from 'it was only' .. on. [20:30] -> food [20:30] :-) [20:44] wgrant: lxc in oneiric may be better, but check out bug 802985 [20:44] <_mup_> Bug #802985: [lucid] /var/lib/dpkg/tmp.ci/preinst: 399: arithmetic expression: expecting EOF: "3.0-0-generic" lifeless, do you recommend bothering with lxc for LP right now? I've been considering it, but the page you and William have maintained makes it look pretty...fragile. [20:45] gary_poster: I have a few thoughts [20:45] I don't think that right now the incremental learning for the team is all that great from someone just running a single test suite under it [20:45] (just a vm is my other option, and what I have do noe) [20:45] now [20:46] I think its good to be familiar with lxc though, because I think its got legs [20:46] sure [20:46] I hope so [20:46] and we're likely to want to implement parallel testing on top of it [20:46] makes sense [20:46] the page does cover a bunch of detail today, but automation is improving, especially if using oneiric or the lxc ppa [20:47] was going to try oneiric, but I've spent my OS configuration budget for the month. August, maybe. :-) [20:48] heh, i hear you! [20:48] I've just made a KVM oneiric instance [20:48] to kick the tires on lxc and ensemble a bit [20:49] cool, yeah, I made a vm too [20:49] but lxc on a vm seemed a curiosity and a good way to explore lxc, more than a practical approach. :-) [20:50] although it would still give some benefits, I suppose [20:50] so lxc is a moving target [20:51] the container rules and capabilities are changing fast enough that 6 months can easily get bug fixes relevant to us. [20:52] yeah, makes sense [20:52] anyhow, if you want to do any of the following, lxc +1: [20:52] - parallel test [20:52] - test with different / new dependency stacks [20:52] - run more than one lp up at a time [e.g. to play with federation] [20:53] or if you have any memory pressure issues on your machine (e.g. during bin/test) [20:53] it shouldn't be too bumpy a ride - it will either be easy, or totally impossible :> [20:53] lol [20:53] ok cool [20:53] might give it a try soon then [20:53] thanks lifeless :-) [20:54] np :) [20:57] wallyworld: wow, early up? [21:04] jelmer: hi [21:04] jelmer: why do you think bug 628323 is a subunit package bug ? [21:06] lifeless: see max's comment [21:06] I don't have that [21:07] what did he sya ? [21:07] someone talking about me? :-) [21:07] lifeless: "This FTBFS is the result of the python-subunit package not being [21:07] properly built for all current Python versions" [21:07] I don't follow. [21:08] does it need a no change rebuild because the set of supported python packages has finally changed in debian ? [21:08] s/packages/versions/ [21:08] Is that bug number wrong, or private? [21:08] its in Debian [21:13] lifeless: it has already had the no-change rebuild, I'vconfirmed 0.0.6-2 was only built for 2.6, 0.0.6-3 was built for 2.6 and 2.7 [21:14] I'm not sure what to conclude from that :) [21:14] I have to pop out to see the midwife, be back in <= 90m [21:14] according to the logs the bug was filed with 0.0.6-2 installed [21:14] so I'm going to indicate that in the bts [21:15] lifeless: ok. I hope all is well [21:15] just routine meeting [21:22] lifeless: Hah, nice. [21:22] lifeless: Oddly, lxc debootstrapped it fine for me. === matsubara is now known as matsubara-afk [21:34] wallyworld: Hi [21:34] hi [21:35] lifeless: sorry, didn't see your ping. irc notifications in unity aren't as good as i'd like so i often miss them [21:36] wgrant: what can i do you for? [21:36] wallyworld: Was just going to tell you that the "true"/"false" thing was a real bug, but I see you've fixed it already. [21:37] (not sure why it can't be in the main JSON dict, though) [21:37] Nice simple test, too. [21:38] wgrant: yes. i reverted that tales snippet. it's all a mess. today i plan to do some more yak shaving. there's 2 ways of getting a picker (via create or addpickerpatcher) and you get different results depending on which one is used :-( [21:38] wallyworld: Yeah. [21:38] Still, we are getting better. [21:38] Slowly. [21:38] plus the config vs json_config issue [21:39] at first i didn't see why there was the need to hack in those booleans in the tales [21:39] all pretty ugly [21:39] But fixable :) [21:41] i added 2 tests to the yui test case - one for the textfield plugin and one for the extra message. the textfield plugin refactoring from the tales was good because it enabled the yui test to check the proper code path [21:41] whereas before the test wired it up manually [21:42] i only see one new test, but I guess you adapted an existing one to test the whole thing? [21:43] wgrant: yes - i modified an existing test and added some extra setup guff to support it [21:43] The best kind of new test. [21:43] the modifed test is the one i was referring to above when i said it's now a better test [21:43] Yup [22:12] Project devel build #900: FAILURE in 5 hr 33 min: https://lpci.wedontsleep.org/job/devel/900/ [22:30] I'm getting exceptions starting RabbitMQ during the testsuite; is that a common issue? [22:31] jelmer: Shouldn't be any more. Is your hostname configured correctly? [22:31] 'hostname -f' returns 'localhost6', so I guess not.. [22:32] That could be a problem. [22:32] It should be mostly immune to that now, but maybe IPv6 combined with dodgy hostname is doing bad things. [22:42] hmm, that doesn't seem to work either [22:42] I'll have a look tomorrow [23:04] sinzui: We can hear you and each other. [23:04] Can you hear us? [23:04] no. [23:04] That is suboptimal. [23:14] it would be cool if launchpad could show a per-pillar view like this for the hottest bugs: http://mail.google.com/support/bin/static.py?page=suggestions.cs [23:36] lifeless: Hi [23:37] hi [23:40] lifeless: The malone.advanced-subscriptions.enabled, malone.advanced-structural-subscriptions.enabled, code.recipes_enabled flags are on by default and have been removed from the code. Can we remove the rules? [23:40] of course [23:40] Thanks. [23:45] hi wgrant, lifeless