[01:50] <StevenK> wallyworld_: Can you QA r15475 soonish?
[02:14]  * StevenK stabs Python process handling.
[02:15] <wgrant> StevenK: What are you doing and why?
[02:16] <StevenK> wgrant: Trying to debug AuditorFixture._stop()
[02:16] <wgrant> Ah, that.
[02:17] <lifeless> StevenK: SIGPIPE again ? :>
[02:17] <StevenK> lifeless: Already SIG_IGN'ing PIPE
[02:18] <StevenK> It drops out of _stop() without actually killing the process.
[02:36] <cjwatson> I've QAed r15480; it has problems which mean the new API isn't usable, which I'll work on tomorrow, but as far as I've been able to determine there are no regressions in existing functionality, so I marked it qa-ok.  Feel free to check my reasoning in bug 334858.
[02:36] <_mup_> Bug #334858: Require a way to copy [P]PPA packages into Ubuntu <lp-soyuz> <qa-ok> <Launchpad itself:In Progress by cjwatson> < https://launchpad.net/bugs/334858 >
[02:37] <wgrant> cjwatson: Right, sounds good. That usually means a missing commit, indeed.
[02:38] <wgrant> Since you can't read back an LFA's content unless it's been committed.
[02:38] <cjwatson> Too much to hope that I'd get it all right in one go.  I wonder how delayed-copy processing manages to get it right, since I can't see a commit there.  Maybe it's implicit somewhere.
[02:39] <wgrant> Delayed copies have regressed in that respect once or twice
[02:39] <wgrant> I forget how it works
[02:40] <cjwatson> Maybe it works because delayed copies get hold of the changelog manually rather than going through the SPR.
[02:41] <cjwatson> As in, from the .changes, which PCJs can't do.
[02:41] <wgrant> Ah, yes, that would be it.
[02:42] <wgrant> But some aspect of delayed copies sometimes tried to read it back
[02:42] <wgrant> And died
[02:42] <wgrant> Possibly rejection
[02:42] <wgrant> Can't quite remember
[02:42] <wgrant> Anyway, thanks for QAing
[02:42] <cjwatson> Clearly means I need to add a test for the PCJ as well as the PackageCopier path, anyway.
[02:42] <cjwatson> Grumble.
[02:45] <cjwatson> I suspect also I need to do pocket queue admin permissions before we can kill unembargoing and the ubuntu-security celebrity, since doing it with PCJs means their uploads will all wind up in unapproved.
[02:45] <wgrant> Indeed. That's going to be a little awkard on +queue, I suspect, but shouldn't be too much effort.
[02:46] <wgrant> Hm, actually.
[02:46] <wgrant> How's that going to work at all
[02:46] <wgrant> Because they'll still be private..
[02:47] <cjwatson> In the queue it'll just be a suspended PCJ
[02:47] <wgrant> Yeah
[02:48] <wgrant> Hopefully it won't break when it tries to access its attributes.
[02:48] <cjwatson> Oh, I hope it doesn't need to ... yeah, that
[02:50] <cjwatson> I think it's OK.  The attributes all come from the PCJ's metadata dict or similar.
[02:51] <wgrant> Great.
[03:05] <wallyworld_> StevenK: sorry, was at locksmith, qa done now
[03:05] <StevenK> wallyworld_: More mailbox trouble? :-)
[03:06] <wallyworld_> StevenK: yes, bloody keys i got didn;t fit, i had to break in and rip off the front flap and tale it all in
[03:06] <wallyworld_> the lock turned out to be a cheap chinese version and there are no key blanks here
[03:10] <StevenK> wallyworld_: Ah, so you were so desperate for the phone cover that you broke into the mailbox. :-)
[03:10] <wallyworld_> StevenK: that arrived last week and i had to use a coathander to hook the package and lift it out
[03:11] <StevenK> Now that is desperation.
[03:12] <wallyworld_> yep
[04:08] <StevenK> lifeless: This is incredibly frustrating. :-(
[04:31] <StevenK> Sigh. self.process.wait() returns immediately, but the process isn't dead.
[04:32] <lifeless> StevenK: sorry, context switching
[04:32] <lifeless> so whats up ?
[04:33] <StevenK> lifeless: fixture._stop() is supposed to kill bin/auditor-manage.
[04:36] <lifeless> does auditor-manage fork or something ?
[04:36] <StevenK> I doubt it
[04:37] <StevenK> It's the usual 'python manage.py runserver' which is used for development, so I'd be very surprised if it does.
[04:37] <lifeless> ok
[04:37] <lifeless> so the code looks reasonable
[04:37] <lifeless> server.poll() is None implies has not exited.
[04:37] <lifeless> erm
[04:37] <lifeless> process.poll()
[04:38] <lifeless> StevenK: what do you see happen ?
[04:38] <lifeless> StevenK: have you tried using pdb and stepping through it ?
[04:39] <StevenK> lifeless: I've tried printf debugging, which hasn't been much help.
[04:39] <lifeless> do you want video + debug help?
[04:39] <lifeless> right now I don't know what you've learnt.
[04:39] <lifeless> so I'm starting cold.
[04:40] <StevenK> lifeless: Today I've learnt that 1) I either don't understand process workflow under Unix or this thing is misbehaving, 2) I feel like I've wasted today on it. :-)
[04:41] <lifeless> the day isn't over.
[04:41] <lifeless> lets free our hands for actual examination: skype or g+ ?
[04:41] <StevenK> lifeless: Would you mind looking sans Skype/G+ for 10-15? I've just taken Advil for a headache.
[04:41] <lifeless> not at all
[04:42] <lifeless> so, tell me a) how to reproduce and b) all that you have learnt.
[04:42] <lifeless> is your code up online etc.
[04:43] <StevenK> lifeless: Just pushed auditor
[04:43] <lifeless> ?win 85
[04:46] <StevenK> lifeless: auditorfixture updated
[04:51] <StevenK> lifeless: Easiest way to reproduce is run the testsuite. One test will fail, but if you look at ps aux afterwards you'll see two auditor-manage's hanging around.
[04:52] <StevenK> lifeless: What I have learnt is that the _stop() method does get called, and it does call self.process.terminate(), and the next time around the loop self.is_process_up returns False and it exists, but the process is still running.
[04:52] <StevenK> s/exists/exits/
[04:53] <lifeless> ok
[04:53] <lifeless> so lets get some more details
[04:57] <lifeless> StevenK: so, I'm putting a breakpoint in _stop. And running the test suite
[04:58] <lifeless> StevenK: so it gets terminated via SIGTERM
[04:59] <StevenK> lifeless: Are the processes still running, though?
[04:59] <lifeless> StevenK: but nothing is reaping it
[04:59] <lifeless> so it sits defunct
[05:00] <StevenK> But Python should catch the SIGCHLD and reap it?
[05:00] <lifeless> no
[05:00] <lifeless> not AFAIK
[05:00] <lifeless> also
[05:00] <lifeless> you may well be running into a signal handling race condition
[05:00] <lifeless> lets see
[05:01] <StevenK> I thought the entire point of subprocess was abstract out this mess. :-P
[05:01] <lifeless> but let me check the code a bit more
[05:05] <lifeless> StevenK: so, its kill the process, reliably.
[05:05] <lifeless> StevenK: compare:
[05:05] <lifeless>  :!bin/test
[05:05] <lifeless> Running zope.testrunner.layer.UnitTests tests:
[05:05] <lifeless>   Set up zope.testrunner.layer.UnitTests in 0.000 seconds.
[05:05] <lifeless> 23890
[05:05] <lifeless> thats the pid
[05:05] <lifeless> then
[05:05] <lifeless> 23890
[05:06] <lifeless> 23894
[05:06] <lifeless> 23894
[05:06] <lifeless> (twice through apparently)
[05:06] <lifeless> but
[05:06] <lifeless> compare the leaked processes:
[05:06] <lifeless> robertc  23895  5.7  0.2 206692 19168 pts/10   Sl+  17:05   0:00 /usr/bin/python /home/robertc/source/launchpad/auditorfixture/working/auditorfixture/tests/../../bin/auditor-manage runserver 9999
[05:06] <lifeless> robertc  23891  5.7  0.2 206692 19164 pts/10   Sl+  17:05   0:00 /usr/bin/python /home/robertc/source/launchpad/auditorfixture/working/auditorfixture/tests/../../bin/auditor-manage runserver 51284
[05:06] <lifeless> note the pids are one out
[05:06] <StevenK> Which means it probably did fork
[05:07] <lifeless> robertc  23918 17.6  0.1  61964 15036 pts/10   S+   17:06   0:01                      \_ /usr/bin/python -S bin/test
[05:07] <lifeless> robertc  23919  1.6  0.1  52288 15740 pts/10   S+   17:06   0:00                          \_ /usr/bin/python -S /home/robertc/source/launchpad/auditorfixture/working/auditorfixture/tests/../../bin/auditor-manage runserver 47997
[05:07] <lifeless> robertc  23920  2.8  0.2 206688 19156 pts/10   Sl+  17:06   0:00                              \_ /usr/bin/python /home/robertc/source/launchpad/auditorfixture/working/auditorfixture/tests/../../bin/auditor-manage runserver 47997
[05:07] <lifeless> ^ you need to be way more paranoid.
[05:07] <StevenK> It double fork()'s? :-(
[05:09] <lifeless> paranoid about assuming I think I mean
[05:09] <lifeless> anyhow, yes, it looks like it does.
[05:10] <lifeless> well, something does.
[05:11] <StevenK> Single fork() should be dealt with fine because it will be the same process group, but a double fork is not, from memory.
[05:13] <lifeless> if we signal the process gorup
[05:13] <lifeless> by (IIRC) doing -pid
[05:19] <lifeless> nah
[05:19] <lifeless> the pgroup they are in is the teset servers group
[05:19] <lifeless> because we're not making one when we spawn
[05:20] <lifeless> should be easy to fix, one sec
[05:20] <StevenK> lifeless: I really don't want to call os.setsid() in the fixture ...
[05:27] <StevenK> lifeless: It wasn't so easy?
[05:29] <lifeless> StevenK: lp:~lifeless/auditorfixture/pgrphandling
[05:29] <lifeless> StevenK: it was, Lynne got home
[05:30] <StevenK> Ah, heh.
[05:30]  * StevenK looks.
[05:31] <StevenK> lifeless: Bah, and you do end up using os.setsid() :-)
[05:32] <lifeless> of course
[05:32] <lifeless> but, it works
[05:32] <lifeless> and doesn't leak defunct processes like a sieve
[05:33] <StevenK> Which was the entire point of the exercise
[05:33] <lifeless> it was leaking defunct *and* live ones before
[05:33] <lifeless> this is twice as much betterness ;)
[05:34] <lifeless> StevenK: HTH, -> dinnery stuff, will ping later to see how you went
[05:34] <StevenK> lifeless: Aye
[06:47] <Brooklyn> Hello, I have deployed launchpad. But I can't register new user now. Could anyone give me some hints?
[06:49] <StevenK> lifeless: HAH. Now I have to put django into download-cache
[06:56] <wgrant> Brooklyn: The testopenid provider that Launchpad dev instances use doesn't support registration. You'll need to point it at a proper OpenID provider.
[06:56] <wgrant> lifeless: Bah
[07:02] <Brooklyn> wgrant: Thanks for your reply.
[07:06] <wgrant> lifeless: So it turns out that bugsummary queries for source packages are a hundred or so times slower than they need to be.
[07:06] <wgrant> lifeless: There's no usable index starting with (distribution, spn).
[07:06] <wgrant> lifeless: So eg. the stats portlet falls back to (distribution, status) then filter on that
[07:06] <wgrant> etc
[07:07] <lifeless> cool
[07:08] <wgrant> lifeless: Was this a deliberate decision, do you recall?
[07:08] <lifeless> no, oversight
[07:08] <wgrant> Great, thanks.
[07:08] <lifeless> it was intended to index all the use cases to be fast
[07:08] <wgrant> Just wanted to check you didn't find some horrid postgres terribleness
[07:09] <lifeless> not that I recall
[07:10] <wgrant> Now the rebuild is a little faster :)
[08:01] <czajkowski> morning
[09:23] <czajkowski> wgrant: is it possible to properly remove a ppa instead of seeing a message ppa is deleted?
[09:24] <wgrant> Not at present
[09:25] <czajkowski> is it possible to re enable it once it's deleted?
[09:25] <wgrant> Um
[09:25] <wgrant> Sort of
[09:25] <wgrant> If they go to +edit and click the Enabled and Publish checkboxes it will mostly work
[09:25] <czajkowski> ah ok
[09:26] <wgrant> But it's best to tell the users to build a time machine and not delete things that they don't want deleted.
[09:26] <czajkowski> well this is true :)
[09:26] <czajkowski> but at least I can now asnwer people who have yet to build a tardis :)
[09:26] <czajkowski> wgrant: cheers
[09:38] <lifeless> could someone lp-land https://code.launchpad.net/~lifeless/launchpad/sourcecode-meta/+merge/111527 for me? _still_ haven't sorted my landing story. I know, I suck.
[09:39] <jelmer> hi lifeless
[09:39] <jelmer> lifeless: lp-land rather than ec2 land?
[09:39] <lifeless> have a look at the branch, and make your own mind up :)
[09:39] <jelmer> heh, okay.. still waiting for the diff to come up :)
[09:39] <wgrant> It won't
[09:39] <wgrant> It timed out days ago
[09:40]  * jelmer grumbles
[09:40] <jelmer> lifeless: anyway, I'll land once I manage to extract a diff
[09:42] <lifeless> jelmer: :>
[09:42] <lifeless> jelmer: thanks, appreciated!
[09:47] <Brooklyn> wgrant: I am not familiar with zope. Is there any document about how to point testopenid to an openid provider?
[09:49] <wgrant> Brooklyn: This is all LP-specific stuff, not Zope. It's easiest to set vhost.openid.hostname in the launchpad-lazr.conf of the config that you're using, then change launchpad.openid_provider_vhost from 'testopenid' to 'openid'
[09:50] <Brooklyn> wgrant: Thank you so much :) I will try that
[10:01] <cjwatson> bac,wgrant: Could you have a quick look over https://code.launchpad.net/~cjwatson/launchpad/pcj-reupload-fix/+merge/111804 for me?  Should fix last night's QA failure.
[10:01] <wgrant> cjwatson: Looking
[10:02] <wgrant> I think the bac is a lie.
[10:02] <cjwatson> I thought so too, but you never know
[10:03] <wgrant> cjwatson: Hmm
[10:03] <czajkowski> https://dev.launchpad.net/ReviewerSchedule
[10:03] <wgrant> cjwatson: I wonder if we can detect if we're in a webapp request and die violently there.
[10:03] <wgrant> since committing the in middle of a webapp transaction is a less than good idea.
[10:04] <cjwatson> Mm, I did wonder what the rules for that were
[10:04] <wgrant> "don't"
[10:04] <cjwatson> I suppose it might also be possible to extract the changes from the restricted file and pass those into notify
[10:04] <wgrant> The librarian sometimes makes it challenging, unfortunately.
[10:04] <wgrant> Right
[10:04] <wgrant> Or you could commit after the copy and before the notify
[10:05] <cjwatson> There's an argument that that might be safer
[10:05] <wgrant> But in the caller.
[10:05] <wgrant> I forget where that is.
[10:05] <wgrant> Tryue.
[10:05] <cjwatson> It's only one level up, in do_copy.
[10:05] <Brooklyn> wgrant: I use login.ubuntu.com and finally it works!! Thank you so much!
[10:05] <wgrant> Brooklyn: Excellent!
[10:05] <cjwatson> I didn't think moving it up there would be desperately useful, and it would make it harder to tell whether it's necessary due to unembargoing.
[10:06] <wgrant> It's awful either way.
[10:07] <cjwatson> Extracting the changes content isn't exactly a one-liner right now.
[10:08] <wgrant> Awful but possibly necessary :)
[10:09] <cjwatson> Though we don't need changesfile_content in this case, which helps.
[10:16] <cjwatson> wgrant: Wait, isn't notification mail queued until the transaction is committed?  I could notify first and *then* update privacy.
[10:16] <wgrant> cjwatson: Sneaky and mildly evil, but probably quite effective.
[10:16] <cjwatson> That would still involve a bit of rearrangement but should be way easier.
[10:54] <cjwatson> wgrant: Have another look?  I think that should be better now ...
[11:17] <wgrant> cjwatson: Looks good, thanks.
[11:47] <bac> matsubara-lunch: ping me when you get back, please.
[11:52] <czajkowski> bac: good morning :)
[11:53] <bac> hi czajkowski
[11:57] <lifeless> night
[12:02] <matsubara> bac, hi
[12:03] <bac> hi matsubara.  did you want to talk at 1230UTC or 1430?
[12:04] <matsubara> bac, hey, just replied to your email. let's do 1430 as I have the team stand up in 40min
[12:04] <bac> matsubara: works for me.  thanks!
[12:04] <matsubara> bac, de rien
[12:07] <StevenK> jelmer, lifeless: I think the change you did/landed broke buildbot.
[12:09] <StevenK> jelmer: I think http://pastebin.ubuntu.com/1058978/ will fix it, can you investigate?
[12:12] <cjwatson> It broke EC2 too.
[12:12] <cjwatson> Well, ec2 land.
[12:13] <StevenK> Yeah, utilities/update-sourcecode does not like blank lines in sourcedeps.conf
[12:13] <StevenK> Which lifeless added
[12:14] <cjwatson> Maybe http://paste.ubuntu.com/1058982/ to preserve LoC; just as clear I think
[12:15] <StevenK> cjwatson: But that doesn't work either
[12:15] <cjwatson> Er, that's precisely equivalent to your patch
[12:15] <StevenK> if line == '\n' or ...: does
[12:15] <StevenK> cjwatson: Yes, the patch was untested at that point. :-)
[12:16] <StevenK> make worked fine, it took a little longer to realise this step was before it.
[12:16] <cjwatson> Ah yes.  I usually use "line = line.rstrip('\n')" at the start of loops for that kind of thing.
[12:17] <StevenK> It's an ugly hack, but let me land it.
[12:17] <StevenK> It's clear that sourcedeps is deprecated and lifeless has an eye to remove the whole kit and caboddle at a later date.
[12:18] <wgrant> if not line.strip(): continue
[12:18] <StevenK> wgrant: Does not deal with comments.
[12:18] <cjwatson> Bit surprised that failure to strip \n doesn't cause other problems.
[12:18] <StevenK> cjwatson: The function calls yield line.strip() after that
[12:19] <cjwatson> No, it calls yield line.split()
[12:19] <cjwatson> >>> "foo\tbar\n".split("\t")
[12:19] <cjwatson> ['foo', 'bar\n']
[12:19] <StevenK> Ah, hmmm
[12:19] <cjwatson> Oh, but split() with no args is magical
[12:19] <cjwatson> >>> "foo\tbar\n".split()
[12:19] <cjwatson> ['foo', 'bar']
[12:19] <cjwatson> Fair enough
[12:20] <StevenK> I guess it counts \n as whitespace
[12:23] <StevenK> lifeless: Your failure to test that comment change in sourcedeps.conf means you owe me a beer. :-P
[12:24] <StevenK> cjwatson: Fix landed, ec2 should now be happy again.
[12:25] <cjwatson> Yay
[12:48] <jelmer> StevenK, wgrant: Sorry, we had just headed out to lunch here :(
[12:48] <jelmer> Thanks for picking up the pieces
[13:00] <rick_h_> wallyworld_: thanks for the reply
[13:01] <wallyworld_> rick_h_: np. did it make sense?
[13:01] <wallyworld_> thanks for taking a look also
[13:01] <rick_h_> yea, I remember that issue and didn't think about it while reading over
[13:02] <wallyworld_> rick_h_: once we have all the js out of the tal and everything in the combo loader done, it won't be an issue i don't think
[13:02] <rick_h_> I need to blank out some time to go over the picker stuff at some point. You'd think between your stuff and jcsackett's stuff I'd 'get' it by now
[13:02] <wallyworld_> rick_h_: that stuff is "interesting" to say the least. i'd love to know the thought process behind how it was originally done
[13:02] <rick_h_> wallyworld_: yea, was going through the YUI3 cookbook and the idea of YUI blocks loading additional modules lazy-loaded seems interesting for stuff like this
[13:03] <rick_h_> I wonder if some sort of master "UI builder" would help us combine TAL blocks and keep things in one use() block without loading all our JS at once
[13:04] <wallyworld_> not sure. now that we have the core stuff all done, we can tackle these edge cases
[13:04] <rick_h_> yea
[13:04] <wallyworld_> we still gotta make dev use raw instead of min though
[13:05] <rick_h_> wallyworld_: ah, yea you know what, I'll try to get something in for that today if I can. I might have some slack time for that
[13:06] <wallyworld_> rick_h_: it's also been on my todo list but too litte spare time :-(
[13:09] <wallyworld_> rick_h_: something i just discovered - if i have an widget attribute eg my_form: {value: Y.Node.create('<form/>')}, the attr is only inited once and all new Y.mywidget() instances have the same attr value
[13:10] <wallyworld_> i have to construct the attribute vale in the initialiser
[13:11] <rick_h_> wallyworld_: right, you need to use a valueFn
[13:11] <rick_h_> it's like using a mutable default for a method in python
[13:11] <wallyworld_> ah of course. i forgot that. i've used a valuefn previously. thanks
[13:11] <rick_h_> np
[13:11] <rick_h_> yea, been bit myself with that sometimes. You want to do it, but makes sense as it's only created once on JS parse stage
[13:12] <wallyworld_> yeah. i just plain forgot. my brain is too full with everything
[13:35] <cjwatson> bac: Are you still looking at https://code.launchpad.net/~cjwatson/launchpad/copy-custom-uploads/+merge/111653 ?  It looks like you claimed a review there a few days ago
[13:36] <bac> cjwatson: i did claim it but then signaled my intent to give it up by adding the review team back
[13:36] <bac> cjwatson:  i guess i should have voted abstain
[13:37] <cjwatson> Ah, I missed that subtlety
[13:37] <bac> cjwatson: abstained now.  sorry i was able to get to it.
[13:39] <cjwatson> No problem.
[13:40] <cjwatson> benji: ^- Do you think you might be able to pick up that one?  I'm trying to make gradual progress on a sort of semi-overlapping chain of stuff, and that one would be nice to get out of the way both to unblock other things and on its own merits.
[13:41] <cjwatson> I know it's a pretty soyuz-heavy branch
[13:41] <benji> cjwatson: sure
[13:50] <benji> cjwatson: your branch looks good
[13:58] <cjwatson> benji: Thanks!  If I may have Status: Approved then I can land that
[13:59] <cjwatson> And hopefully delete a swathe of ugly documentation
[14:00] <benji> cjwatson: you can (and IMO) should do that yourself as it is the signal that everything about the MP that needs to be approved has been and only you know that.  I approved the code, but there may be UI elements or other things that need review (like back in the day when we had seperate JavaScript reviews).
[14:01] <cjwatson> benji: I can't, because I'm not in launchpad-reviewers.
[14:01] <benji> cjwatson: then I suck ;)
[14:01] <cjwatson> I understand the model, but I break it by being !~launchpad-reviewers but having PQM access. :-)
[14:02] <benji> cjwatson: done
[14:02] <cjwatson> I believe lifeless thinks it ought to be possible to add non-Launchpadders to that team ...
[14:02] <cjwatson> So yeah, right now I just have to ask, sorry.  Thanks
[14:03] <cjwatson> (Maybe I mean ~canonical-launchpad-committers)
[14:08]  * cjwatson finds the mail about that and goes to reply, to see if he can sort this out more permanently
[14:30] <bac> hi matsubara.  is now good?  if so i'll create a hangout
[14:31] <matsubara> bac, yep. let me grab my headset and something to drink
[14:32] <matsubara> bac, ready whenever you are. just send me the link please.
[14:32] <bac> matsubara: sent you an invite
[14:58] <replaceafill> sinzui, i have a couple of questions about what's left in LP: #210821
[14:58] <_mup_> Bug #210821: bug tracker list shows inactive projects <404> <bugwatch> <lp-bugs> <oops> <qa-ok> <trivial> <Launchpad itself:In Progress by replaceafill> < https://launchpad.net/bugs/210821 >
[14:59] <replaceafill> sinzui, actually, the duplicated one (which i didn't notice before) LP: #857888
[14:59] <_mup_> Bug #857888: Deactivated projects shown on BugTracker:+index <404> <oops> <Launchpad itself:Triaged> < https://launchpad.net/bugs/857888 >
[14:59] <replaceafill> sinzui, here's a diff with the fix: http://pastebin.ubuntu.com/1059175/
[15:00] <sinzui> I recall it
[15:00] <replaceafill> sinzui, my question is that the current code uses projects + products
[15:00] <replaceafill> while the IBugTrackerSet.getPillarsForBugtrackers returns products + projects
[15:01] <sinzui> hmm
[15:01] <replaceafill> what would be best? to change the current portlet code
[15:01] <sinzui> We prefer to return small to large, so product, project-group, distro
[15:02] <replaceafill> ah
[15:02] <replaceafill> so i could change the porlet to return that order
[15:02] <replaceafill> and getPillarsForBugtrackers already does it
[15:03] <replaceafill> sinzui, my second question is, how do you test that in a functional test?
[15:03] <sinzui> +1 for the code fix
[15:04] <replaceafill> i mean, how do you test the order in the test
[15:05] <replaceafill> is there any way to get the contents of the testbrowser and say "get me all links in this div"?
[15:05] <sinzui> replaceafill, We want a new testcase  in lp/bugs/browser/tests/test_bugtracker.py that tests the view's attr.
[15:06] <replaceafill> ah ok
[15:06] <replaceafill> i thought i needed to test the returned html :)
[15:06] <sinzui> We can either reproduce a similar setup of your previous test...
[15:06] <replaceafill> sinzui, ah ok
[15:07] <replaceafill> sinzui, i'll work on that and show it to you later
[15:07] <sinzui> or we mock out getPillarsForBugtrackers() in the test and verify it was called
[15:07] <replaceafill> sinzui, i'll go with copying my previous setup
[15:10] <sinzui> replaceafill, make me the reviewer when you are ready since I already understand why the first branch did not fix the UI situation
[15:10] <replaceafill> sinzui, ah ok, will do
[15:20] <sinzui> replaceafill, this is a sketch of the test I would have written to verify the view differs to the the tracker set: http://pastebin.ubuntu.com/1059206/
[15:21] <replaceafill> ah, mocking :)
[15:21] <replaceafill> cool, i'll use that then
[15:21] <sinzui> I prefer this kind of test because changes to the set's method means I need to update the set's test and the views test
[15:22] <replaceafill> ah, got it
[16:50] <cjwatson> benji: Oops, I have a test failure in copy-custom-uploads.  Does http://paste.ubuntu.com/1059344/ look OK to you on top of that (that's in [initializedistroseries])?  That fixes the test here.
[16:51]  * benji looks.
[16:51] <benji> cjwatson: yeah, looks fine; DB security has tripped me up on a couple of occasions too
[16:55] <cjwatson> Right, thanks.  I think I'll kill the current test and send this through.
[18:55] <rick_h_> gary_poster: do you know off the top of your head what gtk-items are needed for the python-html5-browser for JS tests?
[18:55] <sinzui> rick_h_, the standard gtk setup
[18:55] <rick_h_> gary_poster: sorry, I nmean in LXC that is
[18:56] <rick_h_> sinzui: ok, was curious of the yellow guys had a shortlist of deps for that since the tests are running in lxc as well
[18:56] <gary_poster> rick_h_, oh.  I think this would be a sinzui question. the lxc aspect should basically mean its like trying to make it work in Ubuntu server
[18:57] <gary_poster> rick_h_, well...we add the launchpad-deps
[18:57] <rick_h_> ok, yea I've got those, but getting an error "RuntimeError: Gtk couldn't be initializ"
[18:58] <rick_h_> for the js tests from the container so assumed the normal setup is expecting some basic gtk packages to be there that steting up an lxc container leaves out
[18:58] <gary_poster> which ends up adding what we need there.  Like I said, there's nothing specific to the LXC story I can think of there.  Ah rick_h_ I might have a cure for what ais you.
[18:58] <gary_poster> ails, even
[18:58] <gary_poster> rick_h_, first, you are using xvfb-run, right?
[18:59] <rick_h_> well starting out just by doing:  ./bin/test -x -cvv --layer=YUITestLayer
[18:59] <rick_h_> that's what I've done in the past to run just JS tests.
[18:59] <gary_poster> rick_h_, no, that's not good enough I'm afraid.  That's not an lxc thing, it is a server with no X running thing
[18:59] <rick_h_> ah ok
[18:59] <gary_poster> so, if you look in the tree...
[19:01] <gary_poster> well, all you *have* to use you can find in the current .testr.conf: xvfb-run ./bin/test [other options]
[19:01] <gary_poster> there's a more "careful" spelling we use for the tests
[19:02] <gary_poster> xvfb-run --error-file=/var/tmp/xvfb-errors.log --server-args='-screen 0 1024x768x24'  -a bin/test blah blah blah
[19:02] <gary_poster> the --error-file is the least important
[19:02] <rick_h_> ok cool, yea I see that in the test_merge file
[19:03] <rick_h_> test_on_merge that is
[19:03] <gary_poster> rick_h_, that's server specific.  there is one lxc bug unfortunately
[19:03] <gary_poster> that affects this
[19:03] <gary_poster> lemme get that detail
[19:03] <lifeless> StevenK: I asked jelmer to make an informed decision ;)
[19:03] <rick_h_> ok thanks. I assumed it was a lxc issue
[19:03] <lifeless> StevenK: so I will cheerfully a) disclaim all responsibility and b) buy you a beer anyhow.
[19:04] <gary_poster> (we have a script that sets up all of this for you, but it is not ready for devs yet)
[19:04] <rick_h_> understood, I really just want to make sure I didn't break the JS test runner atm, so if only a single test can run I'll be happy
[19:06] <gary_poster> rick_h_, so, here's the pertinent code.  http://pastebin.ubuntu.com/1059579/
[19:06] <gary_poster> basically it is saying that in the fstab file for the lxc instance,
[19:07] <gary_poster> you need to add what is in line 7
[19:07] <gary_poster> for bug 974584
[19:07] <_mup_> Bug #974584: Semaphores cannot be created in lxc container <paralleltest> <patch> <rls-q-incoming> <Launchpad itself:Invalid> <lxc (Ubuntu):Fix Released by serge-hallyn> <sysvinit (Ubuntu):Triaged> <lxc (Ubuntu Precise):Fix Released> <sysvinit (Ubuntu Precise):Triaged> <lxc (Ubuntu Quantal):Fix Released by serge-hallyn> <sysvinit (Ubuntu Quantal):Triaged> <sysvinit (Debian):New> < https://launchpad.net/bugs/974584 >
[19:07] <gary_poster> rick_h_, restart the lxc after you make that change
[19:08] <rick_h_> orly, ok thanks
[19:08] <gary_poster> If it doesn't work with xvfb-run and that workaround, I dunno, but you can feel free to ask me again :-)
[19:09] <rick_h_> I think it's working, at least I've got my first test failures so I think just hte xvfb-run got me started
[19:10] <rick_h_> ty much
[19:10] <gary_poster> welcome
[19:15] <lifeless> cjwatson: whats your lp username?
[19:54] <czajkowski> sinzui: you're on a role!
[19:55] <sinzui> czajkowski, no, my script is. I need to clean up bug data to tell stakeholders why a squad has work on disclosure for a year and still not delivered sharing or private projects
[19:56] <czajkowski> sinzui: but you are close and have done a good job it's not an easy task a  lot of areas to make happy
[19:57] <sinzui> czajkowski, I am not close.
[19:58] <sinzui> There is a caustic streak of optimism at Canonical that misleads everyone into thinking we are always a few months away.
[19:59] <sinzui> I currently believe we are 5 months away from delivering disclosure, which is 3 months longer than stakeholders have been told, and more than a year longer than they hoped we would take after a year of saying we would do it
[20:02] <czajkowski> sinzui: ok but 5 is better than 8 and no point in saying 3 as if you say that and it's not tested or still has issues then people tend to get more upset, this way if you deliver before the 5 then people are happy, as i said it's a large project with many areas to keep happy
[20:02] <lifeless> heh
[20:02] <sinzui> czajkowski, I cannot prove what I say. When someone asks me what percentage is done. I cannot answer, I cannot even guess
[20:06] <sinzui> I cannot even summarise all the phases of work someone can see why there is an order and doggedly slow pace to delivering private projects
[20:08] <lifeless> sinzui: do you have a gut feel - underestimated? lots of waste? lots of friction? poor cycle times?
[20:09] <czajkowski> sinzui: frustrating I know really, but I do feel you're doing a great job, and you blog posts are very good and they explain the things that are changing and what is coming next
[20:09] <sinzui> under estimating is the primary cause. Edge cases, secondary use cases, hardening, removal of obsoleted code was often forgotten
[20:10] <lifeless> would it have helped to resource and implement much smaller slices
[20:11] <lifeless> ?
[20:11] <sinzui> ^ lifeless. churn is less of a communication problem.
[20:11] <sinzui> lifeless, yes, and doing them in the proper order or in parallel
[20:11] <sinzui> bug linking should have started after picker 10 months ago
[20:13] <sinzui> lifeless, Even cases like discovering we had to hard objects and reconsider social private teams were always something that could have been done by other teams.
[20:14] <sinzui> Well I guess those cases were not discovery. We did know about them, we just did not know scope so we ignored them until it hurt
[20:26] <cjwatson> lifeless: cjwatson
[20:28] <lifeless> cjwatson: with great power comes great...
[20:28] <lifeless> well you know
[20:28] <cjwatson> cheese?
[20:29] <lifeless> entertainment?
[20:29] <cjwatson> voltage
[20:30] <cjwatson> thanks anyway :)
[20:30] <lifeless> rock n roll
[20:30] <lifeless> (ac/dc)
[20:32]  * cjwatson attempts to land copy-custom-uploads for about the sixth time today; this is cursed
[20:33] <czajkowski> cjwatson: you do work long days
[20:33] <lifeless> czajkowski: welcome to Canonical
[20:33] <lifeless> czajkowski: we're a fun company of individuals.
[20:33] <cjwatson> don't confuse elapsed time with actual time spent working though
[20:34] <czajkowski> lifeless: ah ye are really, why else do you think I stuck around for so long to find a way in ;)
[20:34] <czajkowski> cjwatson: true
[20:37] <cjwatson> czajkowski: Also I find that LP's long EC2/buildbot cycles plus deployment schedules plus QA means that if I want to get work landed at the optimal speed then the best way to do it is to work skimming-stones-on-a-lake kind of hours
[20:37] <czajkowski> cjwatson: ah so you do have a method t the madness :)
[20:38] <lifeless> cjwatson: yes, OTOH that is getting fixed. Its tough shit though :)
[20:39] <cjwatson> suits the new-parent lifestyle well enough though
[20:39] <lifeless> indeedy
[20:40] <cjwatson> (well, new-baby not new-parent, but it comes out the same way)
[20:40] <lifeless> man, cynthia is teething right now
[20:40] <cjwatson> yeah, that's no fun
[20:40] <lifeless> 4 hours sleep last night for me :<

