[00:05] thumper: hoot [00:05] thumper: *shoot*, or did you want voice? (can do that too) [00:05] you suggest using closures rather than functors [00:05] I'm not sure I get the subtleties [00:05] mwhudson: I'll get someone else to review; need deeper restructuring to make the concept work [00:06] thumper: oh, less code [00:06] lifeless: and here I was thinking you were hooting about my link in -ops [00:06] uses more of the language facilities, which tends to feel more natural [00:06] thumper: I linked that here last week :P [00:06] lifeless: can you give me an example [00:06] ah... ok [00:06] well it was new to me :) [00:07] lifeless: ok, thanks for letting me know [00:07] so - a class with only __call__ is equivalent to a function [00:07] mwhudson: (the symmetric vs asymmetric difference is biting here) [00:07] mwhudson: e.g. product can be symmetric, branch.owner can't be, not for merge proposals [00:07] lifeless: oh right yes, duh [00:08] mwhudson: kindof reflects some limits in the collections approach [00:08] conceptually we might be better off with a merge proposals collection taking two branch collections as constraints, but then the constant folding will become *hard* [00:09] lifeless: I think I get your suggestion now... [00:09] so, it makes me wonder more about whether ditching the layer would just be a net win. [00:10] thumper: right - rather than implement N classes + factories, implement N functions, and for some of them use currying (or partial()) to capture whatever constraints you need [00:10] wgrant: are you deploying us up ? [00:11] lifeless: I shall. [00:11] kk [00:22] * mwhudson gets ready to shuffle off [00:55] http://pastebin.com/yVLXtDse [00:57] hi all === StevenK changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews [01:04] spiv: The package importer was only changed to specify a reviewer three weeks ago, and that may have been deployed even more recently. [01:05] lifeless: Actually, we can't really delete the code. Makes it impossible to test things without real DNS. [01:05] Like, say, a development environment. [01:05] Although I guess we could. [01:06] wgrant: well, the other curious part is it appears to only or at least mainly affect imports that had been affected by bug 726584, which was a bzr issue [01:07] <_mup_> Bug #726584: flash-kernel import fails apparently mismatching maverick and natty branches < https://launchpad.net/bugs/726584 > [01:07] wgrant: but perhaps it's just more likely to trigger that situation with relatively stale imports [01:07] spiv: It only creates MPs when there is a conflict. [01:07] And it will affect all of them. [01:07] The API usage is wrong. [01:08] What do you mean by "all of them"? I don't see the number of import failures rising, so I presume most of them have been passing. [01:09] spiv: It will affect anything with an import conflict. [01:11] wgrant: how so? we can inject stuff into the client [01:11] wgrant: and/or select the specific names we need a priori [01:12] lifeless: I guess. [01:33] can has review? https://code.launchpad.net/~lifeless/launchpad/bug-736008/+merge/55028 [01:45] is it just my flakey network or is lp refusing ssh connections? [01:45] poolie: works for me [01:45] (just tested) [01:46] thanks [01:46] spm: he's noticed, you can take the special case for poolie out now [01:47] hmm? [01:47] oh. right. yes. will do. [01:48] StevenK: https://code.launchpad.net/~lifeless/launchpad/bug-736008/+merge/55028 [01:48] StevenK: I know you are around :) [01:49] * StevenK grumbles at lifeless [01:54] lifeless: I note you're adding two methods getCandidateBranchesWith(). There is a little bit of duplicated code there, are you able to up-call from the more explicit one to the anonymous one? [01:55] StevenK: no [01:55] StevenK: anonymous(generic) and visible(generic) [01:55] the generic class does no filtering by user; the anonoymous one filters as though an anonymous user, the visible as though a user is logged in [01:56] I think it should be refactored away from subclassing and into a strategy helper. [01:59] nice 477 Time Outs [02:00] lifeless: Sounds good, do that. [02:00] :-P [02:00] lifeless: If you want the refactoring to be done in another iteration, I'm happy enough to say r=me [02:00] StevenK: I think it should be done, I have no plans to do it. [02:01] lifeless: Okay, then I'd suggest you add an XXX to that effect. [02:01] StevenK: I don't think thats useful to do: [02:01] - such XXX become stale all the time [02:01] - its not a 'bug' [02:01] - the refactoring might be wrong, until someone tries, who knows [02:02] lifeless: I might just be overly grumpy, but you asked for a review, not an argument. [02:03] StevenK: yes, and I appreciate that - you've mentioned two things; one that the *current code structure* isn't optimal and two that I record *one approach* to fixing it in the code base. [02:03] for the former, I'm agreeing with you vigorously, but the thing I'm trying to achieve is orthogonal to the current code structure [02:03] Then I withdraw my objection, r=me [02:03] for the latter, I'm saying that encoding a guess about what might be better in the code base isn't a useful thing to do [02:05] StevenK: thanks! [02:06] StevenK: http://bazaar.launchpad.net/~lifeless/storm/with/revision/387 - is the change to storm I'm bundling [02:07] I think I've read that before [02:07] yeah, i pastebinned it, when it was in-tree in lp [02:16] Is it just me or do other people find that a lot of AJAX requests hang in Launchpad? Probably 60% of the time I do something it doesn't work and I have to refresh and do it again. [02:17] huwshimi: I've not seen that. [02:17] wgrant: Really? [02:17] wgrant: What browser are you using? [02:17] huwshimi: Chromium 11, mostly. [02:18] wgrant: Ah right. I thought it might be a chrome thing, but I guess not [02:18] It [02:18] It's really annoying [02:18] huwshimi: Bug task actions? [02:19] wgrant: Yeah [02:20] Er. [02:20] Is something wrong with OOPS reporting? [02:20] Our top two OOPSes have disappeared. [02:20] Maybe the broken remote branch is fixed, and the package importer has unbroken... [02:20] But hmm. [02:21] wgrant: the package importer has stopped retrying that failure [02:21] spiv: Ah. [02:21] http://package-import.ubuntu.com/status/: “51 packages failed to many times to retry with key lazr.restfulclient.errors.HTTPError” [02:22] I can kick it over and over today if you'd like lots more OOPSes :) [02:23] Yeah, the 717 critical OOPSes is a bit low. The extra 1400 will do us some good :) [02:26] huwshimi: possibly you're hitting lots of timeouts + the poor reporting we have of those class of errors [02:27] 1 / 2 BugTask:EntryResource [02:27] Not likely. [02:41] is it just me or are there no longer tick/cross buttons when editing mp descriptions? [02:41] nm, just me, they probably failed to load [02:49] huwshimi: I guess you need to track the requests and see what happens [02:50] lifeless: Yeah next time it happens I'll take more notice :) [02:54] wow [02:54] https://lp-oops.canonical.com/oops.py/?oopsid=1912O253#statementlog is special [02:55] I was looking at that before. [02:55] https://bugs.launchpad.net/launchpad/+bug/743970 [02:55] <_mup_> Bug #743970: ProductSet:+all timeouts < https://launchpad.net/bugs/743970 > [02:55] I don't understand what it's trying to do. [02:56] There were some pretty slow queries for what should be a fairly trivial operation. [02:56] so the first clause is 'direct teams for person X with membership status 3' [02:57] the second clause is 'all active team memberships [02:57] the first clause can probably be radically simplified [02:57] Well, I didn't look at the queries in depth. I mostly just scanned the log and saw some 800ms queries that didn't make sense for listing products. [02:57] So I decided that I might come back to it later. [03:07] My apologies to whoever is getting notifications for all the bug changes I'm making today. [03:07] How dare you try to fix our UI. [03:11] huwshimi: I'm not sure easy-ui is a sensible tag though :( [03:13] huwshimi: if you see js error bugs - per the list thread - they should be criticaled [03:13] lifeless: sure. [03:14] lifeless: It is a bit of a misnomer, but I couldn't think of a better one [03:14] huwshimi: what is the intent you want to convey? [03:15] wallyworld: hey, web_service_request_to_notification_request - seems to be entirely redundant. Can't you just use the INotificationRequest directly ? [03:15] lifeless: probably. i'm a bit clueless when it comes to zope and adaptors [03:16] i'll give it a go [03:16] lifeless: They should be fairly straight-forward, only take a few hours and not really require much discussion. The sort of thing that can be just picked up and done. [03:17] huwshimi: I suggest tagging them easy, ui [03:17] huwshimi: a search for easy & ui will bring them back trivially [03:19] lifeless: The problem with that is that implies that they are actually easy. I think I need to pick another word instead of that [03:19] huwshimi: shallow trivial simple tech-debt friction polish [03:20] lifeless: i can't use your suggestion because INotificationRequest is lp specific and the implementation code is in lazr restful [03:20] wallyworld: you have an adapter registration with a factory line [03:20] wallyworld: in the one merge proposal [03:21] wallyworld: why can't you put the factory as ....INotificationRequest [03:22] lifeless: ah. i think i understand now. you mean "factory=canonical.launcpad.webapp.interfaces.INotificationRequest" [03:22] ? [03:24] wallyworld: that seems like a trivial inlining [03:24] wallyworld: yes [03:24] wallyworld: def foo(bar): return quux(bar) is equivalent to foo=quux, after all [03:24] you may be able to do better, but I was just pointing out the direct simplification I thought I saw [03:25] lib/lp/registry/browser/product.py makes baby jebus sad [03:25] lifeless: thanks. i'll make the zcml change [03:26] wgrant: check line 1014 [03:26] wgrant: and ask yourself, why would this show up in projects/+all [03:27] lifeless: It surely is not invoking ProductView for every project. [03:28] wgrant: :) :) :) :) [03:29] configure.zcml 1434 [03:31] +listing-detailed is the culprit [03:32] Yay [03:41] Hmm. [03:41] Damn. [03:41] I had merged MixedFileAliasView into LibraryFileAliasView. [03:41] But that's not safe. [03:43] Because we may leak restricted LFAs in various places, which is safe at the moment because the code needs to explicitly ask for the token view. [03:44] yeah [03:45] btw [03:45] I *thought* I saw lp asking for appserver verification of public bug attachments or something the other day [03:45] that could be streamlined [03:45] Right, ProxiedLibraryFileAlias always goes to the appserver first. [03:46] for public files, we should bypass that [03:46] What if they become private? [03:46] will make branding load faster [03:46] wgrant: they they will get a 404 [03:46] What? Branding doesn't go through ProxiedLibraryFileAlias. [03:46] wgrant: mmm, perhaps, I could swear it was [03:46] anyhow, there are two classes of links [03:46] current and persistent [03:47] for bug mail using the appserver redirect is appropriate [03:47] Right. [03:47] for web pages rendered, its very unlikely that the bug will go private before the user clicks - and if it does, shrug. [03:47] the race exists regardless because we don't hand out tokens for public files [03:48] the bug might go private between asking for the real url and actually requesting the content from the librarian [03:49] wgrant: different thing than what you're doing [03:49] I know. [03:49] wgrant: I only mention it so you can bear it in mind in any refactoring you do. [03:51] wallyworld: you realise that Javascript doesn't have method overloading? [03:52] thumper: :-( i thought it did [03:52] wallyworld: nope, it is more like python [03:52] thumper: you mean the recipe text xss branch? [03:52] yep [03:53] ok. will do a fix [03:53] wallyworld: just check for undefined [03:54] wallyworld: if someone calls a function with one param when it takes two, the second is undefine [03:54] * wallyworld nods [03:54] d [03:54] wallyworld: did you want a voice catchup? [03:54] thumper: ok. [03:54] * wallyworld plugs stuff in [03:54] wallyworld: with no leonardr now, we can do it at a more convenient time for you [03:54] team of 2 [03:55] :-) [03:55] thumper: i can hear you [03:55] I no hear you [03:56] and yay - prejoining fail again [03:56] thumper: not muted but no sound [03:56] * wallyworld restarts :-( [03:56] mic plugged in? [03:56] thumper: yes! [04:02] wallyworld: time to try something different? [04:03] wallyworld: mumble doesn't seem to be working for you, how about skype? [04:04] thumper: just testing with skype now and it works fine [04:08] anyone know why cve:+index has edit widgets for the bug tasks? [04:09] can has review? https://code.launchpad.net/~lifeless/launchpad/bug-743970/+merge/55033 [04:13] StevenK: ^ its tiny, if you feel like it. [04:13] * lifeless will bbiab [04:42] StevenK: thanks! [04:43] wgrant: I think I've come up with a tiny fix for python-debian's permissiveness [04:45] StevenK: Oh? [04:45] wgrant: http://pastebin.ubuntu.com/586329/ [04:46] StevenK: Looks reasonable. [05:08] ok, why can't I ssh to ec2... [05:15] wgrant: Bleh, it isn't quite that simple. :-( [05:15] lifeless: What does ssh -v say? [05:17] debug1: Connecting to ec2-75-101-221-93.compute-1.amazonaws.com [75.101.221.93] port 22. [05:18] I don't think your instance is up [05:18] Instance i-c201daad starting.......................................... started on ec2-75-101-221-93.compute-1.amazonaws.com [05:18] Started in 3 minutes 37 seconds [05:18] I think the default security group allows ICMP [05:20] couldn't ping it either, and it should be in the ec2test group [05:20] lifeless: Do you have ElasticFox? [05:20] That should allow you to see what Amazon thinks about this [05:21] StevenK: "ka-ching", I expect [05:21] spiv: Two drums and a cymbal fall off a cliff [05:22] StevenK: I thought it was two elephants [05:23] huwshimi: Not heard that one [05:23] (Okay, that was bad) [05:30] I think its a routing issu [05:31] *issue* [05:31] http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609&categoryID=88 fails to connect too [05:32] lifeless: Hm, works for me [05:33] just came good, will see whats up [05:35] in the mean time [05:35] would someone like to ec2land https://code.launchpad.net/~lifeless/launchpad/bug-743970/+merge/55033 and https://code.launchpad.net/~lifeless/launchpad/bug-736008/+merge/55028 ? [05:36] ulp, nevermind [05:36] it really is happier now [05:48] Can I tell a testbrowser not to follow redirects? [05:50] wgrant: Sadly, it wasn't that simple. But http://pastebin.ubuntu.com/586340/ makes it work [06:08] wgrant: So, do you think resolved DSDs should lose the diff? [06:10] StevenK: I'm not sure. [06:11] wgrant: I was going to get DSD.update() to lose them if the status is NEEDS_ATTENTION so they can be re-requested === almaisan-away is now known as al-maisan [06:25] Has anyone seen http://pastebin.ubuntu.com/586348/ ? Or should I fix it? [06:25] Didn't I see that in one of your branches/diffs last week? [06:26] A diff [06:27] I'm just surprised it's gone unfixed [06:36] Could I convince someone to look at an oversized branch? [06:36] 948 lines (+108/-606) [06:36] https://code.launchpad.net/~wgrant/launchpad/delete-librarian-streaming/+merge/55039 [06:43] wgrant: r=me, with a niggle [06:44] https://code.launchpad.net/~stevenk/launchpad/apihelpers-imports/+merge/55040 [06:44] StevenK: Bah, yes, people fail at sorting imports. [06:45] Haha [06:46] The test fallout from this could be *amusing*. [06:46] Oh, NFS, DIALCF. [06:46] What's it doing? [06:47] It can't be as flaky as nfsv4+krb5. [06:47] % ls -lh /media | tail -n 1 [06:47] d????????? ? ? ? ? ? media [06:47] Well then. [06:48] I finally managed to find an operation that actually told me what was going on, which was Stale NFS file handle [06:49] Except now the client thinks it's mounted, but the server and client are playing no-speakies. Awesome. [06:51] % sudo start portmap [06:51] start: Job failed to start [06:51] Could I have a clue, Upstart? Please? [06:57] StevenK: they cost more [06:57] lifeless: Hmph. [06:57] lifeless: Can haz review? [07:10] sure [07:11] lifeless: https://code.launchpad.net/~stevenk/launchpad/apihelpers-imports/+merge/55040 if you missed it === henninge changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: henninge | https://code.launchpad.net/launchpad-project/+activereviews [07:15] Good morning! === al-maisan is now known as almaisan-away [07:20] Morning henninge. [07:23] Hi wgrant! ;) [07:23] henninge: Hai! [07:23] And hello StevenK! :) [07:24] henninge: You guys switched to daylight savings on the weekend? [07:24] Yes we did. [07:24] Means we probably lose ours in about a week. [07:26] oh [07:32] This should be fun - I've got a branch that consistently fails with KeyboardInterrupt [07:32] stub: Stop bashing Ctrl-C during the test, then? :-P [07:33] StevenK: The keyboard is in another continent ;) [07:33] * wgrant stabs germanium. [07:33] Stop being so slow. [07:38] * wgrant stabs mizuho too. [07:40] wgrant: Same reason, or a different one? [07:41] StevenK: Same one. [07:41] germanium has an excuse, I didn't think mizuho did. [07:42] Maybe the DC just hates me. [07:42] I can't get more than 100KB/s from mizuho. [07:42] (substantially less from germanium. and request latency is terribly) [07:44] What's your path to the DC? [07:45] Optus->L3(US)->Canonical [07:46] * spm leaves the "throttle wgrant" block in place for another day [07:46] :( [07:46] wgrant: have you done any sniffs locally and seen the effect on a Time Sequence graph? [07:47] A hwhat? [07:47] woooo! I know something wgrant doesn't. /first! [07:47] :( [07:48] http://www.tcptrace.org/manual/node12_mn.html [07:48] Thanks. [07:48] my #1 go to tools for 1st step debuging funky network crap [07:49] ethereal (or whatever they call it this week) has a not as useful version of that [07:49] wireshark [07:49] that's it. ta. [07:49] And it hasn't been renamed for like 2 years? [07:49] More. [07:49] More proof spm is just old [07:49] almost 5 years [07:49] May 2006 [07:49] Wow. [07:49] Crumbs [07:49] Doesn't seem like that long ago :/ [07:49] Haha [07:50] if you give me a bit, I can probably even tell you it's earlier name. and find a binary. [07:50] For which Unix? :-P [07:51] heh, I was actually looking for the windows version... /blush [07:51] Hah, fail [07:54] wgrant: so the trick you're looking for - is your tcp window saturated; or are you getting lots of normal flow then big gaps; multiple acks can be bad; etc. it depends. [07:56] also, getting a similar view off a different spot can be helpful. I've used my VPS in the USA to debug server woes in Oz, completely different network path and that can eliminate some imponderables. [07:56] From my US VPS it's fine. [07:56] I'd blame your ISP then. ;-) [07:57] wgrant: Oh, you also have a Linode? [07:57] I guess I don't grab much other big stuff from Europe. [07:57] StevenK: Of course! [07:57] wgrant: Fremont? [07:57] Indeed. [07:57] wgrant: Win [07:57] * StevenK looks up his host [07:58] fremont35 [07:58] I seem to be on fremontreallyslowio [07:58] Haha [07:59] aka fremont87 [07:59] Haha [08:00] wgrant: If it's a problem, open a ticket [08:00] It's not really an issue at the moment. [08:01] lifeless: SIGH! I've not been able to self-review before, but thanks. [08:01] lifeless: Should have realised [08:03] Huh, it looks like -backports is going to be usable in natty. [08:11] thumper: Still there? [08:12] Would a server editiion Ubuntu be alright for lp install? [08:12] henninge: I have one for you -- https://code.launchpad.net/~stevenk/launchpad/dsd-lose-diffs/+merge/55059 [08:12] nigelb: No, it only runs on Windows Server. [08:12] bzrlib.errors.InvalidHttpResponse: Invalid http response for https://code.launchpad.net/~stub/launchpad/trivial/%2Bmerge/54692/.bzr/branch-format: Unable to handle http code 405: expected 200 or 404 for full response. [08:12] wgrant: Har har [08:13] stub: bazaar.launchpad.net, not code.launchpad.net? [08:13] wgrant: This is from ec2 land [08:13] wgrant: I didn't want to kill my processor with a full install [08:13] Gah... pebkac [08:13] rvba: Morning [08:13] huwshimi: morning [08:14] rvba: I have some icons for you [08:14] rvba: Well if they're ok [08:14] huwshimi: nice! [08:14] henninge: I have one for you -- https://code.launchpad.net/~stevenk/launchpad/dsd-lose-diffs/+merge/55059 [08:15] wgrant: In revenge, I'll pick your brains, when I finish the installation. [08:16] StevenK: looking [08:16] nigelb: Sounds like a good idea. [08:16] nigelb: Feel free to ask anyone, rather than just picking on wgrant? [08:17] That could work too. [08:18] StevenK: Sure :) [08:20] StevenK: Shouldn't you also test for parent_package_diff being None? [08:21] henninge: I can, if you wish [08:22] henninge: http://pastebin.ubuntu.com/586364/ [08:22] StevenK: Looks good. Why did you chagne to Equal? [08:23] henninge: Because it was bugging me before I asked for the review [08:23] StevenK: but why only on the second assert? [08:24] henninge: Because that one was assertTrue(... is None) which is effectively Equal. The former is assertFalse(... is None) [08:24] StevenK: assertIs(None, foo) [08:24] Not assertEquals. [08:24] Fixed [08:25] Yes, that's what I would have expected. [08:25] And assertIsNot [08:25] henninge, wgrant: http://pastebin.ubuntu.com/586365/ [08:26] StevenK: r=me [08:26] henninge: Thanks! [08:26] thanks wgrant ;) [08:40] jelmer: Ping! [08:41] StevenK: goooood morning [08:41] jelmer: Hai! [08:41] good morning [08:41] Moin adeuring! [08:41] hi henninge [08:41] jelmer: Did you know the Version class in debian.changelog isn't strict enough? [08:42] hi henninge, adeuring [08:42] StevenK: No, I didn't. In what regard is it not strict enough? [08:42] Hey jelmer ;) [08:42] hi jelmer [08:43] jelmer: The regex allows : in the upstream character class -- that is only allowed if the epoch is not None. I have a patch at http://pastebin.ubuntu.com/586340/ [08:45] StevenK: ah, nice catch [08:46] jelmer: Okay, so you like my patch. :-) What's the next step? [08:47] StevenK: a test would be nice, and sending it upstream [08:48] jelmer: Just file a bug in the Debian BTS? [08:49] StevenK: Yep; we should probably poke James or one of the other devs to have a look, my last patch was sent to the mailing list but hasn't seen much attention. [08:49] (I'm not upstream) [08:50] jelmer: Ah, I thought you were, sorry. [08:50] jelmer: How do I run the test suite? [08:51] Ah, there's even a Makefile [08:51] StevenK: Yep, that's specific to Launchpad's friendly fork though [08:52] It helped me check the test I wrote, so win [09:09] morning all === almaisan-away is now known as al-maisan [09:16] Morning bigjools. [09:17] Project windmill build #110: STILL FAILING in 1 hr 8 min: https://lpci.wedontsleep.org/job/windmill/110/ [09:17] bigjools: Do you have an opinion on bug #740892? [09:17] <_mup_> Bug #740892: Ownership of package sets doesn't get preserved when a new series gets initialized < https://launchpad.net/bugs/740892 > [09:19] wgrant: I agree with your last bug comment. Also, he's not stated exactly why changing the owner is a problem. [09:19] bigjools: Because the DMB is given several of the packagesets. [09:19] bigjools: So they can administer them without involving the TB for every single thing. [09:19] ok [09:20] is DMB anywhere on the distro data? [09:20] No. [09:20] hm [09:20] The TB should be, but the DMB probably shouldn't be. [09:20] in that case they need to set it manually [09:20] Why? [09:20] hmm actually [09:21] we can preserve it for the same distro, change it for new distros [09:21] That's what I was suggesting, yeah. [09:21] I think that should work. [09:21] cool [09:22] bigjools: Also, archivepublisher's tests suck. [09:23] wgrant: tell me something I don't know [09:24] bigjools: I was changing Release file generation, and it looks like it's only slightly tested in soyuz-upload.txt and nowhere else. [09:24] Sigh. [09:24] blame celso :) [09:25] Mmm. I think it's probably mostly just old, complex code. Other bits of LP were also pretty bad. === jtv1 is now known as jtv === al-maisan is now known as almaisan-away [12:02] Morning, all. [12:04] Hi deryck! [12:16] Hello everyone. Has anyone here tried working through the getting started guide for daily builds? [12:16] deryck: hi. you tried to run windmill tests with firefox 4? the Launchpaduser.ensure_login() method fails for me. "current_url = client.commands.execJS(code='windmill.testWin().location;')['result']['href']" fails [12:16] wallyworld: ah, no, I haven't tried it with 4 yet. [12:17] wallyworld: that sucks :( [12:17] deryck: yeah :-( i don't want to reinstall ff3 [12:17] wallyworld: is the site actually broken in 4? Or the test just fails? [12:18] deryck: the site/page loads but the javascript inside the call to ensure_login() fails [12:18] deryck: client.commands.execJS(code='windmill.testWin().location;') returns a near empty dict [12:19] i mean the 'result' value is a near empty dict [12:19] wallyworld: ah. hmmm, let me look more closely at this now.... [12:19] hence there is no 'href' key and it barfs [12:23] deryck: thanks. i had a quick look at the windmill devs google group but nothing jumped out. if now is not convenient for you to look, that's fine. it's way past eod for me and i was hoping to take a shortcut in asking you :-) [12:25] wallyworld: yeah, I don't know without looking. Sorry. I don't mind digging in the innards of the windmill js objects today. [12:25] wallyworld: it might also be better to see if we can get the url in an easier way. [12:26] deryck: np. i'll look tomorrow also. thanks [12:28] henninge, hi, I've got a very nice branch that requires your both reviewer and ui expertise :) [12:28] henninge, https://code.launchpad.net/~danilo/launchpad/bug-740640/+merge/55123 [12:28] henninge, most of the UI visible in https://devpad.canonical.com/~danilo/screencasts/inline-validation-error.ogv [12:29] danilos: I am watching it right now ;) [12:29] cool [12:29] * henninge replays [12:29] heh :) [12:29] wallyworld: np! [12:30] henninge, fwiw, I am unsure about "select all" after re-focusing on the field with the problem [12:32] wgrant: have to say again that I really appreciate you making the PQM step much faster. It makes a big difference to landing branches. [12:33] jml: quick chat? === almaisan-away is now known as al-maisan [12:34] lifeless: sure. [12:35] skype? voip? mumble is still very crackly [12:35] jml: Indeed. It is pretty nice. [12:35] henninge, and whoops, lint issue due to code I should have removed (an unneeded nested function definition) [12:36] danilos: np, just push it [12:36] henninge, done already :) [12:36] jml: ^ [12:36] danilos: wow, you're quick! [12:37] lifeless: skype is trying to connect as we speak [12:37] s/as we/so we can/ :P === mrevell is now known as mrevell-lunch [13:13] Yippie, build fixed! [13:13] Project db-devel build #497: FIXED in 5 hr 16 min: https://lpci.wedontsleep.org/job/db-devel/497/ === benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: henninge, benji | https://code.launchpad.net/launchpad-project/+activereviews [13:14] I have a question about config overlays, anyone feel expert enough to help out? [13:15] (basically, I'm trying to create a custom development config, without having to actually modify the source tree, so I can run LP in a VM) [13:15] I'm getting 'cat: lib/canonical/launchpad/icing/yui/dom/dom-style-ie.js: No such file or directory' errors when running 'make schema' in db-devel [13:16] danilos: is the UI review for the whole dialog? [13:16] jml: rm -rf lazr-js/build ; make ? [13:16] I've had a lot of problems there [13:16] henninge, nope [13:16] may not have anything to do with you [13:16] henninge, just the validation bits :) [13:16] ok [13:16] but the build script seems to assume the targets must exist [13:16] if the dir does [13:17] jml: though that specifically sounds like somebody forgot to add a file [13:17] jam: I'll run 'make clean', see what happens. [13:21] Sometimes I think bug descriptions should be optional... so many of the bugs I file have a descriptive enough subject so I just end up writing 'Yep, we need this' as the description. [13:23] jkakar: you must have really shallow bugs :) [13:24] jam: Sometimes, yes... For example, I just filed one like 'Need a way to migrate foo's from the old schema to the new one'. [13:24] jam: There isn't really anything more worth describing... I guess the issue is that I'm using bugs, in this and possibly the common case, to track work as opposed to for describing a problem with symptoms, workarounds, etc. [13:25] you could still put context [13:25] where it is useful [13:25] etc [13:25] but sure, I see your point [13:26] jam: Yes, for sure. It's important to provide context when, er, it's important. I just find I end up filing a lot of bugs with 'Yep, we do' as the description... maybe I'm just being too lazy. Hmm. [13:27] jml: quick twisted question. If you call 'addCallbacks' on a deferred, it will trigger the call immediately if the data is already present, right? [13:27] jam: yes. [13:28] I'm trying to track through an lsprof, though twisted seems to destroy the call tracking [13:28] but 50% of the time is in "addcallback" I figure that is just actually running the function [13:28] jam: http://paste.ubuntu.com/586438/ [13:29] jml: sure. In this case I'm dealing with Launchpad xmlrpc stuff, which I don't think is actually deferred [13:29] jam: tbh, I've never had to seriously profile Twisted code. #twisted will probably have someone who has. [13:29] jam: it uses Deferred, at least on the client side [13:30] jml: It is guaranteed to be exactly as synchronous as the passed-in proxy. [13:30] but since the trigger is happening under the callback, I'm pretty sure it is synchronous [13:30] it's synchronous, but it uses Deferred [13:31] jml: right. But I think the point of abstracting via Deferred is because they wanted to allow async (at least, avoid blocking) [13:31] yeah. [13:31] ATM, I'm thinking XMLRPC might be killing some of the codehosting perf [13:31] given that the request is sync [13:31] and is *blocking* everyone else at the same time [13:31] the sftp server uses exactly the same code, but uses an async client [13:31] hmm [13:31] jam: I'd really doubt that [13:32] jam: the XMLRPC takes place in the server for auth, and that uses an async xmlrpc client [13:32] jam: then the spawned bzr processes use a sync client, and that wouldn't block anyone else. [13:32] jml: well, running "initialize_on_transport_ex" on my VM is 30ms, under launchpad's implementation, it is 500ms, on Prod, we saw it ~3s [13:32] jml: you're right about probably not blocking others === mrevell-lunch is now known as mrevell [13:33] so far, I've only been able to track it to the twisted layer. It also looks like handling exceptions is extra expensive [13:33] because twisted opportunistically expands the current stack [13:33] to give 'nice tracebacks' [13:33] but --lsprof lies, too :) [13:33] allenap: sorry i didn't get to your big branch on friday [13:34] jam: interesting. [13:35] https://bugs.launchpad.net/launchpad/+bug/740759 [13:35] <_mup_> Bug #740759: creating bzrdir on launchpad is slow (BzrDirFormat.initialize_ex_1.16) < https://launchpad.net/bugs/740759 > [13:35] 29 0 0.4081 0.2940 twisted.python.failure:416(__getstate__) [13:35] out of ~0.6s for run_argv [13:35] so 400+ms spent in failure.__getstate__ [13:36] again, lsprof sometimes lies, and makes things that are super fast in locals slow while traced [13:36] jml: but 29 calls to __getstate__ generated 35k calls to safe_repr [13:40] jam: that seems an unreasonably large number. [13:41] jml: it walks self.frames, and calls safe_repr() across all objects it finds [13:41] AFAICT [13:41] so, walk the current stack [13:41] and safe_repr every live object available [13:41] jam: as an experiment, you could patch out cleanFailure to do nothing, and then see what affect that has on the run time. [13:42] jml: something worth trying, I was going to try to just avoid exceptions-as-return-codes, but I'll start with your idea [13:43] of course, the flip side is that it probably starts leaking references to other objects [13:43] jam: well, yes. [13:43] since it no longer indirects via safe_repr [13:46] a lot better under lsprof, trying without === Ursinha-afk is now known as Ursinha [13:53] Project windmill build #111: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill/111/ [13:53] jml: http://paste.ubuntu.com/586444/ [13:54] not 100% definitive, but averaging <300ms vs >450ms [13:54] for just changing "cleanFailure: return" [13:54] jam: yeah, interesting. [13:59] jam: I'm not sure if we could tolerate the memory leak on production. On the one hand, the processes have a fairly short lifespan, on the other, bzr is already very memory hungry. [13:59] jml: yeah, I'm not thinking that is a production change. But finding some way to avoid calling it at all would be worthy [13:59] It seems like it is about "nice failure tracebacks" [14:00] which is great, but costing us half our runtime isn't so nice [14:00] jam: a version of Failure which didn't keep the traceback would be interesting and maybe even generally useful. [14:01] jml: how would you inject it, though? [14:01] (tell the Deferred it really wanted to use *this* class of failure) [14:02] jam: you would have to monkey-patch. [14:02] jam: i.e. it's not supported [14:02] jml: yipee ! [14:02] jam: another option would be to have a flag on Failure like 'debug', except that it said "don't store tracebacks at all" [14:11] bac: No worries, it is oversize and I wasn't able to stay around. [14:16] adeuring: Have you made any further changes that I should merge? [14:16] abentley: not yet [14:16] adeuring: cool. [14:38] henninge, hi, how's the review going? anything I can help clarify perhaps? [14:43] danilos: sorry for the delay, I got a bit distracted ... [14:49] henninge, no worries, as long as you don't give up on me :) === salgado is now known as salgado-brb [14:58] jml: if I change Failure to not walk the stack frame and traceback frame, it drops all the way down to 30ms like I expected [14:58] Twisted Failure is just *way* more expensive than Exception [14:58] jam: :( [14:59] jml: Failure starts by walking the traceback and stack frames and copying all global state [14:59] well, the state leading to local [14:59] but that is locals.copy() and globals.copy() [15:00] jam: this sounds like something that ought to be raised on twisted-python@twistedmatrix.com. [15:20] danilos: err, all those tests ... [15:20] danilos: they are quite repetitive, aren't they? [15:20] henninge, indeed they are, but I was lazy to factor them out more nicely :) [15:21] henninge, if you really insist, though,... :) [15:21] danilos: I think I do. :-P [15:21] henninge, oh well, that's the life of a developer... I mean sure thing! :) [15:23] danilos: also, this looks very likely to break: [15:23] 196 + field_container.get('parentNode').get('parentNode').setStyles( [15:23] 197 + {height: 'auto'}); [15:24] henninge, well, what I actually need there is to trigger a recalculation of height (it is already set to 'auto'): any suggestions on that front? [15:24] jml: so I was wrong it my measurements, it is only 183ms. So the big cost is cleanFailure but __init__ is a little expensive, too. [15:24] henninge, when I add a new element, it doesn't properly resize [15:24] that's bad :( [15:25] henninge, yeah, it is, and this was the only solution I could come up with [15:25] danilos: but my issue was more about finding the right element to apply the style to. [15:25] henninge, I know, but I am using the opportunity to pick your brain as well :) [15:26] henninge, anyway, how would you suggest to do it? actually get the ID for the element in question? [15:26] or the class, maybe? [15:26] you could have a clase "resizeme" or similar. [15:27] and you could simply apply the style to all of them (because there are two in the overlay). [15:27] It won't hurt where it is not needed. [15:28] henninge, I believe CSS selectors don't have a nice "find me a parent which has 'resizeme' class on it", which is why I didn't bother [15:28] henninge, as far as not hurting where it's not needed, so much is true with how it is already :) [15:29] danilos: I did not mean to search for a parent of the input by class but for a child of the overlay. [15:29] Y.all(overlay_id + ' class=sizeme') [15:30] I am not sure that selector is correct, though. [15:30] henninge, right, I don't like the implicit "it might be any 'resizeme' element in the overlay" [15:30] hence the "won't hurt" comment from me ... ;-) [15:30] henninge, well, it should be Y.all(overaly_id + ' .sizeme') [15:30] rightg [15:30] t [15:30] henninge, and hence my reply on that :) [15:31] just my suggestion [15:31] henninge, anyway, if you think that's better, I am fine [15:31] henninge, in general, I don't like any of the solutions too much, because it's basically a hack to work-around an observed problem [15:32] it's "possible side effects" vs. "fragility" [15:32] henninge, "pick one"? :) [15:33] henninge, anyway, sure, I'll go with your suggestion (or something along those lines) [15:34] cool [15:37] jml: I was blocked from posting to twisted. Should I really subscribe for this? [15:37] Or can I send you the email and you post it for me. === al-maisan is now known as almaisan-away [15:44] I went ahead and subscribed [15:46] jam: asking on #twisted, everyone seems to like the idea of a version of Failure that implemented the same API but minimally, perhaps based on whether debug is set. [15:47] jam: filing a ticket & including benchmarks would help, or maybe commenting on http://twistedmatrix.com/trac/ticket/2466 [15:47] jml: of course, I think that requires an account as well :) [15:47] jam: yes. technology is terrible. [15:49] jam: oh right, just saw your email to twisted-python [15:51] benji, hi, henninge was already looking at https://code.launchpad.net/~danilo/launchpad/bug-740640/+merge/55123 (I noticed that you claimed it) [15:51] danilos: ah, thanks for letting me know [15:52] benji: sorry, forgot to claim it. [15:52] henninge: np, I've reassigned it [15:52] jam: also, dropping our sftp support would let us re-write the lpserve thing without Deferreds [15:54] jam: I'd be OK with that, I think. [15:59] danilos: what's this for? I don't see it appearing when I use the dialog. [15:59] > + overlay.showError( [15:59] > + 'Value for ' + error_text + ' is invalid.'); [16:07] henninge, when you try to save with the errors still present, it should show up at the bottom of the overlay [16:07] henninge, save == "submit checkbox" [16:07] duh [16:07] thanks ;) [16:15] danilos: code review done. [16:21] danilos: both reviews done, r=me === salgado-brb is now known as salgado === henninge changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: benji | https://code.launchpad.net/launchpad-project/+activereviews [16:36] henninge, thanks [16:38] sinzui: hi [16:39] hi jml [16:39] sinzui: we said we were going to have a call. [16:39] sinzui: but I forgot. got time for a quick call now? [16:39] yes. I am on mumble now [16:39] I do === deryck is now known as deryck[lunch] [17:29] Project windmill build #112: STILL FAILING in 1 hr 1 min: https://lpci.wedontsleep.org/job/windmill/112/ === beuno is now known as beuno-lunch [18:00] abentley: I have new version of the branch with the "set branch links" for the translation sharing settings page [18:00] adeuring: Cool. [18:01] adeuring: by "new version", do you mean that it's a new branch, or just new revisions on the old one? [18:01] abentley: a new version of the existing branch [18:01] abentley: lp:~adeuring/launchpad/js-translation [18:02] abentley: The links are now quite often hidden [18:02] for anon users and non-privileged users [18:02] and when no packagaing links exists [18:02] adeuring: I see. [18:16] adeuring: It looks like you don't need to import getMultiAdapter in browser/sourcepackage.py. [18:17] abentley: gahh, right [18:17] adeuring: same for ILink. [18:17] rigtt [18:19] adeuring: Also, I think you don't mean "If a product ls linked", but "If a product is linked" in edit_branch_link docstring. [18:19] yes ;) [18:22] adeuring: could you please submit this branch for review, but not land it? I'll land it as part of this work. [18:22] adeuring: actually, if you want to land it, that's fine, too. [18:23] abentley: ok, I'll submit it. [18:23] adeuring: thanks. [18:28] deryck[lunch]: chat (when you're back) ? === beuno-lunch is now known as beuno [18:45] benji: can i request a review of https://code.launchpad.net/~jcsackett/launchpad/affects-before-bug-email/+merge/55184 ? [18:45] jcsackett_: sure === jcsackett_ is now known as jcsackett [18:46] benji: thanks! [18:49] jcsackett: done [18:49] benji: my, but you're speedy. thanks again. :-) [18:49] :) === deryck[lunch] is now known as deryck [19:32] abentley: have call with flacoste now, but can chat after that. [19:33] deryck: cool. [19:36] moin [19:36] gary_poster: hi [19:37] lifeless, hi. thank you for email. was very good. I've been doing allhands review stuff today so have not gotten to that except for reading it. I am going to review what I've done in light of what you said also [19:37] gary_poster: kk === lifeless changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: benji | https://code.launchpad.net/launchpad-project/+activereviews === Ursinha is now known as Ursinha-lunch [20:07] statik: ping [20:32] hi abentley. I can mumble now if you wants to. [20:32] deryck: cool. [20:57] flacoste: yo [20:57] hi lifeless [20:57] skype time? [20:57] yarp [21:22] 3% rocketfuel [21:22] I guess its a good idea to run it overnight === Ursinha-lunch is now known as Ursinha [21:51] Project windmill build #113: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill/113/ [22:01] thumper: mumble? [22:02] wallyworld: aye [22:11] deryck: http://people.canonical.com/~huwshimi/ajax_time_log.ogv === benji changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews [22:23] Later on everyone. [23:13] sinzui: still around? [23:13] thumper: yes [23:13] mumble? [23:40] thumper: https://bugs.launchpad.net/launchpad/+bug/417100 [23:40] <_mup_> Bug #417100: ajax picker for distro source packages needs to display better info < https://launchpad.net/bugs/417100 > [23:41] thumper: bug 618366 and bug 736014 [23:42] <_mup_> Bug #618366: Question:+huge-vocabulary is often slow (10% of requests) < https://launchpad.net/bugs/618366 > [23:42] <_mup_> Bug #736014: BugTask:+huge-vocabulary timeout < https://launchpad.net/bugs/736014 >