/srv/irclogs.ubuntu.com/2011/11/17/#launchpad-dev.txt

lifelesswgrant: https://code.launchpad.net/~lifeless/python-oops-datedir-repo/bug-891251/+merge/8246900:01
wgrantlifeless: Why is the umask 077 in the first place?00:03
lifelessI don't know the backstory00:04
lifelesswe have multiple services like this though, have for ages00:04
wallyworld_StevenK: FYI, in my hide bug comments mp, i've added 2 methods to Bug which i believe may be similar to what you need - userCanSetCommentVisibility and userInProjectRole00:17
StevenKwallyworld_: I fear we may step on each others toes, then.00:18
StevenKwallyworld_: Let me finish what I'm in the middle of, and I'll show you what I have.00:18
wallyworld_ok00:18
wallyworld_we should try and consolidate00:19
StevenKExactly00:19
StevenKwallyworld_: http://pastebin.ubuntu.com/740741/00:34
wallyworld_StevenK: so it looks like code under # Otherwise, if you're a member of the pillar owner, drivers..... is similar to my userInProjectRole(), but my method iterates over all affected pillars and also checks for security contact00:37
* StevenK grumbles at Unity00:37
StevenKIf I run indicator-weather, I want you to stay in the notification area!00:38
wallyworld_StevenK: i've added new methods to IPersonRole: isBugSupervisor(obj) and isSecurityContact(obj). you could use these, plus the existing isDriber() API instead of your code00:38
StevenKisDriber()? Sounds interesting.00:38
* StevenK ducks.00:38
wallyworld_you know i can't type :-P00:38
StevenKWhy all affected pillars?00:39
wallyworld_because it's to control who can hide a bug comment00:39
StevenKAh00:40
lifelesswin00:40
StevenKRight00:40
lifelesswin win win win win00:40
wallyworld_ie the user is validated against the bug, not an individual bugtask00:40
lifeless2011-11-17 05:45:37+0530 [-]     self._oops_datedir_repo = DateDirRepo(config[section_name].error_dir)00:40
lifeless2011-11-17 05:45:37+0530 [-]   File "/var/launchpad/tmp/eggs/oops_datedir_repo-0.0.12-py2.6.egg/oops_datedir_repo/repository.py", line 93, in __init__00:40
StevenKwallyworld_: Right.00:40
lifeless2011-11-17 05:45:37+0530 [-]     self.metadatadir = os.path.join(self.root, 'metadata')00:40
lifeless2011-11-17 05:45:37+0530 [-]   File "/usr/lib/python2.6/posixpath.py", line 67, in join00:40
* StevenK kicks lifeless 00:40
lifeless2011-11-17 05:45:37+0530 [-]     elif path == '' or path.endswith('/'):00:40
lifeless2011-11-17 05:45:37+0530 [-] AttributeError: 'NoneType' object has no attribute 'endswith'00:40
lifelesswe have an error_dir setting of None somewhere.00:40
lifelessStevenK: its 6 lines, deal00:40
StevenKlifeless: Except with your internets, it takes 20 seconds per line00:41
lifelessTacException: Unable to start /var/launchpad/test/daemons/poppy-sftp.tac. Content of /tmp/tmp_Nitmg/poppy-sftp.log:00:41
lifelessthis might explain a lot, actually.00:41
wallyworld_StevenK: not sure if we want to introduce a isUserInProjectRole(pillar). your stuff doesn't require isSecurityContact(). maybe it's sufficient for you to just use the IPersonRoles stuff00:41
wallyworld_StevenK: https://pastebin.canonical.com/55928/00:44
wallyworld_plus there's the other existing IPersonRoles helpers00:44
wgrantlifeless: We have lots of missing errordirs.00:44
wgrantlifeless: You've not seen that before?00:44
=== gmb` is now known as gmb
lifelesswgrant: it wasn't fatal before00:45
lifelesswgrant: (for some bizarre reason)00:46
wgrantThat traceback was always there.00:46
lifelesswgrant: poppy is failing to start in ec200:47
lifelesswgrant: this is the error00:47
wgrantHmmm00:47
wgrantI see00:47
lifelesswgrant: I dispute 'always there'00:47
lifelesswgrant: what may well look similar is raising an oops barfing if errordir is None00:47
lifelesswgrant: this evaluates it for sanity a little earlier, because it was simpler.00:47
wgrantRight.;00:47
lifelessas such I think its a net win, but it puts back my landing my oops polish branch00:48
lifelesspoolie: which reminds me, any word on that email oops raising critical?00:50
sinzuiStevenK, do you have time to mumble about goals01:14
StevenKsinzui: Certainly.01:15
* StevenK fights with Unity on his laptop01:15
lifelesshow does this even work on prod01:15
lifelesswe've no error dir or oops prefix set for poppy.01:16
wgrantpoppy isn't meant to OOPS, is it?01:18
lifelesshah01:18
wgrantI didn't know it had anything installed to raise OOPSes.01:18
lifelessSSHService01:21
lifelesstakes a parameter for the oops config section to use, and installs twisted top level oops glue01:21
lifelessso yeah, it does01:21
lifelessbut it has never ever worked01:21
wgrantHah01:21
wgrantWell, poppy-sftp is not yet 18 months old.01:22
=== lifeless changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: Me! | Critical bugtasks: 277
lifelesswgrant: can you please do an incremental review on https://code.launchpad.net/~lifeless/launchpad/oops-polish/+merge/82359 for me ?01:29
lifelesswgrant: if you do, I can lp-land this bad boy (all the tests that failed are fixed by these commits)01:31
* StevenK kicks subunit for being stupid01:34
=== lifeless is now known as subunit
* subunit kicks StevenK for using me badly01:35
=== subunit is now known as lifeless
lifelessStevenK: seriously, whats the issue?01:35
StevenKlifeless: I have a stream, I want a list of failing tests only.01:37
wgranthuh02:00
wgrantMP diff in less than 30 seconds02:00
StevenKSomething must be wrong, then. :-P02:04
StevenKlifeless: OCR: Me! is about as useful as [rs=me] in a commit log.02:06
lifelessStevenK: if you can't figure it out you don't need a review02:09
huwshimilifeless: I have a review for you :P02:09
huwshimiok, ok, enough with the hassling02:09
lifelessStevenK: | subunit-filter --no-skips | subunit-ls02:10
lifelessStevenK: I seem to be giving you this recipe weekly, or something02:10
* wallyworld_ goes to have lunch with bigjools who is melting in the heat02:13
lifelesswallyworld_: he's in.au? say hi02:13
lifelesswgrant: so, incremental on https://code.launchpad.net/~lifeless/launchpad/oops-polish/+merge/82359 ?02:14
wallyworld_lifeless: here's in brisbane for 2 weeks to check out schools and houses02:14
huwshimiwallyworld_: Tell him to move somewhere a little further south02:15
lifelesssomewhere nice :P02:15
poolielifeless, yeah i might try changing the counters02:15
poolieec2 on tmpfses is doing approximately zero io02:15
pooliethat's nice02:15
wgrantlifeless: Sure02:15
pooliei haven't measured the 'before' though02:16
wallyworld_huwshimi: it still gets hot down there too. adelaide for example is often hotter than brisbane02:16
wgrantYes, but it's *Adelaide*.02:16
wallyworld_could be worse - could be sydney or melbourne02:17
* wallyworld_ runs away02:17
wgrantlifeless: Why are you UTF-8ing the URL in errorlog.py?02:18
lifelesswgrant: to eliminate the double escaping02:20
wgrantMmm, OK02:20
wgrantAnyway, approved.02:20
lifelesswgrant: the u1/isd wsgi stack gets de-%coded, de-utf8 coded urls02:21
mwhudsonthis whole visiting countries before moving to them is very cautious!02:21
lifelesswgrant: so oops tools treats a unicode url as probably garbage and immediately utf8 and % encodes it02:21
lifelesswgrant: thats why our oopses look bong url wise atm02:21
lifelesswgrant: I figure the only semi sane way out is to treat bytestring urls as 'from the wire' and unicode ones as 'from noone knows where'02:22
StevenKlifeless: That might be hint that subunit needs better docs02:23
pooliedeleting 'import threading' and 'import random' from test code can only be good02:23
StevenKwallyworld_: How is he melting in the heat? It's like 29 there?02:24
wgrantEep02:24
wgrantregression02:25
wgrant1716 InconsistentBuildFarmJobError: Could not find all the related specific jobs.02:25
StevenKCrap02:25
pooliereview for build failure please? https://code.launchpad.net/~mbp/launchpad/891028-notunique02:38
wgrantpoolie: The critical bit is probably fixed by the rollback. We'll see in half an hour or so.02:41
poolieoh you rolled back everything?02:41
poolieall 5 revisions or whatever02:41
wgrant[Branch ~launchpad-pqm/launchpad/devel] Rev 14304: [testfix][r=bac][rollback=14301]02:41
poolieit's still a bloody stupid bug, if it is what it seems to be02:41
rick_h_heh, that's what I was planning on doing last night02:43
rick_h_poolie: so when I brought that up in our stand up, it got brought up that there's some part of the tests that use the number for a "number of iterations" or something?02:43
rick_h_hmm, well you're still count() though nvm02:43
lifelessStevenK: well, TBH you're the only person that has this trouble02:44
poolieif they are counting on getting particular versions they need to be shot02:44
lifelessStevenK: perhaps the other users are unix diehards02:44
lifelessStevenK: have you considered using testr ?02:48
lifelessokies, time to vote, and due to early start, EOD too.02:53
lifelessenjoy y'all02:53
StevenKlifeless: Clearly, I am not smart enough to use subunit.03:09
thumpercan anyone give me a one liner to search for critical and high bugs using launchpadlib?03:15
thumperand I don't suppose I can search in one go over both packages and projects can I?03:16
thumperwgrant, poolie, StevenK: ^^?03:16
StevenKI don't think searchTasks() will bend to that particular case.03:16
wgrantsomecontext.searchTasks(importance=['Critical', 'High']), I expect03:18
wgrantIt will only search over one context, or all contextys.03:18
StevenKSo you probably want to fetch your DSPs and then sprinkle in your products and call searchTasks over each of them03:19
wgrantjtv: Can we have our builders back yet?03:19
thumperwgrant: thanks03:20
jtvwgrant: actually I was hoping to get you to try it for ubuntu uploads first.03:20
jtvOnly my mouse pointer went off somewhere and using my system's a bit hard.03:21
wgrantlifeless: Are the tracebacks not going to ENOSPC us reasonably quickly?03:25
thumperwgrant: how do I get a source package from a distro (ubuntu) in launchpadlib to use as a bug target?03:30
jtvwgrant: any chance you could try out a bunch of concurrent ubuntu builds on dogfood?03:30
wgrantthumper: lp.distributions['ubuntu'].getSourcePackage(name='some-broken-compiz-plugin')03:33
lifelesswgrant: the new pruner is ready and usable03:33
wgrantlifeless: Ah!03:33
wgrantlifeless: That is good news.03:33
lifelesswgrant: its in oops-datedir-repo 0.0.1203:34
poolielifeless, i'm having a bit of trouble understanding why you would want bugs in the help text to just not be tracked at all03:34
thumperta03:34
lifelesswgrant: and I've ping in a few rt's about it :P03:34
wgrantlifeless: Right, but there are like 100 RTs :)03:34
wgrantAnd not much IS this week.03:34
lifelesspoolie: uhm, I may well have knee jerked.03:35
wgrantjtv: Maybe.03:35
lifelesspoolie: the combination of not-code and critical got to me03:35
wgrantjtv: Ubuntu in particular, or just non-virtual?03:35
lifelesspoolie: perhaps a better reaction would have been to retarget it to launchpad-moin-help-theme and priority low03:36
poolieimbw, i thought broken links were critical03:36
poolieit's not a bug in the theme either03:36
pooliei will as you suggest justnot mention the ppa03:36
pooliepeople can use the one on oneiric03:36
lifelesspoolie: oopses are critical; broken links generated from within LP oops (by design) and those are thus critical03:36
lifeless\o/ mirror finally got onto multiverse03:39
lifelessnow I can install locally, in principle.03:39
wgrantmirror?03:41
lifelessI've been bootstrapping an ubuntu archive mirror for a while now03:42
thumpergah03:42
lifelessslow nets03:42
lifelesslong pipe03:42
* thumper foiled by unicode again03:42
wgrantOh.03:42
lifeless150kB peak rate/s03:42
wgrantI was about to say, the mirror package has been around for as long as I can remember.03:42
pooliejesus03:45
pooliethe use of randomness in tests just gets worse03:46
lifelessallenap: https://bugs.launchpad.net/txlongpoll/+bug/891251 may interest you03:48
_mup_Bug #891251: txlongpoll oopses are recorded with the wrong permission, causing oops loader script to fail with a permission denied error <Python OOPS Date-dir repository:Fix Released by lifeless> <txlongpoll:Triaged> < https://launchpad.net/bugs/891251 >03:48
jtvwgrant: in principle, we want to exercise all kinds of job we have.  I just don't feel we can realistically do it.  I think I'll try TTBJs though.03:48
poolielifeless, thanks for the review of the randomness patch03:58
poolieit turns out the testtools one will not quite fit03:58
lifelessah well04:05
poolieit's good to know it's there though04:05
jtvwgrant: I think it would make sense to do some ubuntu uploads on dogfood, in case it exercises other code paths that write to the database without having been permitted to do so.  Once my branch lands, there's a good chance that we'll find more of these.  We should minimize that risk though.04:15
wgrantjtv: You can't throw your 10 zillion hellos at Ubuntu?04:18
jtvCan I?04:18
wgrantWhy not?04:19
jtvIndeed, why not?04:19
jtvwgrant: what location should I feed to dput?  My “incoming” setting is “%(dogfood)s”.04:23
wgrantjtv: dogfood:ubuntu04:23
jtvThanks.04:23
wgrantOr dogfood:ubuntu/oneiric to override the series04:23
poolieit's kind of interesting how the lp test suite doesn't use a full cpu even when it's not doing io04:26
pooliei don't know what it is doing04:26
jtvpoolie: sledgehammer trick — ctrl-C it and look at the backtrace.04:26
pooliemm i know04:27
jtvMy apologies.04:27
jtvI guess we're not doing enough context switches (yet) to make that the cause.04:28
poolieit's ok04:28
jtvI mean, to make context switches the cause of such symptoms.04:28
pooliewe might be04:28
pooliethere is a lot of interprocess io04:28
pooliemwhudson, still here? could you read https://code.launchpad.net/~mbp/launchpad/ec2-region/+merge/8248704:29
mwhudsonpoolie: looking04:29
* mwhudson goes cross-eyed04:31
mwhudsontime to try meld04:31
poolie:/04:31
jtvpoolie: I'd be quite interested to learn how you see the interprocess I/O going on, incidentally!04:31
pooliestrace04:32
poolielots of reading and writing on sockets04:32
jtvAh   :)04:32
pooliei guess talking to the db04:32
jtvDoes strace show the difference between a socket and a file?04:32
mwhudsonthere is also iotop i guess?04:32
* jtv runs that04:32
jtvFun, thanks!04:33
poolienot directly04:33
pooliethough if you see it previously polling on the fd, or things like that, it's a good clue04:33
jtvTrue.04:33
jtvThere's also the "wa" column in "top," but that's only a global number.04:34
StevenKpoolie: Multiverse is required04:34
poolieStevenK, it's added by the sed line a bit higher up04:35
pooliein a way that does not hardcode the region04:35
StevenKRight04:35
jtvwgrant: where do I observe my uploads to ubuntu?  /ubuntu/+builds?  Or is there more?04:36
StevenK/ubuntu/+source/<spn>04:37
jtvThanks.04:37
poolieStevenK, is that what you were asking about?04:37
StevenKpoolie: Yes, but your branch still makes me ... uneasy04:38
pooliecause it's changing something dangerous?04:38
StevenKBecause it's changing something that isn't well tested.04:39
poolieyeah i know04:39
StevenKAnd ec2 issues are hard to debug04:39
pooliemuch like testing lplib clients, it's hard to test it without a whole server cluster on the other end04:39
pooliefwiw this makes several failure modes easier to understand04:39
StevenKWhich isn't helped by the ec2 test runner going "Hrm, can't work out what is going on. sudo halt"04:39
poolieyeah04:40
pooliewe could easily have an option to not do that04:40
mwhudsonpoolie: surely you can delete _convert_instance_type now?04:42
pooliefwiw i've run it several times here with no unfixed errors04:42
pooliedone04:43
* mwhudson is reminded that, now we don't do the private dependency thing, ec2 test could detach plenty quicker04:45
pooliethat would be nice04:45
poolieespecially when travelling04:45
StevenKmwhudson: Fix eet?04:46
poolieStevenK, i'm kind of glad i broke my personal ice of finding this too scary to change04:46
mwhudsonStevenK: not today04:46
mwhudsonpoolie: \o/04:46
wgrantWell, there are several tests or04:46
wgrantfunctions reached from tests that reset the random seed, for instance04:46
wgranttest_token_creation just sets it flat out to zero04:46
wgrantWhat04:46
mwhudsonit's not that bad code04:46
wgrantseriously?04:46
poolie"wgrant moment"04:46
wgrantHeh04:47
mwhudson!!!!!!04:47
pooliesomeone from ubuntu will tut me if i write down here what i actually said04:47
poolie"i want something kinda random but not actually random"04:47
mwhudsonthe reason for the randomness iirc was to stop people putting 'person-name15' in doctests04:48
mwhudson:(04:48
pooliehaha04:48
wgrantYeah :(04:48
poolieit now starts at 100,000 and counts up across all tests04:48
StevenKWhich didn't actually work04:48
pooliepeople will realize pretty soon it's not predictable04:49
poolie:/04:49
StevenKSince people started doing factory.makePerson(name='fred')04:49
pooliei hope they don't count on it being 6 digits but we can only do so much04:49
StevenKTBH, I write my tests to not care. I just want an IPerson.04:49
mwhudsonStevenK: that's ok04:50
jtvwgrant: process-upload.py doesn't like “dogfood:ubuntu” as my dput upload path.  It says: Could not find distribution 'dogfood:ubuntu'.04:50
mwhudsonif you care about the name, you can care about the name04:50
mwhudsonyou just have to be explicit about it04:50
wgrantjtv: dogfood:ubuntu, not dogfood:dogfood:ubuntu04:50
poolieso can i get an upvote?04:50
pooliehttps://code.launchpad.net/~mbp/launchpad/891028-notunique/+merge/8248004:50
nigelbDId you guys fix the random thing not being actually random? :)04:50
jtvwgrant: whoops, you're right.  Sorry.04:50
pooliei think doing random.seed(0) at the start of the tests is arguably a good idea04:50
mwhudsonpoolie: approved your branch btw04:50
poolielet's not pretend04:51
pooliethanks04:51
mwhudsonpoolie: yeah, seed dependent failures are bad04:51
poolienigelb, see above04:51
nigelb\o/04:51
nigelbNice.04:51
* nigelb reads the mail thread as well04:51
nigelbHow did these tests work until this week.04:53
pooliethere used to be say 2500 getUnique calls before you reached this test04:54
poolienow there are 2501, and that causes the counters to collide04:54
poolieor 2512312 and 251231304:54
rick_h_lol, damn +104:54
poolienot necessarily exactly one more04:54
nigelboh. wow.04:54
pooliebut the patterns aligned04:54
pooliei'm not totally sure but it looks a lot like that04:54
mwhudsonpoolie: approved your other branch too04:55
pooliei have to confess i have not run its own tests locally yet04:55
pooliefor ec204:56
wallyworld_lifeless: oops raising question for you. attempting to delete the last bug task raises a CannotDeleteBugtask exception and oops in browser. this doesn't normally happen except if two users are involved and step on each others' toes. i am going to fix the web ui to display a nice message. if i catch the exception in the view code, will that still generate an oops on the server side? do we care?04:57
wgrantwallyworld_: If you catch and don't reraise, it won't log an oops.04:57
lifelessthe view code is server side04:57
wgrantOnly unhandled exceptiongs log oopses.04:57
lifelessif you catch it, its handled, fin.04:58
wallyworld_lifeless: cool. i was hoping that would be the case, just wanted to double check. thanks04:58
wallyworld_wgrant: thanks to you too04:59
jtvwgrant: found out why my builds aren't getting through — I have no upload rights to Ubuntu Main.05:01
jtvAnything simple I can poke in the database to change that?05:01
wgrantAdd yourself to ubuntu-core-dev05:02
* jtv fiddles05:02
huwshimiwallyworld_: Following up on yesterday, I'm just now taking a look, and not quite sure how I override the io request for the test (in https://code.launchpad.net/~huwshimi/launchpad/tag-cloud-removal-709009/+merge/81689)05:03
* wallyworld_ looks05:03
huwshimiwallyworld_: It's trying to get a URL for the request from the HTML05:04
huwshimiwallyworld_: I can pass in the config, but what I really need to do is pass it the response05:04
huwshimiwallyworld_: I might be missing something here05:04
wallyworld_huwshimi: so you want to force io_provider to be an instance of MockIO so that your test can check the correct url is being used in the get and also to allow you to poke in a return value05:06
wallyworld_so in the call to setup_taglist(config), you make config = {io_provider: your_mockio_instance}05:06
wallyworld_your test will call setup_taglist05:07
wallyworld_once setup_taglist is called by your test, then you poke in the return value05:08
wallyworld_by calling a method on the mockio instance05:08
poolieare there any objections to me landing the deletion of lib/canonical/buildd?05:09
poolieit will then only be an external dependency05:09
wgrantIf the tests pass, go ahead/05:09
pooliewe have already deployed from the external tree to all the buildds05:09
pooliethanks05:09
wallyworld_huwshimi: see for an example get_intensity_listing in test_buglisting.js (there are many others also)05:10
wallyworld_huwshimi: ListingNavigator is constructed with a mockio instance05:11
wallyworld_huwshimi: thwn later, mock_io.last_request.successJSON(xxxx) is called to simulate a value sent back from the xhr call05:11
wallyworld_clear as mud?05:12
huwshimiwallyworld_: hmmm05:13
wallyworld_is that a good hmmm or a bad hmmm05:14
huwshimiwallyworld_: Sorry I'm dealing with too many things at the moment, it's a slightly unsure hmmm, I'll have a proper look in a sec05:15
wallyworld_np. take your time05:15
jtvwgrant: I've got some uploads, which process-upload.py said it set to UNAPPROVED.  What comes next?05:24
huwshimiwallyworld_: Oh, so I need to call the function that would be called on io:success manually?05:25
wgrantjtv: Approve them :)05:25
jtvHow?05:25
wgrantAdd yourself to ubuntu-archive05:25
* jtv fiddles05:25
wgrantAnd go to https://launchpad.net/ubuntu/someseries/+queue05:26
wgrant+dogfood05:26
wallyworld_huwshimi: no, that is done when you poke a successful response back into the mock io provider using for example successJSON(xxx)05:26
wallyworld_huwshimi: you can also pass in data simulating an error response05:27
huwshimiwallyworld_: Ah I see05:27
wallyworld_huwshimi: so, if you factor out the success handler to it's own method, you can do stuff like test that method separately without and io involved at all05:28
wallyworld_just call it from your test with data and see that the DOM is manipulated as expected05:29
wallyworld_there's a few ways to skin the proverbial cat05:29
wallyworld_huwshimi: more examples in test_bugtask_delete.js05:29
huwshimiwallyworld_: Yeah, was looking at that05:30
huwshimiwallyworld_: I think I'm understanding now05:30
wallyworld_:-)05:30
huwshimiwallyworld_: I didn't realise that setting the mockio.success() would call "io:success"05:30
wallyworld_ah, right. it's handy like that.05:31
wallyworld_it allows you to simulate a server request -> response without getting into all the io glue05:31
wgrantpoolie: Did you break lp-buildd?05:39
wgrantmake: dh_lintian: Command not found05:39
wgrantTrying to build 100 in hardy05:39
huwshimiwallyworld_: Is there a way to make the log console more verbose? It's telling me about an error, but doesn't tell me where05:48
wallyworld_huwshimi: you looking at the log in the page or the browser console (F12 in firefox)05:49
wallyworld_?05:49
pooliewgrant, i hope i didn't break it05:49
pooliewhere did that happen?05:49
wgranthttps://launchpad.net/~launchpad/+archive/ppa/+build/293260005:49
wallyworld_huwshimi: i thing firebug's browser log may be more verbose05:49
wgrantMaybe it was jelmer(?)'s cleanups.05:49
wallyworld_huwshimi: other than that, it's debug js time or add Y.log()s05:50
huwshimiwallyworld_: Hmm.. that just shows me an error in yui.js05:50
wallyworld_huwshimi: ah, you haven't included all dependencies in the html file05:50
wallyworld_you need to include each lp js file required, one by one05:51
wallyworld_that'05:51
wallyworld_s most likely what's wrong05:51
pooliewgrant, i don't think i've landed any changes to it since the last deployment05:51
wallyworld_if you look at an existing html file, you'll see a block for including all the yui stuff, then each lp file included under that05:51
huwshimiwallyworld_: Ah I see05:51
pooliei have one outstanding change up for review05:51
huwshimiwallyworld_: Thanks, I was thinking, but I've added it to use(), but we don't have a combo loader :)05:53
wallyworld_yep :-)05:53
huwshimiwallyworld_: :(05:53
pooliewgrant, yes, jelmer changed launchpad-buildd to run dh_lintian during its own build05:53
wallyworld_not yet anyway. it keeps getting talked about from time to time05:54
pooliei guess he assumed it was in build essential or something05:54
StevenKIt's in debhelper, just the version in hardy is too old05:54
StevenKCheck if dh_lintian is in $PATH in debian/rules, or backport debhelper05:54
pooliek05:55
pooliei have to go out for a bit05:55
poolieplease file a bug or fix it or both05:55
* StevenK is down to 7 test failures, from 132.05:57
poolierunning on tmpfs is 10 minutes, 5% faster05:57
* wallyworld_ goes to get the kid from school05:58
StevenKAt 5pm?05:58
StevenKOh, bloody daylight savings.05:58
wgrantlol qld05:59
nigelbI thought australia was sane about DST?06:10
wgrantNo DST is sane.06:11
StevenKNo06:11
wgrantBut we are a bit special.06:11
huwshimiit's getting better06:12
wgrantThe eastern states are all in the same timezone, except that Queensland doesn't do DST.06:12
wgrantSo they stay an hour behind.06:12
StevenKWA no longer does DST06:12
wgrantAnd occasionally one of the other states will decide to change their DST rules one year because why not and what could go wrong.06:12
StevenKI'm not sure about SA and NT06:12
wgrantAnd then the WA government will announce with two weeks' notice that they're doing DST.06:12
wgrantAnd then abolish it again the next year.06:13
huwshiminigelb: So no, not really :)06:13
StevenKCurrently, New South Wales, Victoria, Tasmania, Australian Capital Territory and South Australia apply DST each year, from the first Sunday in October to the first Sunday in April. The Northern Territory, Queensland and Western Australia do not observe DST.06:14
wgrantWith notable exceptions.06:14
StevenKIn December 2008, the Daylight Saving for South East Queensland (DS4SEQ) political party was officially registered, advocating the implementation of a dual-time zone arrangement for Daylight Saving in South East Queensland while the rest of the state maintains standard time.06:15
StevenKOh, sure. That won't be confusing at *all*06:15
wgrant"On 12 April 2007, New South Wales, Victoria, Tasmania and the Australian Capital Territory agreed to common starting and finishing dates for DST."06:16
wgrantIIRC there were changes due to the Commonwealth Games in '0606:16
wgrantAnd probably the '00 Olympics as well.06:16
StevenKThat sounds right06:16
wgrantBut they were well-announced.06:16
wgrantUnlike WA's stupidity.06:16
StevenKThere certainly were for the '00 Olympics06:16
StevenKWe had another two weeks of DST06:17
wgrantI don't recall.06:17
StevenKI think it was only NSW.06:17
StevenKBecause lolympics06:17
wgrantNah, probably applied everywhere, but I don't remember.06:18
StevenKWell, you were 806:18
wgrant906:18
StevenKDamn, I was close06:18
wgrantYeah, all the AEDT-observing states and territories were affected.06:18
StevenKAh06:18
StevenKHeck, I was out of high school in '0006:18
wgrantYes, but you're prehistoric.06:19
StevenKBack in my day, people respected their elders.06:20
huwshimiwgrant: I'm not sure about prehistoric, maybe more like carefully not remembered06:20
nigelbFun!06:29
huwshimiSo, I have a js module that works fine except when I load it to be tested it can't access Y.lp.client. Any suggestions for what obvious bit of info I'm overlooking?06:49
huwshimiI may have to provide some more info....06:49
huwshimiugh, nevermind06:51
huwshimiHow is it helpful for NodeList.hasClass('foo') to return a list of booleans?07:46
huwshimiFrustration.07:47
wgrantWhat else would it do?07:47
huwshimiwgrant: Well it would be nice to provide a way to actually get the nodes07:48
huwshimiinstead of "[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true]"07:48
huwshimiwgrant: I'm just not sure what situation getting an array like that would be useful for07:50
wgranthuwshimi: .all(".foo") doesn't work?07:52
huwshimiwgrant: Well I can just do .filter('.foo')07:53
huwshimiwgrant: I'm just confused by the usefulness of .hasClass on a nodelist07:53
wgrantOr that.07:53
huwshimior lack of07:53
wgrantWell, you could conceivably want to check.07:53
wgrantIt's the logical thing for hasClass to do07:53
jtvwgrant: question about findBuildsByArchitecture… it only returns cases where BPPH.architecturetag == BPB.architecturetag.  Doesn't that exclude arch-all for all but the nominated architecture?  If so, is that intentional?07:54
wgrantjtv: Where's that?07:55
wgrantI haven't seen that API before...07:56
jtvSorry.  SPR.findBuildsByArchitecture07:56
wgrantHuh, didn't know that existed.07:56
wgrant... and indeed it doesn't.07:56
jtvArgh.  I meant, getBuildByArch.07:58
wgrantAh.07:58
wgrantI know that well enough to realise that I probably don't want to dig into it just before dinner.07:58
wgrantBut let's see...07:59
wgrantjtv: It's meant to return the build for that arch.08:00
wgrantAs the name suggests.08:00
wgrantArch-indep binaries from the wrong architecture aren't useful in the search for such a build.08:00
jtvYes… just wondering if the implication for arch-indep builds is intentional.08:00
wgrantBecause they are published on all arches, from a single build.08:00
jtvRight.08:00
wgrantThere aren't arch-indep builds.08:00
wgrantThere are i386 builds that only build arch-indep binaries.08:01
wgrantBut they're still i386 builds.08:01
jtvRight, that's the ones I mean.08:01
jtvIf that's intentional, that answers my question.  Thanks.08:01
jtvThere's an annoying timeout on that query when approving uploads.  Turns out to be ridiculously faster to query all architectures at once.08:01
jtvEven without re-using the result across architectures.08:02
wgrantOh yes, createMissingBuilds is a horrible person.08:02
jtvGoes from 0.8s to 0.3ms.08:02
jtvRepeated for every architecture in the series.  The 0.3ms version would make even that repetition easy to eliminate—but why bother?08:04
wgrantThe whole thing needs to be rewritten.08:04
wgrantIt's crap.08:04
wgrantI never got around to it when I was on maintenance.08:05
wgrantBut it's a clear problem for both copies and queue operations.08:05
wgrantIt got a bit simpler with DDs.08:05
jtvI'm beginning to understand the appeal of Gentoo.  :-)08:08
wgrantHeh08:08
jtv“Yeah, whatever, we'll just exaggerate the speed advantage of a native compile and let the users take care of the building.”08:09
nigelbOh dear.08:09
wgrantWould make things *so* much easier.08:09
jtvFor the distribution side.  Not necessarily for the users.  :-)08:09
wgrantThe archive management side is all I care about :)08:10
nigelbwgrant: traitor :P08:11
rvbaHi lifeless, are you around?08:37
adeuringgood morning09:07
jtvhi adeuring09:14
adeuringhi jtv!09:14
jtvwgrant: I have my approved uploads, but how do I set the build farm to work on them?09:14
allenaplifeless: I'll put that txlongpoll bug on the board. I have too much WIP right now as it is, but I'll try and work on it next.09:16
lifelessallenap: thanks; it should be trivial, I didn't do the txlongpoll part because I figure its in active fiddling from you guys atm09:25
lifelessrvba: no, but whats up ?09:25
wgrantjtv: They'll build automatically.09:26
jtvEven on dogfood?09:26
rvbalifeless: ;) … In the mean time, jtv helped me and I got my problem sorted. We 'discovered' that having a cache size of 100 is a little bit small.09:26
wgrantjtv: Yes.09:26
lifelessrvba: the dev cache? I thought wgrant was landing a bump of that to 10L09:26
jtvwgrant: curses.09:27
lifelessrvba: we should make it match prod IMO09:27
wgrantjtv: Oh?09:27
rvbalifeless: yes, the dev cache, and no09:27
wgrantlifeless: Mmm, I decided I didn't have enough reason to do it.09:27
wgrantlifeless: It is somewhat helpful possibly.09:27
jtvNo need to make it match production.  Plenty of objects will be disposable anyway.09:27
wgrantjtv: Ah, you don't have any non-virt builders...09:27
lifelesswgrant: future request; please let folk you've discussed things with know of plan changes :)09:27
jtvwgrant: the company won't give me more hardware!09:27
wgrantlifeless: I didn't think it was a plan.09:28
wgrantMore of a thought.09:28
lifelesswgrant: ah, I thought it was a definite09:28
lifelesswe see about one headscratch a week for scaling tests where the dev/testrunner cache size is too small09:28
rvbatrue ;)09:28
lifelessI need to dig around and see how to switch the cache to non-evict mode for appservers.09:29
lifelessit would save some CPU cycles and avoid this sort of problem09:29
lifelessbut in the mean time - +1 on anyone changing it to match, or approximate, production.09:29
jtvlifeless: non-evict mode is StupidCache, which is what we used to have.  They required regular restarts.09:30
lifelessjtv: given we discard the entire cache between requests, I'm at a loss for why that would correlate with restarts being needed09:31
lifelessjtv: how did we decide it was the storm cache ?09:31
jtvlifeless: oh, you mean the appserver cache _in tests_?09:32
lifelessjtv: no, in prod09:32
jtvlifeless: rvba tried it.09:32
* jtv → otp09:32
lifelessin prod, we throw away the storm cache between requests09:32
lifelessWhat I'm actually worried about is performance tanking when we start evicting and lazy reloading objects.09:35
lifelessso a cache that does not evict, but still has an upper cap, would address my concerns.09:36
lifelessAIUI thats not the same as stupidcache09:36
allenaplifeless: That /could/ have similar problems, just with a different subset of retrieved objects (i.e. the most recently fetched ones). But at least it's not spending time evicting stuff that's already cached.09:46
jtvlifeless: completely forgot that we discard the cache between requests…09:47
=== allenap changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: allenap | Critical bugtasks: 277
jtvI don't see how you could usefully get a limit on cache size without eviction.  The StupidCache does neither; GenerationalCache does both but at a very low cost.09:48
rvbaallenap: can you have a "second look" at my MP please ;) https://code.launchpad.net/~rvb/launchpad/activereviews-bug-867941/+merge/8237509:49
allenaprvba: Sure.09:49
jtvlifeless: GenerationalCache detects that it gets too large, and drops a single large bucket of up to half the cached objects.09:49
jtv(The most recently used half-or-more objects stay cached)09:50
lifelessallenap: I am suggesting that it error when the cache would be full09:50
lifelessallenap: that would make it fail hard, which we can then review why it exceeded 10K live objects (or whatever)09:51
lifelessjtv: ^09:51
allenaplifeless: Okay, that's interesting. I like that.09:51
jtvlifeless: IIRC GenerationalCache has a separate “I'm full, do something about it” method that you could override.09:52
lifelessjtv: that might be an easy route to implementation - thanks09:52
jtvObviously I'd like to see us continue to use the generational cache.  :)09:53
lifelesswhy?09:53
lifeless[not trolling] - its an implementation detail, right? Is there something particularly good about it other than it choosing to discard things rather than thrash ?09:54
jtvlifeless: simply because I designed it specifically for our production use-case (as well as the tiny-cache use-case Storm was written for at the time) and I hate to see that work no longer be useful to us.  :)09:55
jtvAt the time we kept all objects in cache forever.09:55
jtvOf course there's also scripts, where it's still useful.09:56
lifelessah :)09:56
=== almaisan-away is now known as al-maisan
lifelessso, scripts are different, I haven't got a view on their needs yet - not one I could articulate or argue around09:57
jtvI'm not sure if we cleaned out all the nasty manual cache-clearing code in our scripts, although we did clean out some.09:57
jtvSome scripts are definitely best off with the generational cache: access too much data for StupidCache, working sets too large for the old LRUCache (not sure Storm even kept that one—I saw one script spend only infinitesimal time outside of the LRU accounting code), and lots of data that can be forgotten soon after use.09:59
jtvThe enormous LRU overhead only happened in an experiment on a test server, of course; the default LRU cache was just tiny.10:03
stubShould we hard fail if the cache 'fills up', or generate a soft OOPS?10:05
stub'fills up' in quotes given the current 10k limit is a number I pulled out of my arse a few years ago10:06
jtvallenap: rvba: more succinct version of what I said earlier.  :)   ^^^10:16
rvbajtv: indeed ;)10:19
jtvwgrant: maybe I do need to mark some builders as nonvirtual for this..?10:20
lifelessstub: soft oops is another option; something at least, rather than degrading silently and (probably) heavily10:20
wgrantjtv: Yes.10:20
jtvWill I kill anyone?10:20
jtvlifeless: there may even be separate actions you can override for “demote current generation” (i.e. “configured cache size exceeded”) and “retire old generation” (i.e. “this is not the first time I had to revolve generations”).  But maybe that's a bit arbitrary, since there can be any amount of overlap between the generations.10:22
jtvThink of them as equally-sized L1 and L2 caches, give or take.10:23
jtvwgrant: and in case you're interested… https://code.launchpad.net/~jtv/launchpad/bug-891493/+merge/8251410:28
wgrantjtv: Will review after the downtime. Sounds really good, though.10:29
jtvThanks.10:30
jtvwgrant: still no joy on the buildfarm.  :(10:35
jtvOh don't tell me it's simply not running again…10:36
jtvNope, nope, it's running.10:36
wgrantI just checked that.10:37
wgrantNothing in the logs for nearly 24 hours.10:38
wgrantRestart it?10:38
jtvYeah, I guess10:38
wgrantThat worked.10:40
jtvExciting.10:43
rvbalifeless: maybe you will want to give your opinion about the possible fix suggested on https://bugs.launchpad.net/launchpad/+bug/86794111:08
wgrantjtv: Approved with a comment.11:10
jtvThank you!11:11
wgrantrvba: I wouldn't optimise this too hard now -- the privacy schema is in the middle of changing entirely.11:11
rvbawgrant: but the main problem does not come from the private branches (even if I know that it might look like it does)11:12
rvbaThe huge number of public branches is the problem here.11:12
rvbaSeq scanning the public branches 4 times in one query without any optimisation is the problem. (see the original query)11:14
wgrantHmm.11:15
=== matsubara-afk is now known as matsubara
stubrvba: You should be able to create temporary tables on the slave dbs just fine.11:28
rvbastub: oh really?11:29
rvbaThanks for looking into that stub.11:29
rvbajtv: ↑11:29
stubrvba: (at least on production. You might get an error with the test suite in case we are being overly paranoid?)11:29
jtvstub: I tried creating one in a read-only transaction and that wasn't allowed.11:29
jtvThat is the only basis for my conclusion that it won't work on a slave, so disprove that and I stand corrected.11:29
stubjtv: Ok. So that is just in our test suite. This might be a use case for turning that behaviour off or adjusting it.11:30
stubjtv: I didn't think of temporary tables when I implemented it.11:30
jtvI tried it in psql, actually.11:30
stubRight. We don't use read only transactions when talking to the slaves. There are triggers on the relevant tables that block updates.11:31
stubAnd if we do, we can fix that.11:31
stubI am surprised that building a temporary table and an index is faster than embedding it as a CTE.11:32
stub1.2s is still high, but if it is an improvement its a step in the right direction.11:33
rvbajtv's proposition is a serious improvement over the CTE version.11:34
jtvIt's a massive improvement.11:34
jtvUnfortunately.11:34
stubyer. I was assuming pg would be smart enough to build any necessary indexes in RAM to make queries faster.11:35
jtvI didn't check whether the speedup was a consequence of the index or of the plan.11:37
rvbaI /think/ the speedup is explained line 20 21 (https://pastebin.canonical.com/55836/) but I'm not sure what it means exactly.11:38
jtvrvba: do you happen to have the CTE version handy?11:41
stubI'm braindead now and not looking at query plans :-)11:42
rvbajtv: https://pastebin.canonical.com/55835/11:42
jtvrvba: I meant the *plan* for the CTE version, sorry11:43
rvbajtv: hang on11:43
* jtv hangs on11:43
rvbajtv: https://pastebin.canonical.com/55780/11:44
rvbajtv: 2nd result11:44
stubhttps://pastebin.canonical.com/55945/11:44
jtvArgh—where does that formatting come from?11:45
rvbastub: this is just another run of the CTE version?11:45
stubhttps://pastebin.canonical.com/55946/ (had \x on sorry)11:45
stubrvba: yer, from prod11:46
jtvI wonder what a CTE Scan node really does.11:46
rvbaTotal runtime: 6029.359 ms ("my" run) != Total runtime: 1817.746 ms (your run)11:46
rvbaCrazy.11:47
jtvThat could be those buffer sizes I mentioned.11:47
rvbastub: can data hotness or something like this explain such a difference?11:47
stubrvba: Where are you running the query?11:47
stubrvba: first time was 2s11:48
rvbaI asked Tom H to run it on the prod db.11:48
rick_h_rvba: thanks for the MP review11:48
rvbaFTR the original query (without a CTE) is ~4.5 s (this is from oops reports)11:49
rvbarick_h_: you're welcome.11:49
rvbastub: so the CTE is a serious improvement after all.11:49
stubrvba: If it is random, could be conflicts with something like the branch scanner making updates11:49
stubrvba: I expect the CTE will perform the same as a temporary table for a single query, and a temporary table will win if you can reuse if for subsequent queries.11:50
stubrvba: But I haven't investigated much - this is just my assumption11:50
rvbastub: Right, but I see very different things in the 2 query plans:11:51
rvbaCTE Scan on visible_branches source_visible_branches  (cost=0.00..9412.66 rows=470633 width=4) (actual time=0.001..971.882 rows=465499 loops=1)11:51
rvbaThat's from the CTE version (obviously)11:51
rvbaIndex Scan using visible_branches_ids on visible_branches  (cost=0.00..4.00 rows=1 width=4) (actual time=0.017..0.017 rows=1 loops=86)11:51
rvbaAnd that's from the other version (with a temporary table)11:52
rvbaThe difference in the number of returned rows puzzles me… maybe there is an optimization that the index allows somewhere…11:52
stubrvba: yer. Adding the index is a wild card. I would expect that what you gain from being able to use the index is outweighed by the cost of building the index, but again this is just my assumption.11:53
jtvI think that's the number of rows it inspects, rather than the number of rows it returns.11:53
rvbaAh, that might explain the difference… and the speedup.11:53
jtvI think the CTE Scan is effectively a HOT table scan.11:54
rvbastub: jtv said the creating the index was instantaneous.11:54
rvbas/the/that/11:54
jtv(HOT standing for Heap-Only Tuples, tuple allocations that never need to be written to disk—I /think/ those would be used here but am not sure)11:55
rvbaIt would be nice if we could create the index in the CTE.11:56
jtvQuite.11:56
jtvI suppose nobody figured a single query would re-use the CTE's contents quite this much.11:57
stubYou could move the join with the CTE outside of the UNION, joining twice instead of four times. I think. Brainfried - I can look at it tomorrow if someone emails me the queries etc.11:57
stubThat might win for temp table too11:58
rvbaI suppose we want to avoid using temp tables if we can use CTE instead.11:59
stubmuch of a muchness11:59
jtvYes.11:59
jtvIn terms of code maintenance, I think CTEs are much to be preferred.11:59
rvbastub: I'll see if that possible… but the code that builds this query if pretty crazy to say the least ;)12:00
stubIt would be nice to rewrite the query so it doesn't need to materialize a big list of all public and private-but-visable branches12:00
stubie. select all branchmergeproposals where the branch is not transitively private, UNION ALL branchmergeproopsals where the branch is transitively private but visible12:01
stubJust because slinging around 400k resultsets is always going to be slow12:02
rvbaRight.12:02
stubAnyway... done for now. Email me with details if you want me to look at it tomorrow, or have fun :-)12:03
rvbaAgain, I'll have to see if that's feasible without a massive refactoring but it's worth having a look.12:03
rvbastub: jtv thanks a lot for looking into that.12:03
jtvnp12:03
rvbaI was misguided by my unlucky run :(12:04
stubAlso, I suspect we see some timing issues due to branchscanner sometimes locking things for longer than we would like. There are caches on the Branch table it maintains.12:04
rvbaI've added our recent findings to the bug as comments.12:07
timrcis there an agenda for the Launchpad Thunderdome? This page looks a little neglected, https://wiki.canonical.com/Launchpad/Sprints/ThunderdomeJan2012/Agenda13:09
allenapmatsubara: Hey there. Fancy reviewing a python-oops-tools branch? https://code.launchpad.net/~allenap/python-oops-tools/use-psycopg2-2.4.1/+merge/8253713:41
matsubaraallenap, sure, waiting for the diff to update13:46
allenapIt's taking an age :-/13:46
matsubaraallenap, r=me13:52
matsubarathanks for the fix!13:52
allenapmatsubara: Thanks :)13:53
=== al-maisan is now known as almaisan-away
sinzuitimrc, you found the correct page. We have not decided what the theme of work will be14:01
timrcsinzui, there was some off discussion about  moving some of Ubuntu's image building into LP... that topic is of particular interest to us.  If that makes it on the agenda, we'd like to know14:02
timrcs/off//14:02
sinzuitimrc, no. Our thunderdomes usually focus of tech-debt. fixing common issues that requires a lot of contribution.14:04
timrcsinzui, ok, good to know14:05
sinzuitimrc, We have a poor history of completing feature work that starts in an epic. Well we do, but it takes months because the work was not owned by a team that had a date to deliver it.14:07
deryckMorning, all.14:07
rick_h_morning14:08
deryckThe week of buildnot has made what's left of my hair turn even more gray.14:08
rick_h_hah, it's called "distinguished"14:09
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: allenap, jcsackett | Critical bugtasks: 277
sinzuiI was just thinking I should strip my hair, then when colour grows in I might not look so old14:10
rick_h_I just shave it off, saves on the hair cuts14:10
* deryck is going for nearly head shaved next round, too14:11
jcsackettallenap: you waiting for someone specific to look at your precise wiping script, or just haven't found a a reviewer yet?14:11
sinzuiI do not like the thought of having more hair on my body than on top of my head.14:12
allenapjcsackett: No, Aaron had a look yesterday. I'm never going to land it, so he didn't vote. I'll move it out of the review queue.14:12
allenapThanks though Jon :)14:12
jcsackettallenap: no need to thank me for *not* having to review something, but you're welcome. :-P14:12
=== almaisan-away is now known as al-maisan
deryckSo is anyone looking into buildnot?  I think the last email blames flacoste and lifeless.14:17
timrcsinzui, as a user, I would vote for fixing stability issues and doing tactical things to the UI to make it more enjoyable to use (and if that means fixing tech debt, then we have a win-win)14:18
deryckrick_h_, you have access to your work email now, right?14:19
rick_h_deryck: yes14:19
sinzuitimrc, indeed that is was we have done over the last 3 epics14:19
deryckrick_h_, just making sure, since I CC'ed your work email this morning.14:19
rick_h_yep, do you have time to chat on that pre stand up?14:19
rick_h_I wanted to chat on it if you get a sec14:20
deryckrick_h_, sure.  I'll jump in mumble now.14:22
=== matsubara is now known as matsubara-lunch
bacallenap, jcsackett: could one of you review https://code.launchpad.net/~bac/launchpad/bug-891641/+merge/8254414:53
jcsackettbac: sure.14:54
jcsackettbac: looks fine to me. r=me.14:54
bacthanks14:55
cr3hi folks, any plans to upgrade YUI to 3.4 in Launchpad?15:05
=== al-maisan is now known as almaisan-away
deryckflacoste, hi.  The latest build failure has you and lifeless listed as blamelist.  Did you take a peak yet, or do you need someone else to look?15:16
deryckcr3, hi.15:16
flacostederyck: i cannot be responsible for the latest failure, i swear15:16
flacostederyck: it's a XSL change that isn't tested15:16
deryckcr3, yes and no.  I want to skip 3.4 and jump to 3.5 in January.15:16
rick_h_deryck: I'm getting an issue starting my local env because of the timeline egg needing to update15:16
flacostederyck: unless it failed at the build step15:17
rick_h_where am I looking to pull that? make egg, build_egg and download-cache only seem to check the dir and all report "up to date"15:17
cr3deryck: hola, good to know. no rush, thanks!15:17
deryckrick_h_, if you use the rocketfuel script to update devel, it should work.  I think rocketfuel-get.15:18
rick_h_ah, thanks15:18
deryckflacoste, ok, I'll look and see what rev introduced an XSL change.15:18
flacostederyck: i mean, my change is to the WADL XSL file, and that cannot fail any tests15:19
deryckrick_h_, but in short, you have a download-cache that needs to have bzr up run in it.15:19
deryckflacoste, ah, sorry, I follow now.15:19
flacostederyck:15:20
flacostereference = u'a moment ago by Person-name-359157'15:20
flacosteactual = '14 seconds ago by Person-name-359157'15:20
flacostethat looks like a timing issue15:20
rvbaderyck: http://paste.ubuntu.com/741266/15:20
rvbaoops, too late ;)15:20
=== almaisan-away is now known as al-maisan
deryckflacoste, ah, same one then.  I missed that at first glance.15:21
rick_h_deryck: yea, I manually did a bzr pull and missed on getting the egg15:21
deryckflacoste, can we kick the build then?  Since changes should be in to fix that now.15:21
gary_posterI can't build the tree15:21
deryckrvba, thanks anyway! :)15:21
rvba:)15:21
deryckflacoste, sorry, ignore me again, I see it's not the same.15:22
derycktoo much red lines to me.  I got lost. ;)15:22
gary_posterI keep on getting complaints that builder.py can't import lpbuildd.slave15:22
deryckgary_poster, so perhaps you and rick_h_ are seeing someone forgot to commit to the download-cache then?15:22
gary_posterderyck, no, I don't think so15:22
gary_posterpossible15:23
rvbagary_poster: ah ! I had this one in ec2 this morning.15:23
gary_posterrvba, oh!  did you resolve it?  I've tried make clean && make to no avail, and have been trying other random things15:23
rvbagary_poster: http://paste.ubuntu.com/741269/ ?15:23
deryckrick_h_, could be sourcecode needs updating too then.  rocketfuel-get should do the right thing for you.  if not, make clean && make can correct these things.15:23
rick_h_yea, rocketfuel-get got me running15:24
gary_posterprecisely rvba15:24
rick_h_thanks15:24
rvbagary_poster: I solved it by merging devel and fixing the stupid missing directories conflicts.15:24
rick_h_oh that, yea same here15:24
gary_posterrvba, maybe I fixed the conflicts incorrectly...but when I diff my trunk against the main tree in doesn't report a diff15:25
rick_h_ooh, wrong one. I had left over directories from lp/buildd dirs15:25
gary_poster(and this was a problem in my pristine devel branch)15:25
rvbaRight, left over directories masquerading as conflicts.15:26
jmlthere's a thing you can do to avoid that15:26
gary_posterwhat is it jml?15:26
jmlAdd bzr.transform.orphan_policy=move to bazaar.conf15:26
jmlnot sure where the documentation for that lives, got the tip directly from vila15:26
rvbajml: good to know! thanks!15:27
gary_posterhuh, cool15:27
gary_posterthanks jml15:27
jmlnp.15:27
rvbathat's an insider's tip then :)15:27
gary_posterI guess I'll wipe away my tree and do it all from scratch and hope that does the trick15:27
rvbaThat would be the next random thing I would try too ;)15:28
gary_poster:-)15:28
gary_posterthanks15:28
rick_h_gmb: ping15:35
gmbrick_h_: Hi15:36
rick_h_gmb: howdy, I wanted to see if you had time to do a pre-implementation chat with me on https://bugs.launchpad.net/launchpad/+bug/72341715:36
* gmb looks15:36
rick_h_sometime in the not too distant future15:36
gmbrick_h_: I could do without context switching for the next while... How does ~16:30UTC sound?15:38
rick_h_sure thing15:38
gmbCool.15:38
gmbrick_h_: I'll ping you when I'm ready.15:38
rick_h_thanks, appreciate it15:38
gmbnp15:38
=== matsubara-lunch is now known as matsubara
deryckabentley, for our call discussion:  http://people.canonical.com/~deryck/field-state.png15:56
abentleyderyck: okay.15:57
deryckabentley, this represents my understand, which may well be wrong.  but I thought it was easier to explain my thinking with a pic.15:57
jmlWhen I change a milestone on a bug, I get a broken image link15:58
jmle.g. https://bugs.launchpad.net/testrepository/+bug/613181/undefined15:58
jmlinstead of the edit button that I've come to know.15:59
deryckjml, that was fixed once before already.  seems that gets broken a lot.16:01
jmlderyck: interesting, thanks.16:02
gary_posterOK this is kinda not cool.  I'm still unable to build LP ("ImportError: No module named lpbuildd.slave"), despite fresh checkouts and lots of random jiggling of things around. :-(16:15
jelmergary_poster: python-lpbuildd is a debian package16:16
gary_posterjelmer, ah!16:16
jelmergary_poster: if you update launchpad-developer-dependencies it should be pulled in16:16
gary_posterright, I should have remebered that thing to jiggle16:17
gary_posterthanks jelmer16:17
jelmergary_poster: it's just one of the gazillion ways in which launchpad pulls in dependencies16:17
gary_posteryes, I was thinking something similar jelmer. :-(16:17
gmbrick_h_: I'm free for a chat now if you are.16:33
rick_h_gmb: sure thing16:33
gmbCool.16:33
gmbrick_h_: Skype or Mumble?16:33
rick_h_what works for you? mumble, skype?16:33
rick_h_lol, either here16:33
rick_h_mumble and jump in orange room with me for a sec then?16:33
gmbrick_h_: Sure. Bear with me a sec...16:34
=== al-maisan is now known as almaisan-away
timrcgetting timeouts on staging when visiting, https://bugs.staging.launchpad.net/16:38
timrc OOPS-20c822b69c6c8fa38258f4a19efebcf616:38
allenaptimrc: If you keep hitting refresh does it eventually work?16:48
allenapAlthough the first query in the page is hideous.16:49
timrcallenap, it says, "Initiating launch sequence"... JK... I'll try16:50
allenap:)16:50
timrcallenap, hitting reload once did work16:50
allenaptimrc: Okay, it's probably a cold disk cache. That happens a lot on staging and qastaging unfortunately.16:51
timrcallenap, ah, okay16:51
timrcallenap, is it actually calculating those statistics in real-time?16:53
allenaptimrc: Yes, I believe so.16:54
timrcyikes16:54
adeuringallenap, jcsackett: could you please review this mp: https://code.launchpad.net/~adeuring/launchpad/bug-sorting-3/+merge/82562 ?16:54
allenaptimrc: Private bugs make things a little complicated.16:55
jcsackettadeuring: i'm in the middle of reviewing one right now, if allenap can't get to yours after that i'll take a look.16:55
allenapadeuring, jcsackett: I'll take it.16:55
adeuringallenap: thanks!16:55
timrcseems like a waste of CPU cycles16:56
deryckallenap, jcsackett -- I have a branch to get us out of testfix if one of you could kindly review it.17:04
deryckit's short.17:05
jcsackettjcsackett:17:05
jcsackettderyck: just looked.17:05
jcsackettr=me.17:05
deryckjcsackett, rockin' thanks!17:05
deryckalright, playing in pqm.  we should be out of testfix shortly.17:08
allenapadeuring: Have you tried some of those subqueries on production? They look like big red bad performance markers to me.17:10
adeuringallenap: right, there are problems for some bug targets, but we want to get a first version running (protected by a beta flag)17:11
adeuringallenap: but for other tagretsm the queries are quite fast17:11
allenapadeuring: Okay.17:11
abentleyallenap or jcsackett: could you please review https://code.launchpad.net/~abentley/launchpad/view-flags/+merge/82570 ?17:19
allenapabentley: If it'll take me less than 20 minutes, sure!17:20
abentleyallenap: I think it should.17:20
allenapOkay, deal.17:21
allenapabentley: Why "is_beta" rather than, say, "is_default", and/or including the default value?17:25
abentleyallenap: The use case of is_beta is to indicate whether the feature is in beta.  We could change the way we determine whether a feature is in beta, but we would still care about whether it was in beta, not whether it was the default.17:27
GRiDhey guys, fyi: https://code.launchpad.net/~launchpad-pqm/launchpad/devel/+activereviews seems to break17:27
allenapabentley: Okay, fair.17:27
allenapabentley: If related_features is empty the code still loops through flag_info. I guess that's not a big overhead, but it feels wasteful. It would be nice if there was a pre-prepared flag_info_map or similar, then you could loop through related_features instead.17:28
abentleyallenap: It's really not expensive to loop through flag_info, because it's a list of tuples of strings.  I don't know why poolie chose to implement it that way.  If there was a flag_info_map, I don't think we'd need the list.17:31
allenapabentley: Okay.17:32
allenapabentley: I have to go now, but I'll complete the review asap when I'm back.17:41
abentleyallenap: okay, thanks.17:42
rick_h_gmb: ping, heading your way: https://code.launchpad.net/~rharding/launchpad/bugfix_723417/+merge/8257717:50
=== deryck is now known as deryck[lunch]
rick_h_anyone know how I can work around this gpg issue when trying to use ec2 land? https://pastebin.canonical.com/55983/18:11
rick_h_my GPGKEY env var is set right, but the email on that is different since I added my GPG pre-starting18:11
rick_h_ok, that was part file permissions, here's a trace with not finding a gpg key for the work email addr https://pastebin.canonical.com/55984/18:19
rick_h_ok, nvm, I just changed it up for now and I'll add a new gpg key on the @canonical email address since I can't run different ones in the bazaar.conf it appears18:25
=== Ronnie1 is now known as Ronnie
=== deryck[lunch] is now known as deryck
flacostewe should revert mbp buildd removal19:19
deryckjcsackett, I have an itsy-bitsy teanie-weanie css change branch.  what say ye?19:25
lifelessmorning yeall19:27
flacostemorning lifeless19:27
flacosteyou've got stakeholders email!19:27
lifelessI do?19:27
flacosteyou do!19:27
lifelessI see a bunch19:28
lifelesswhich in particular is for me ?19:28
flacostethe one you are CC-ed on19:28
flacosteescalation request from skaet19:28
lifelesshah. lets see now ;)19:28
flacostebut i'm sure you'll have interesting opinions on others as well!19:29
jcsackettderyck: I am just finishing up a very late lunch, and then I am happy to take a look.19:29
deryckjcsackett, thanks! it's my latest on the review queue.19:33
deryckrick_h_, hi.  I see you're moving ahead with that expanding idea.... might I suggest you look at YUI plugins?19:36
rick_h_deryck: sure thing19:37
jcsackettderyck: R=me.19:37
deryckrick_h_, it's a nice way to add functionality to something to existing classes....19:37
deryckrick_h_, so you could plug anything that is a Y.Node instance, for example.  And then that node would know how to expand as you type.19:38
rick_h_ok, is there a place I should look at where we'd add the plugin?19:38
deryckjcsackett, awesome sauce, thanks!19:38
rick_h_I was starting to look at the stuff in formwidgets and seeing if it should be a type there19:38
deryckrick_h_, well, you'd create the plugin in one branch, independent of any use in lp.19:39
rick_h_in talking with gmb and looking at things, wasn't sure how to "apply" it since in a nice way across things since there's not a good hook currently19:39
rick_h_ic19:40
deryckrick_h_, honestly, I'm not sure how you'd apply it globally.  I'd have to have a think about that myself.19:40
rick_h_s/branch/repo  ?19:40
deryckrick_h_, I think I mean branch.  But not sure if we're having bzr-->git break down. :)19:40
deryckrick_h_, the thing you create and push to lp. :)  You need one for the widget, then a follow up branch to wire it up in lp....19:41
rick_h_right right now I started out thinking I'd add it to lp/app/javascript somewhere and add the object and the tests to the existing ones19:41
deryckrick_h_, you can, of course, do this in one branch, but I think you'll make a better plugin or widget if you do that on its own.19:41
deryckrick_h_, exactly.19:41
rick_h_right, ok. That's basically what I'm doing ok19:41
rick_h_I wasn't sure if you were thinking of making it a more generic YUI item that could be pushed to their gallery or something outside of LP19:42
deryckah19:42
deryckno, not at this point.19:42
rick_h_ok, sounds good19:42
deryckrick_h_, might be worth seeing if the gallery has something like this already.19:42
deryckrick_h_, has to be a common pattern.19:42
rick_h_yea, I didn't see anything but the gallery is a pain to find things in imo19:43
rick_h_hah, never mind. just don't use their search ui.19:44
rick_h_http://yuilibrary.com/gallery/show/text-expander19:44
deryckrick_h_, that's exactly what you want.19:47
deryckrick_h_, we're putting stuff from the gallery in:  lib/lp/contrib/javascript/yui3-gallery/19:47
rick_h_loading it up to test now and will see how it does19:47
rick_h_ok19:48
deryckrick_h_, you could probably add that and wire it up in one branch now.  since it's just an import from the gallery.19:48
lifelessflacoste: done20:07
flacostelifeless: "deep diving into tsearch2 plumbing" -> that put it outside the scope of escalated bug?20:29
lifelessflacoste: depends - who do we have that knows postgresql internals well enough to dig deep there - probably only jtv, but IMBW. Anyone else will need a longer run up, though I have confidence there are many folk that *can* do it, it would be less like maintenance scope, I suspect.20:32
flacostelifeless: and stub?20:33
lifelessflacoste: AFAIK he hasn't been down into the implementation API. I haven't asked though.20:33
lifelessflacoste: its not a matter of knowing data model - its C/C++ coding20:34
lifelessflacoste: *I think*20:34
flacosteok20:34
flacostei'll leave it out for now20:35
flacostenot like the escalated queue was empty anyway20:35
lifelesshah, no.20:35
=== matsubara is now known as matsubara-afk
lifelessmwhudson: hi; why does bug 881144 have linaro tasks ?21:26
_mup_Bug #881144: field.tags_combinator=ALL gives same results as with ANY when searching all bug reports <bugs> <qa-ok> <regression> <search> <Launchpad itself:Fix Released by rvb> <Linaro Android:Fix Released> <Linaro-Ubuntu:Fix Released> < https://launchpad.net/bugs/881144 >21:26
mwhudsonlifeless: no idea off the top of my head21:28
mwhudsonlifeless: i guess because of asac's comment21:29
lifelessI'm extremely tempted to delete them :)21:29
mwhudsoni presume the "Removed milestone. Wait for new TI LT Kernel." comment was misdirected21:29
lifelessplus toggling on and off the status of the two tasks21:30
deryckabentley, I *just* used Y.each on an object literal.  hurray for new knowledge.21:46
abentleyderyck: :-)21:47
=== jcsackett|afk changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugtasks: 277
=== jcsackett|afk is now known as jcsackett
derycklifeless, I replied briefly in the bug about client/server rendering, but for the sake of higher bandwidth, can we chat here about sessions?22:06
lifelesssure22:07
lifelessor voice if you want22:07
wgrantderyck: Could you QA https://bugs.launchpad.net/launchpad/+bug/887646?22:08
_mup_Bug #887646: Advanced search showing new bug sorting widget <bug-columns> <qa-needstesting> <ui> <Launchpad itself:Fix Committed by deryck> < https://launchpad.net/bugs/887646 >22:08
deryckwgrant, oh, I thought I did way back.  sorry.22:09
derycklifeless, so is the sesssion cookie hashed, or plain strings?22:10
StevenKderyck: There are two bugs linked to the branch. Both need to be qa-ok22:10
lifelessderyck: oh, you want me to know whats in the code ?:P22:10
deryckwgrant, StevenK -- yeah, I'm so sorry.  That's been qa-ok for awhile.22:11
derycklifeless, right. when I say "read" I mean the js code needs to see plain english, not a string it needs to decode.22:11
lifelessderyck: lib/lp/services/session/model.py22:12
wgrantHuh, what are you doing with sessions?22:12
wgrantThe JS should not know about them.22:12
StevenKwgrant: I'll sort out a deployment request22:12
deryckwgrant, I'm not doing anything with sessions.  lifeless wants me too. :)22:12
lifelesswgrant: a 'because' would help. Also see the bug22:12
deryckhe means js should be able to decipher the hash.  which is what I mean.22:12
wgrantO_o22:13
wgrantno22:13
derycks/should/should not/22:13
deryckwgrant, does the replace make that correct now?  do we agree? :)22:13
wgrantYes22:13
deryckok :)22:13
lifelessderyck: so server side its a pickle22:14
wgrantThe content is a pickle.22:14
lifelessderyck: we have state in there, and we can add more state, and so forth22:14
wgrantThe cookie is a hashed reference to the pickle.22:14
deryckright22:14
lifelessderyck: I haven't suggested the raw content be sent over the wire at any point22:14
deryckno, you haven't, sorry, didn't mean to give that impression.22:14
lifelessderyck: AIUI you need to store a new variable in a clients browser22:14
deryckyes, it's like a url query string basically.22:15
lifelessderyck: you also don't care if this is lost when the user clears local state, switches machines etc.22:15
deryckright22:15
wgrantWe used to just store them in additional cookies.22:15
wgrantFor storing portlet expanded state.22:15
lifelessso one complication here is that at least for a sort widget, the view has to render differently22:16
lifeless(in fact it has to render differently for non-js browsers with columns as well)22:16
lifelesss/columns/selected fields/22:16
lifelessI don't really care how this is done, the thing that has little alarms going off is the assertion the view doesn't care :)22:17
derycklifeless, it doesn't care because we do it all on the client.  we do render a basic view with the same template, but it doesn't get any of the js widgets to change the display of fields....22:18
deryckso if no js, no widgets, no need to read cookie.22:18
deryckthe cookie is only useful to the js widgets that redraw the list.22:18
lifelessderyck: so you'll deliver it with content A, and immdiately redraw with content B ?22:19
lifelessderyck: naively, I'd expect that to look a little jerky22:19
lifelessderyck: I probably don't understand the issue22:20
derycklifeless, no, we render based on the model in js.  so thing of it like a bunch of widget state being updated.  one widget use cookies to maintain it's state across page loads.22:21
deryckthen after looking into all that state, we render the template on the client.22:21
deryckit's actually quite sexy ;)22:21
lifelessderyck: yes, I get that. Whats the *initial* html delivered to the client though ?22:21
lifelessderyck: doesn't that initial content have a batch, rendered on the server (and mirrored into the client cache) ?22:22
lifelessderyck: (I agree its sexy, its a very nice thing you've been building!)22:23
derycklifeless, not rendered.  there is an initial server rendered batch, but AIUI, we're not showing that on page load.  only if you have js disabled....22:24
lifelessah22:25
derycklifeless, if js is enabled, we render on the client completely.22:25
lifelessand I presume the js is lightning fast ;)22:25
lifelessso, something you could /consider/ is to use this state to render the initial batch on the server exactly as the client needs it, saving a few client side cycles (and not costing server side ones as we render anyway)22:26
derycklifeless, it is pretty fast, yes, and we've been mindful of that.  we think we may have a couple ways to speed it up even more.22:26
lifelessthen the client side render would only need to kick in when someone changes something22:26
lifelessanyhow, I understand a bit better now.22:27
deryckok, cool.22:27
lifelessfrancis and I both reaching for the session state is possibly just knee-jerk reactions22:27
lifelessI wouldn't want to see a massive proliferation of cookies though22:27
lifelessbecause cookies are sent on *every* request, they can become quite big.22:28
deryckno, it makes sense for a lot of cases.  and I agree, we don't need a lot of cookies.22:28
deryckand if we need more client state as our js use grows, and we don't want to get into js apis to poke at the session, we could share a single cookie for all client-side state.22:28
lifelessso my inclination would still be to use the session state, emit the knob to js explicitly (e.g. via the cache) only on pages that need it, and use an API call or whatever to tell the server its being set22:29
deryckyeah, I agree we might need to get to that.  I think that's a bit much for my small cookie use now.22:29
lifelessIIRC facebook do something similar; they have just enough cookies to id the user, the machine, and then the rest of it is js22:29
lifelessderyck: the reason for my concern is you only have a few hundred bytes before requests will be getting split into multiple frames22:30
lifelessderyck: so a 15 byte unique name + value in a cookie is actually a Big Deal.22:30
deryckI see what you mean.22:31
lifelessderyck: multiple frames for a request is a huge performance hit, as I'm sure you know22:31
deryckindeed22:31
wgrantHow do cookies interact with having multiple searches open?22:31
lifelessif you want to use a cookie, I suggest doing a bit of defensive digging into our current request sizes - we may be already terrible, in which case I won't hold you to a higher standard.22:32
lifelessor we may be very safe, in which case cool.22:32
lifelessor we may be right on the border, particularly with POST requests, and I would really push back hard on you at that point22:32
derycklifeless, ok, how about this?  The branch I have for this is quite small.  Let me get it working.  Then in the week of polish we do, we can explore this further and make sure we're good.  fair enough?22:33
lifelessderyck: the risk is that you'll cause a site wide one round trip additional latency for every user.22:33
lifelessderyck: I think thats a pretty big risk.22:33
lifelessderyck: and I have not good sense about the probability.22:33
lifelessderyck: mmm, scratch that, my logic is bong.22:34
lifeless*users that cause the cookie to be set*...22:34
deryckright22:34
lifelessso, sure, go ahead - but lets make sure the t's are crossed and the i's are dotted *before* it is enabled beyond ~launchpad.22:34
derycknot everyone, I'd guess *most* won't have this cookie.22:34
lifelessderyck: as soon as they fiddle with the feature they will get it22:35
deryckcorrect.  well, fiddle with the display of fields.22:35
deryckyou can sort all day without changing fields.22:35
lifelessso how does that sound? land now, research and fix if needed before widespread (> ~launchpad) use ?22:35
derycklifeless, are you ok with opening it for beta users without running this issue to ground?22:35
lifelessI'm worried about opening it to beta users22:36
lifelessdeleting the cookie, if we change our mind and want to remove the overhead, will be a nuisance.22:36
derycklifeless, ok, fair enough.  I'm fine to land now, and dig into it completely before opening further than ~launchpad.22:37
lifelessIf you're up for making that automatic (e.g. delete-cookie in a reply if we see it in a reqest), then I don't mind ~beta-users getting it22:37
derycklifeless, let's just settle the issue before opening to beta.  should be easy enough to do tomorrow, to work out how we're doing on page size.22:38
derycklifeless, that's the main issue, right?  the total page size.22:38
lifelessderyck: request size22:38
derycklifeless, right, sorry.22:38
lifelessderyck: set-cookie in the odd response is nothing, cookie: in everyrequest, is :)22:38
lifelesss/is :/may be :/22:39
deryckright, I follow.22:39
deryckI'll do some follow up tomorrow then.  fair enough?22:39
lifelessderyck: particular things to look at are the sizes of advanced search requests and comment containing posts I guess.22:40
lifelessderyck: yes, thats great. thanks for grabbing me to discuss this!22:40
derycklifeless, np!  Thank you for the discussion!22:40
deryckLater on, everyone.22:50
pooliehuwshimi, can't wait for your bug tags to land22:52
pooliedo you want to have that talk about markup today maybe?22:52
huwshimipoolie: :)22:52
huwshimipoolie: Sure, maybe do you want to have a chat after lunch, I just need to finish off a few things this morning22:52
pooliewfm, ping me then22:52
huwshimipoolie: Thanks :)22:53
* StevenK can't find versions.cfg in lp:txlongpoll22:58
StevenKHow does this even work?22:59
lifelessI think allenap has a branhc proposed fo rmerging that will add that23:00
lifelessand/or check setup.py - it may have version constraints there23:00
StevenKNo constraints in setup.py for Twisted23:03
lifelessthen its probably grabbing latest-always23:05
=== wgrant changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugtasks: 287
rick_h_is there a webui to PQM? I had to change my .bzr emai addy and so not sure I'm going to get anything from it23:40
rick_h_see my ec2 instance is terminated and wonder if things went ok or fail23:40
lifelesshttps://pqm.launchpad.net23:40
wgrantBut it's not very useful :)23:40
=== wallyworld_ changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: wallyworld | Critical bugtasks: 287
rick_h_heh, ok23:41
wallyworld_poolie: just curious about the change to restore the prng state as opposed to the original proposed change. is yours more correct?23:49
pooliewallyworld_, i think it's preferable to have tests not mutate the global state any more than is necessary23:51
wallyworld_sure. agree with that23:52
StevenK287. When did that happen. :-(23:52
wgrantStevenK: Lots of escalations overnight.23:53

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