[20:40] <cjwatson> andre is vaguely considering the notion of solid food
[20:40] <czajkowski> :/
[20:40] <lifeless> cjwatson: in a positive or not fashion?
[20:41] <cjwatson> it's all right, bit earlier than we expected him to have a go but not a problem.  he's not really got into it properly, just vaguely flailing at stuff and occasionally a bit reaches his mouth
[20:41] <cjwatson> but clearly on the road to figuring it out
[20:41] <lifeless> excellent
[20:42] <lifeless> thats better than nononononono I don'twanna. (mimed, of course)
[20:42] <cjwatson> yeah, we do baby-led weaning so not much of that with food.  although plenty with other stuff ;-)
[20:42] <lifeless> us too, but we've heard horror stories ;)
[20:43] <cjwatson> judith nearly got killed on the road today though, kirsten came back shaking :-(
[20:43] <cjwatson> got away from her and started running
[20:43] <cjwatson> she reached her one step before the road
[20:44] <czajkowski> :o
[20:44] <czajkowski> cjwatson: scarey I'm sure
[20:49] <lifeless> cjwatson: yeepers
[21:40] <cjwatson> 2012-06-25 21:21:22 DEBUG   process-upload ran in 5.889692s (excl. load & lock)
[21:40] <cjwatson> every time I read that kind of output I want it to say "lock & load"
[23:02] <rick_h_> wallyworld_: looks like the non-min js landed a min ago. Give it a shot if you get a sec please.
[23:03] <wallyworld_> rick_h_: awesome, thanks!
[23:03] <rick_h_> wallyworld_: also note the second item here: https://docs.google.com/a/canonical.com/document/d/1jvZw_F8P0wXIxeNSpcEOpZbWqO0MSRZpn5Q3N2Mdcb8/edit
[23:03] <wgrant> sinzui, wallyworld_: https://github.com/mattdiamond/fuckitjs/
[23:03] <rick_h_> wgrant: :)
[23:04] <rick_h_> wallyworld_: it's in a lot of the picker stuff in case you're still tinkering in there
[23:06] <wallyworld_> rick_h_: yeah, i saw the naughty way of doing it a lot in the code and probably cargo culted it believing it was ok
[23:07] <rick_h_> wallyworld_: yea, all good. Easy fix, but want to get the word out.
[23:07] <wallyworld_> thanks, appreciate the heads up
[23:22] <wallyworld_> rick_h_: works great \o/
[23:23] <wallyworld_> rick_h_: you should send a post to the dev list so there can be much rejoicing