[00:32]  * poolie thinks, again, there ought to be an incipient mp for every branch 
[00:32] <poolie> whether it's been actually proposed or not
[00:33] <poolie> spiv, the thing is writing the extension is easy, deploying it is the hard part
[00:34] <maxb> poolie: but how would you know what the destination branch is?
[00:34] <lifeless> maxb: all of them :P
[00:34] <lifeless> poolie: why is deploying the extension hard?
[00:34] <thumper> wallyworld: not really
[00:34] <thumper> wallyworld: file one
[00:36] <poolie> i'm just once-bitten by attempting to change the oauth deployment
[00:36] <thumper> how does one document a flag?
[00:36] <poolie> thumper, read dev.launchpad.net/FeatureFlags and if that's not enough, ask me
[00:36] <thumper> ok
[00:36] <poolie> if it's not enough i'd really like to make it better
[00:38] <thumper> poolie: https://launchpad.net/+feature-info lists undocumented features
[00:39] <thumper> poolie: how do they become "documented"?  The docs don't cover that
[00:40] <poolie> hm
[00:40] <poolie> ah, see "adding a new flag"
[00:40] <poolie> i'll expand that a bit
[00:41] <poolie> or are you just documenting an existing one?
[00:41] <thumper> I'm wanting to add a new flag, but I should also document the missing ones
[00:41] <wgrant> The missing ones are documented in a branch of mine.
[00:42] <thumper> poolie: yeah, that section is very easy to miss
[00:42] <thumper> wgrant: thanks
[00:42] <thumper> poolie: who is able to edit the feature flags on prod?
[00:42] <poolie> losas
[00:42] <poolie> only
[00:42] <poolie> well, ~admin
[00:43] <poolie> i think that's correct
[00:43] <poolie> is that better now?
[00:46] <poolie> thumper, please try to match the naming guide in that page too
[00:46] <poolie> or object to it and we can change it
[00:47] <wgrant> But if you invent another non-standard scheme I will cry :)
[00:47] <poolie> exactly, so please don't
[00:47] <poolie> the naked juggling is distracting enough without people criying too
[00:52] <thumper> StevenK: when do you want to chat?
[00:52] <poolie> thumper, all good?
[00:53] <thumper> poolie: the only thing making me cry right now is how we are currently hiding recipes
[00:57] <wallyworld> thumper: can you remember where that code is where you check for None in the formatter?
[00:57] <thumper> wallyworld: yes
[00:58] <wallyworld> thumper: and please tell me where it is mr smarty
[00:58] <thumper> wallyworld: lib/lp/code/browser/sourcepackagerecipe.py
[00:58] <wallyworld> thanks
[00:59] <thumper> archive_picker
[00:59]  * wallyworld sad - there's actually no existing tests for NoneFormatter
[01:26] <lifeless> StevenK: btw
[01:26] <lifeless> StevenK: there is a jenkins openid plugin now
[02:01] <lifeless> whoa
[02:01] <lifeless> where did the loggerhead exceptions go
[02:03] <wallyworld> StevenK: how's the recipe popup build request review going?
[02:04] <StevenK> wallyworld: You mean, the one I wasn't actually doing? :-)
[02:04] <wallyworld> StevenK: you asked me questions about it so i assumed you had claimed it :-)
[02:05] <StevenK> wallyworld: Nope :-)
[02:06] <wallyworld> StevenK: np. i'll find another sucker^H^H^H^H^H esteemed developer to do it
[02:06] <lifeless> wallyworld: I'm a little confused
[02:06] <lifeless> wallyworld: I thought you were working on manually requested builds
[02:06] <wallyworld> lifeless: i always confused
[02:07] <lifeless> wallyworld: but I saw you file a but about manually requested daily builds that aren't stale
[02:07] <wallyworld> lifeless: yes, but the request build popup work was done before that
[02:07] <lifeless> which is a /totally/ different use case
[02:07] <wallyworld> so i have 2 recipe related branches up for review
[02:07] <wallyworld> the 2nd depends on the first
[02:07] <wallyworld> due to shared javascript
[02:07] <wallyworld> lifeless: make sense now?
[02:08] <wallyworld> wgrant: want a small review? https://code.launchpad.net/~wallyworld/launchpad/add-link-to-noneformatter/+merge/50088
[02:09]  * wallyworld has 3 active reviews to try and get off his list
[02:20] <LPCIBot> Yippie, build fixed!
[02:20] <LPCIBot> Project devel build (448): FIXED in 5 hr 59 min: https://hudson.wedontsleep.org/job/devel/448/
[02:20] <LPCIBot> * Launchpad Patch Queue Manager: [r=leonardr][bug=649252] add an unsubscribe link to non-verbose bug
[02:20] <LPCIBot> notifications
[02:20] <LPCIBot> * Launchpad Patch Queue Manager: [r=leonardr][no-qa] isolate bin/lint.sh's use of grep from the
[02:20] <LPCIBot> environment
[02:20] <LPCIBot> * Launchpad Patch Queue Manager: [r=danilo][ui=none][no-qa] Fix rST and Sphinx errors in our top-level
[02:20] <LPCIBot> docs, and make the main page more interesting.
[02:22] <lifeless> whats the glue to say 'does this class implement ISomething or other' - when querying, not declaring
[02:36] <sinzui> hi huwshimi
[02:36] <huwshimi> sinzui: Hey therwe
[02:36] <huwshimi> *there
[02:37] <sinzui> huwshimi: I recall writing about the loss of colour from the involvement portlet. but I cannot find it in my email :(
[02:38] <sinzui> huwshimi: So pretending I have dot written about this. do you want to mumble to discuss the issues that users have raised?
[02:38] <huwshimi> sinzui: Sure, that'd be great
[02:40] <thumper> lifeless: what do you think about converting feature flag values of "off" and "false" to False ?
[02:47] <lifeless> thumper: i'm pretty unkeen
[02:47] <lifeless> thumper: what issue are you trying to solve?
[02:47] <thumper> lifeless: I'm adding a feature flag "code.recipe.beta" to control the message and the beta icon
[02:48] <thumper> lifeless: so we'll add a rule that says code.recipe.beta -> "on"
[02:48] <thumper> lifeless: but if we set a rule to say code.recipe.beta -> 'off'
[02:48] <lifeless> thumper: theres a rule for this already isn't there ?
[02:48] <thumper> lifeless: I want it to work
[02:48] <thumper> no
[02:48] <thumper> we have code.recipe_enabled
[02:48] <thumper> which is different
[02:48] <thumper> I'd like to rename that to "code.recipe.enabled"
[02:49] <thumper> enabled controls whether we barf on recipe actions
[02:49] <lifeless> thumper: so this is to let you go to non-beta without tying it to a deploy ?
[02:49] <thumper> beta is just to show the messages
[02:49] <thumper> yes
[02:49] <thumper> exactly
[02:49] <lifeless> and then you'll delete both rules entirely.
[02:49] <thumper> aye
[02:49] <wallyworld> thumper: can you tell me where our existing web service api tests are? i've had a boy look but can't see them
[02:49] <lifeless> I would just do the current thing - 'if <thing>: ... '
[02:50] <thumper> yeah, I know I _can)
[02:50] <lifeless> thumper: the default is None/'', and you can add rules of ''
[02:50] <thumper> I just think it would make it more clear
[02:50] <lifeless> I have think it makes it more awkward
[02:51] <thumper> getFeatureFlag('some.feature') should be False if some.feature == "off" or "false"
[02:51] <lifeless> Not at that layer
[02:51] <lifeless> and I really don't see the argument for a higher layer at the moment
[02:51] <lifeless> it seems like cruft
[02:51] <thumper> find
[02:51] <thumper> fine
[02:51] <thumper> we can agree to disagree and I'll not change it
[02:51] <lifeless> I agree that there is some confusion
[02:52] <wallyworld> lifeless: what do you have against implementing expected semantics for 'off'/'false' meaning Bool(False) ?
[02:52] <lifeless> one of the reasons I have the opinion I have is that 'no rule implies no value' is kind of predictable. 'no rule implies a specific value' needs some sort of schema
[02:53] <lifeless> wallyworld: the current /layer/ is simple strings. Its schemaless and typeless.
[02:53] <lifeless> wallyworld: this makes it extremely robust in some ways, and frustrating in others.
[02:53] <wallyworld> ok.
[02:54] <lifeless> wallyworld: given that we version the interpreter for this data (the appserver processes) multiple times a day, a failure in this area would be extremely messy.
[02:54] <wallyworld> yep :-)
[02:54] <lifeless> I've no strong objection to a higher layer being built : but I see no benefit to building it either for simple booleans because the current implementation meets our functional needs
[02:55] <wallyworld> but that's what tests are for :-)
[02:55] <lifeless> wallyworld: tests cannot catch this
[02:55] <lifeless> we had one failure from features already, took the site down
[02:56] <lifeless> -the whole site-
[02:56] <wallyworld> i'll take your word for it. not familiar enough with it to have an opinion either way. but on the surfaces, everything should be testable in an ideal world
[02:56] <lifeless> wallyworld: the rules are in the production DB
[02:56] <wallyworld> why not also in stable or staging?
[02:57] <lifeless> stable is a branch, not a DB, and the rules can have commercial-in-confidence values in them.
[02:57] <lifeless> as for staging, it /may/ have the same rules, or it may have different ones
[02:57] <wallyworld> lifeless: sorry ETERMINOLOGY. i just meant the test databases
[02:58] <lifeless> I'd rather see small helpers when folk solve tricky problems here built up than the core of the layer become typed.
[02:58] <wallyworld> i'd say there's an argument that our test environment should replicate the prod one, in this case having the same core database values. but i take the point about the privacy issue
[02:59] <lifeless> and booleans have a comprehensive solution now: there's nothing you can add to make our handling of booleans more pithy, correct or powerful
[03:00] <lifeless> wallyworld: folk need to be able to change rules on [qa]staging to be able to check their patches work etc
[03:00] <lifeless> wallyworld: it would be disruptive to forcibly sync those on a high frequency basis
[03:01] <wallyworld> agreed. but people also should do some testing with data reflective of what's in production if possible (akin to progression vs regression testing in a way)
[03:02] <wallyworld> lifeless: so since i have your attention, do you know where out web service api tests are?
[03:04] <lifeless> what sort of such tests
[03:04] <lifeless> like
[03:04] <lifeless> tests for a given api
[03:04] <lifeless> or tests that the api is wired up
[03:04] <lifeless> or ... ?
[03:05] <wallyworld> i want to use a web api client to invoke something annotated with export_write_operation() for example to see that it works
[03:05] <wallyworld> so i guess tests that the api is wired up
[03:05] <wallyworld> given that the underlying functionality is unit tested separately
[03:06] <lifeless> thats generally done by a smoke test of that api
[03:06] <lifeless> AIUI
[03:06] <wallyworld> but testing that what comes over the wire is as expected
[03:06] <lifeless> test.*webservice, spread throughout the tree
[03:07] <wallyworld> oh. thanks, i'll take a look. i just wanted a starting point to current practices before diving down the wrong rabbit hole :-)
[03:08] <wallyworld> lifeless: ah i see my problem now. there's web services already on the domain model i'm working with but no tests written, so i couldn't find any examples to start from
[03:09] <wallyworld> for the new web services i'm adding
[03:09] <StevenK> Argh. Where is the representation of an archive as a link hiding?
[03:09] <wallyworld> StevenK:  PPAFormatterAPI ?
[03:09] <lifeless> are
[03:09] <lifeless> canonical.librarian.ftests.test_web.LibrarianWebTestCase.test_404
[03:09] <lifeless>  canonical.librarian.ftests.test_web.LibrarianWebTestCase.test_oldurl
[03:09] <lifeless> still known as intermittent failures?
[03:09] <StevenK> lifeless: Yes, they failed yesterday
[03:09] <wallyworld> StevenK: or something like that?
[03:14] <sinzui> huwshimi: http://pxtoem.com/
[03:19] <StevenK> wallyworld: Thanks, but that isn't in the trace back
[03:19] <wallyworld> StevenK: pastebin?
[03:19] <StevenK> AH!
[03:20] <StevenK> The information is spat out before the traceback
[03:21] <StevenK> wallyworld: You could give me a clue tracing back from the page template to the code, though.
[03:22] <wallyworld> StevenK: ok. wanna throw the tb in pb?
[03:22] <StevenK> wallyworld:             <tal:recipe-builds repeat="build view/builds">
[03:22] <StevenK> wallyworld: I think that's the line. If not, it's sourcepackagerecipe-index.pt, unchanged from devel
[03:23] <wallyworld> StevenK: should we mumble?
[03:23] <StevenK> wallyworld: Sure
[03:29] <thumper> simple review lifeless? https://code.launchpad.net/~thumper/launchpad/recipe-feature-flag/+merge/50092
[03:30] <thumper> just pushing some lint cleanup
[03:31] <wallyworld> thumper: get in line :-P
[03:31] <wallyworld> take a number
[03:31] <thumper> wallyworld: ok, you do it :)
[03:31] <wallyworld> thumper: i'll do yours if you do mine :-)
[03:31] <thumper> ok
[03:31] <thumper> which one?
[03:32] <StevenK> thumper: Check your indenting line 43 of the diff
[03:32] <wallyworld> thanks. i've got 3 and our wip limit is exceeded on the board
[03:32] <thumper> StevenK: that was in the lint cleanup
[03:32] <thumper> StevenK: the diff is updating as we speak
[03:34] <wallyworld> thumper: which one? there's the simple link formatter which could be done first
[03:34] <thumper> wallyworld: hit me
[03:34] <wallyworld> thumper: https://code.launchpad.net/~wallyworld/launchpad/add-link-to-noneformatter/+merge/50088
[03:34] <wallyworld> the recipe ones will take a lot more effort
[03:34] <wallyworld> but still need to be done
[03:37] <thumper> wallyworld: TestXHTMLRepresentations?
[03:37] <thumper> wallyworld: shouldn't that be TestNoneFormatter or something?
[03:37] <wallyworld> ?
[03:37]  * wallyworld looks
[03:37] <thumper> wallyworld: have you looked at test_tales?
[03:40] <thumper> wallyworld: 'cause I don't understand you test_shorten_traversal
[03:40] <wallyworld> thumper: didn't see test_tales. since tales.py was in lib/app/browser i looked for existing tests in lib/app/browser/tests
[03:40]  * thumper nods
[03:40] <thumper> from lp.testing import test_tales
[03:40] <thumper> or more accurately
[03:41] <thumper> from lazr.restful.testing.tales import test_tales
[03:41] <wallyworld> thumper: the test_shorten_traversal was my attempt to unit test that method based on my reading of it's intended behaviour
[03:41] <thumper> wallyworld: since there is no docstring, I can't tell what it should do
[03:41] <thumper> :)
[03:42] <wallyworld> thumper: yeah, but there's no docstring on the traverse() method that is being tested either, so it's catch 22
[03:43] <wallyworld> thumper: i'll look at the existing test_tales stuff and fix the tests accordingly
[03:45] <lifeless> \o/ tests pass
[03:51] <thumper> wallyworld: ok
[03:52] <wallyworld> thumper: the TestXHTMLRepresentations was a cut'n'paste gone wrong :-(
[03:52] <thumper> wallyworld: good :)
[03:52] <thumper> wallyworld: I was wondering if I was understanding it :)
[04:02] <wallyworld> thumper: mp diff updating as i type this
[04:06]  * wallyworld dislikes how long it takes for the diff to be updated
[04:07] <StevenK> wallyworld: Patches welcome?
[04:07] <wallyworld> StevenK: isn't it controlled by a cron script?
[04:07] <StevenK> Two, in fact
[04:08] <beuno> hey, remember when Launchpad devs didn't use merge proposals at all?  those where the days
[04:08] <thumper> hi beuno
[04:08] <wallyworld> ah, when i was a wee lad, i had to walk to school through 10 feet of snow with no shoes
[04:08] <thumper> beuno: notice we just went over the 50k mark?
[04:08] <beuno> and speaking of merge proposals!
[04:08] <beuno> thumper, I did, and I \o/ed
[04:09] <thumper> :)
[04:09] <beuno> it kinda blew my mind, I didn't realize the numbers where growing so quick;y
[04:10] <thumper> beuno: still mostly canonical people using them
[04:10] <StevenK> I guess the biggest consumer of MPs is LP?
[04:11] <beuno> I bet U1 can give LP a run for its money
[04:11] <wallyworld> thumper: just to double check - you don't know of any existing web service tests for recipes that i can't find?
[04:11] <wgrant> LP only has like 7000 branches.
[04:11] <StevenK> beuno: I wonder how to test that theory
[04:11] <wgrant> So it can't be many of the MPs.
[04:12] <thumper> https://lpstats.canonical.com/graphs/BranchMergeProposalsNewPerDay/20100218/20110218/
[04:12] <StevenK> I'm pondering crafting some SQL to get the answer
[04:12] <lifeless> NotFound: Object: <zope.browserpage.metaconfigure.IcingFolder object at 0x883cdd0>, name: u'lp.js'
[04:12] <lifeless>  ?
[04:12]  * beuno tries to manually add up all the branches for u1
[04:12] <wgrant> thumper: That's a really encouraging graph.
[04:13] <thumper> https://lpstats.canonical.com/graphs/BMPNewRegistrants/20100218/20110218/
[04:13] <beuno> wgrant, how do I find out how many branches a project has?
[04:13] <poolie> hi all
[04:14] <beuno> it only seems to tell me about active branches
[04:14] <thumper> https://lpstats.canonical.com/graphs/BranchMergeProposalsProjectsNewMergeProposals/20100218/20110218/
[04:14] <poolie> hi beuno
[04:14] <beuno> heya poolie!
[04:14] <thumper> beuno: select show all branches
[04:15] <beuno> I did, "Any status"
[04:15] <beuno> Ubuntu One Servers has 345 active branches owned by 31 people and 3 teams. There were 716 commits by 19 people in the last month.
[04:15] <beuno> but that's not useful
[04:15] <lifeless> flacoste: hhhaa - XXX flacoste 2008/04/24 This should be moved to a
[04:15] <lifeless> flacoste: I've half-implemented said setTarget
[04:15] <StevenK> In SQL: "PackageBuild.archive = Archive.id AND False" ... D'OH
[04:15] <wgrant>    10294 | launchpad                               | f        |  5103
[04:15] <wgrant>     9514 | ubuntuone-servers                       | f        |  3462
[04:15] <wgrant>     1186 | bzr                                     | f        |  1473
[04:15] <wgrant>     8920 | drizzle                                 | f        |  1279
[04:15] <wgrant>    23444 | examiner                                | f        |  1109
[04:15] <wgrant>    13681 | openlp                                  | f        |   939
[04:16] <wgrant>    12784 | ubuntuone-client                        | f        |   754
[04:16] <wgrant> From October.
[04:16] <wgrant> Right column is the count
[04:16] <wgrant> So U1 probably wins by now.
[04:16] <wgrant> :(
[04:16] <StevenK> wallyworld: U1 client already does?
[04:16] <StevenK> BAH
[04:16] <StevenK> wgrant: ^
[04:16] <beuno> right, we have desktopcouch, bindwood, android clients, iphone
[04:17] <wgrant> beuno: Are they in a project group?
[04:17] <beuno> wgrant, yes, all under ubuuntuone I think
[04:19] <wgrant>              name             | count
[04:19] <wgrant> ------------------------------+-------
[04:19] <wgrant>  launchpad-project            |  5385
[04:19] <wgrant>  ubuntuone                    |  5042
[04:19] <wgrant>  bazaar                       |  2339
[04:19] <wgrant> But that is outdated :(
[04:19] <beuno> well, still surprising to see more activity in LP
[04:19] <beuno> October is not that far away
[04:20] <StevenK> wgrant: Tempted to get that run on prod :-)
[04:20] <StevenK> wgrant: With "LIMIT 3" or so
[04:20] <thumper> wgrant: go on, ask spm
[04:21] <wgrant> thumper: staging's only a week out of date; you can do it :P
[04:21] <thumper> wgrant: ok
[04:21] <wgrant> From the start of 2010:
[04:21] <wgrant>  launchpad-project            |  2375
[04:21] <wgrant>  ubuntuone                    |  2271
[04:21] <wgrant>  bazaar                       |  1079
[04:21] <wgrant>  ayatana                      |   959
[04:21] <wgrant> So we still win!?
[04:22] <wgrant> thumper: SELECT project.name, COUNT(*) FROM branchmergeproposal JOIN branch ON branch.id=branchmergeproposal.target_branch JOIN product ON product.id = branch.product JOIN project ON project.id = product.project GROUP BY project.name ORDER BY COUNT(*) DESC;
[04:22] <wgrant> thumper: watch out with your recipe FF-only branch.
[04:22] <wgrant> thumper: request-daily-builds uses the config option.
[04:23] <wgrant> And we can't make an FF apply only to a script, AFAIK.
[04:23] <thumper>  launchpad-project |  8912
[04:23] <thumper>  ubuntuone         |  6695
[04:23] <thumper>  bazaar            |  4294
[04:23] <thumper> I wrote it from scratch
[04:23] <spm> [15:20:50] <thumper> wgrant: go on, ask spm <== have I finally got you lot scared of me. *FINALLY*!?!?
[04:23] <StevenK> spm: Ask wgrant?
[04:23]  * StevenK cackles
[04:23] <spm> heh
[04:24]  * StevenK notes that Storm doesn't like 'is'
[04:24] <StevenK> But it returns a BOOLEAN!
[04:26] <lifeless> its interesting - bazaar has 1/5th the devs, and 1/2 the mps
[04:26] <wgrant> lifeless: But Bazaar also doesn't suck.
[04:28] <beuno> I guess bazaar probably has the most community as well
[04:29] <wgrant> True.
[04:29] <wgrant> spm: r12395 to nodowntime, pls.
[04:30] <beuno> and, launchpad was the first of all those to start using mps, if we look at totals
[04:30] <beuno> bazaar slowly moves away from bundlebuggy after a while
[04:30] <wgrant> True.
[04:30] <wgrant> That's why I took the numbers from 2010 onwards.
[04:30] <wgrant> When everyone should have been using MPs.
[04:31]  * beuno nods
[04:31] <lifeless> \o/
[04:32] <lifeless> one query for the milestone targeted bugs portlet.
[04:33] <wgrant> lifeless: But how slow?
[04:34] <lifeless> wgrant: https://bugs.launchpad.net/launchpad/+bug/717394/comments/2
[04:34] <lifeless> wgrant: I expect to be close to that, am assessing the generated sql now
[04:35] <lifeless> argh, search builder fail
[04:35] <lifeless> constraining on distro series using any -> noop, no constraino.
[04:35] <thumper> beuno: ...
[04:36] <thumper>  launchpad-project |  3879
[04:36] <thumper>  ubuntuone         |  3525
[04:36] <thumper>  bazaar            |  1548
[04:36] <thumper> (
[04:36] <lifeless> SELECT BugTask.distroseries, COUNT(BugTask.bug) FROM BugTask, Bug WHERE Bug.id = BugTask.bug AND ((BugTask.status = 10) OR (BugTask.status = 15) OR (BugTask.status = 20) OR (BugTask.status = 21) OR (BugTask.status = 22) OR (BugTask.status = 25)) AND Bug.duplicateof is NULL GROUP BY BugTask.distroseries
[04:36] <thumper> for branches created after the start of 2010
[04:36] <beuno> ah, laz U1 devs!
[04:36] <beuno> *lazy
[04:37]  * thumper is getting the munchies
[04:37] <lifeless> still, i need to go; I'll finish it off later
[04:38] <StevenK> Mmmmmm, smells like rain here
[04:39] <lifeless> wgrant: pushing to lp:~lifeless/launchpad/bug-717394 if you are interested. Its a little ugly, but EMENOCARE
[04:40] <lifeless> pushed
[04:41] <lifeless> wgrant: I thought you requested a deploy?
[04:41] <StevenK> lifeless: It's on LPS
[04:42] <wgrant> lifeless: henninge added one to the deployed section of LPS, but didn't poke anyone about it. I extended it to the latest rev and moved it to the right place.
[04:42] <wgrant> Just now.
[04:42] <lifeless> wgrant: cool; probably want to poke someone
[04:42] <wgrant> I did.
[04:42] <StevenK> lifeless: He did?
[04:43] <wgrant> spm: Are you sufficiently poked?
[04:43] <StevenK> Haha
[04:44] <StevenK> "Are you not entertained!?"
[05:04] <poolie> thumper, so lifeless's point was to just keep using non-empty strings as boolean true?
[05:05] <thumper> poolie: yes... although I agree with you
[05:05]  * thumper EODs
[05:05] <poolie> good night
[05:05] <thumper> poolie: we can talk about this more tomorrow if you like
[05:07] <StevenK> Can haz review from someone?
[05:09] <StevenK> lifeless: You know, I think identi.ca doesn't know your new suburb
[05:22] <poolie> wow
[05:23] <poolie> wgrant, the lag seemed to be suddenly going up to several seconds
[05:23] <wgrant> Yeah.
[05:23] <wgrant> I guess Mumble isn't so good when you're on the same side of the world.
[05:23] <poolie> adequate consultation is good
[05:23] <poolie> routing via london's not optimal
[05:23] <wgrant> Not quite.
[05:24] <poolie> i guess we possibly could have an australasian server
[05:24] <poolie> i wonder how hard it is
[05:24] <wgrant> Huh.
[05:25] <wgrant> What happened to the loggerhead OOPSes/
[05:25] <wgrant> ?
[05:25] <wgrant> There were <1000 yesterday.
[05:26] <wgrant>   lib/lp/contrib/
[05:26] <wgrant> Oxymoron!
[05:26] <StevenK> wgrant: Naming is hard
[05:27] <wgrant> StevenK: We already have lib/contrib :(
[05:27] <StevenK> Yes, and it needs to die too
[05:27] <wgrant> Now I have two directories to destroy :(
[05:28] <StevenK> Awesome, lib/contrib/oauth.py has no license
[05:29] <StevenK> wgrant: Seems like spm is not sufficently poked.
[05:30] <wgrant> Insufficiently present, would be my guess.
[05:30] <wgrant> poolie: Is there something wrong with the oauth 1.0.1 egg?
[05:30] <wgrant> Or did you just try to use a package because it is less evil?
[05:30] <poolie> wallyworld, hi
[05:30] <wallyworld> poolie: yellow
[05:31] <poolie> the thing with tim's patch is when he says 'on/off' he doesn't actually mean the strings 'on' or 'off'
[05:31] <poolie> how silly of you :)
[05:31] <poolie> we can either fix it so you can actually use those values
[05:31] <poolie> which is the bug i mentioned
[05:31] <wallyworld> i thought that's what gerFeatureFlag() returns?
[05:31] <poolie> or we can update his docs
[05:31] <poolie> you're right
[05:31] <poolie> it just returns the string at the moment
[05:32] <poolie> so unless it's handled at a lower level he needs to check == 'on'
[05:32] <wallyworld> so his condiitonal will fail
[05:32] <wallyworld> as written
[05:32] <poolie> well, it won't work in the way you'd expect
[05:32] <poolie> how do you say that in TAL?
[05:32] <poolie> i think it's a bit longwinded
[05:32] <poolie> wgrant, i believe the egg still has the bug in it
[05:32] <poolie> ubuntu's package is 1.0+a bit
[05:33] <wgrant> poolie: We have the 1.0 egg.
[05:33] <wallyworld> poolie: so, won't "if not getFeatureFlag(RECIPE_ENABLED_FLAG)" give a crap result if the ff is set to "off" ????
[05:33] <wgrant> There is a 1.0.1 egg aka 1.0a, which is probably what Ubuntu has.
[05:34] <StevenK> wgrant: Can you see the point of lib/canonical/lazr/security.py at all?
[05:36] <wgrant> StevenK: Probably to support callsites that were added before stuff was moved to lazr.restful.
[05:36] <wgrant> I can only see one left, though, in a test.
[05:36] <StevenK> Right
[05:36] <StevenK> I'm tempted to just fix it
[05:36] <wgrant> Delete delete delete.
[05:36] <wgrant> You have my full support.
[05:36] <StevenK> For once. :-P
[05:36] <wgrant> You have my full support to delete anything in lib/canonical, as long as it doesn't break tests :P
[05:37] <StevenK> I'll delete lib/canonical/database, then.
[05:37] <StevenK> That won't break tests, that will break EVERYTHING.
[05:37] <wgrant> Indeed.
[05:38]  * wallyworld goes to take kid to soccer
[05:40] <StevenK> wgrant: So, fix the test to import from lazr.restful or just bin it completly?
[05:42] <wgrant> StevenK: LP doesn't use protect_schema directly.
[05:42] <wgrant> Check that it's tested in lazr.restful and bin it.
[05:44] <StevenK> wgrant: Looks to be used extensively in doc/webservice.txt
[05:44] <poolie> wallyworld, yes it will give a crap result
[05:44] <poolie> back in a sec
[05:46] <wgrant> StevenK: But is it tested directly?
[05:47] <poolie> wallyworld, anyhow, that's my point
[05:47] <poolie> there are various approaches
[05:47] <StevenK> wgrant: I can't see a unit test directly
[05:48] <wgrant> [XXX leonardr 2009-04-02 bug=354441 This test should be moved into the same lazr module as the code it tests, security.py (in lazr.restful as of this writing.)]
[05:48] <wgrant> I'd follow that advice.
[05:48] <poolie> wgrant, my first attempt at removing the code from contrib fell in a heap because the same bug is in the code in the egg
[05:48] <poolie> hooray for tests
[05:49] <wgrant> poolie: Yeah, but I think our egg is outdated.
[05:49] <wgrant> There is a newer one.
[05:50] <poolie> ok, in that case upgrading the egg and re-landing my first branch should fix it
[05:50] <wgrant> Where is that branch?
[05:51] <wgrant> I will throw it at ec2 now.
[05:51] <poolie> bug 715000?
[05:51] <wgrant> Not that one.
[05:51] <wgrant> Because we gained a new contrib module this morning, I must remove this one swiftly.
[05:54] <wgrant> Ah, the branch is gone.
[05:55] <poolie> >  Because we gained a new contrib module this morning, I must remove this one swiftly.
[05:55] <poolie> why?
[05:55] <poolie> ah i might have pulled into that branch
[05:55]  * poolie look
[05:56] <wgrant> Yeah, you repurposed the branch to use the package instead.
[05:57] <poolie> cherrypicking r12325 of lp:launchpad should do it
[05:57] <poolie> it was merged and then it failed in buildbot
[05:57] <wgrant> Oh, true.
[05:57] <wgrant> I forgot that bit.
[05:57] <wgrant> Or just s/contrib.oauth/oauth.oauth/, I guess.
[06:07] <poolie> wgrant, basically just that plus deleting the contrib thing
[06:07] <poolie> yep
[06:07] <poolie> for going to use the packaged version there was just a bit mor estuff
[06:08] <poolie> are you just trying to remove cruft, or was there some other motivation too?
[06:08] <wgrant> poolie: Removing cruft.
[06:09] <poolie> thanks
[06:09] <stub> So the new SSH server is falling over under load, or because it is leaking?
[06:11] <wgrant> stub: It uses more handles per connection than before, but as far as jam and I can see it does not leak until it has already exhausted its handles.
[06:11] <wgrant> And jam has a fix for those post-exhaustion leaks, which should allow recovery.
[06:11] <wgrant> We do not know why production reached exhaustion.
[06:11] <poolie> it seems like previously it would stall or block connections when load spiked
[06:11] <stub> wgrant: Can we put it behind HAProxy to keep the load under control?
[06:11] <poolie> and with jam's change it would get bogged down
[06:11] <poolie> there's separate work underway towards that
[06:12] <wgrant> stub: I suppose we could.
[06:12] <wgrant> We want haproxy soon anyway for other reasons.
[06:12] <spiv> The numbers of observed connections in production don't match the analysis of how many connections it would take to reach exhaustion, so we're still missing something.
[06:13] <spiv> (Fixing the known robustness bugs is still a good idea, of course)
[06:13] <wgrant> There were 117 forking services at the probable time of exhaustion.
[06:13] <wgrant> Which is only 600 FDs.
[06:13] <wgrant> Unless it was being slow and hadn't noticed that lots of children were dead.
[06:13] <wgrant> So it still held their handles.
[06:13] <stub> But howmany 'recently' that might not have been cleaned up?
[06:13] <stub> Mmm...
[06:13] <wgrant> It's hard to say, because the logs are gone.
[06:15] <wgrant> I think we should fix the leak, bump the limit (which means moving to a new reactor), and then deploy while watching very carefully and lsofing regularly.
[06:15] <wgrant> Last time we knew something was up 40 minutes before service really degraded.
[06:15] <wgrant> So it is not *too* dangerous.
[06:16] <stub> Right. Since there will always be a hard limits though, so we will want limiting from HAProxy anyway (just might be much higher once the leak is fixed). And it will help diagnose if it is a leak or slow gc.
[06:16] <spiv> I don't know any reason not to add --reactor=epoll to the twistd invocation (in the init script, I guess?)
[06:16] <wgrant> Sure.
[06:17] <wgrant> spiv: Let me try that locally and throw 600 connections at it.
[06:17] <spiv> (And we may as well do that for all twistd invocations everywhere)
[06:18] <poolie> spiv, what _is_ the state of the haproxy stuff in production
[06:18] <poolie> per robert's comments in bug 717345
[06:18] <poolie> it's not yet live but ready to go live?
[06:18] <poolie> spm^^ ?
[06:21] <spiv> poolie: see bug 702024 (or RT 40480); I'm stuck waiting for more information from spm about how it was tested on staging, because that failed but AFACIS it's working perfectly in a dev vm.
[06:22] <spiv> poolie: the support code in the production code base, and the web status port is deployed
[06:22] <wgrant> 2000 FDs,s till going fine...
[06:23] <spiv> wgrant: you had to raise the per-process fd limit, I assume?
[06:23] <wgrant> spiv: Yes.
[06:24] <wgrant> Hah.
[06:24] <wgrant> hammer_ssh.py hit the FD limit at a little over 500 connections.
[06:24] <wgrant> But the server is fine.
[06:25] <spiv> :)
[06:25] <wgrant> Running with an FD limit of 10000 and --reactor=epoll
[06:25] <wgrant> Although it does like its RAM...
[06:39] <poolie> i'd like to see some Launchpad Enchantment Proposals
[07:21] <poolie> what is the rule for who can triage while filing?
[07:21] <poolie> i'm in ~kanban and yet i cannot do it for kanban/+filebug
[07:25] <wgrant> The bug supervisor.
[07:26] <wgrant> If the bug supervisor is not set, then nobody can.
[07:26] <wgrant> It does not revert to the owner.
[07:26] <poolie> i see; thanks
[07:26] <wgrant> (probably a bug, but so are lots of things!)
[07:27] <poolie> > Awesome feature.  I'm happy to volunteer gcalctool to use this.
[07:27] <poolie> excellent
[07:27] <poolie> what a good start
[07:29] <wgrant> poolie: Is that a BFBIP volunteer?
[07:29] <poolie> yes, robert ancell
[07:29] <poolie> k, got to go
[07:29] <wgrant> Ah, yes, found it.
[07:29] <poolie> have a good night
[07:29] <wgrant> You too.
[07:38] <lifeless> StevenK: I've told it to not show location, but it didnae listen
[07:40] <lifeless> poolie: hi
[07:40] <lifeless> poolie: am back if you wantt to talk
[07:45] <cody-somerville> Is the PPA publishing cycle still at 5 minute interval?
[07:45] <wgrant> cody-somerville: Yes.
[07:46] <cody-somerville> Deletions get processed during that cycle, right?
[07:47] <cody-somerville> and is there a graph showing delay? (ie. # of minutes late starting new cycle vs. time or something)
[07:48] <wgrant> Files are removed from the indices as part of each publisher run.
[07:48] <wgrant> But they are removed from disk less frequently.
[07:48] <wgrant> */30, IIRC.
[07:48] <wgrant> Yes, */20
[07:48] <wgrant> Er/
[07:48] <wgrant> */30, I cannot type.
[07:51] <lifeless> stub: ping
[07:52] <wgrant> cody-somerville: https://lpstats.canonical.com/graphs/PPALatencies/20110217/20110218/
[07:54] <stub> lifeless: pong
[07:55] <lifeless> now a good time for the weekly call ?
[07:55] <stub> lifeless: time is fine. my sleep patterns the problem.
[07:55] <stub> lifeless: sure
[07:55] <lifeless> no worries; went and saw a movie ;)
[08:16] <lifeless> stub: https://lpstats.canonical.com/graphs/WildcherryDiskUsage/
[08:23] <LPCIBot> Project devel build (449): FAILURE in 6 hr 3 min: https://hudson.wedontsleep.org/job/devel/449/
[08:23] <LPCIBot> * Launchpad Patch Queue Manager: [r=stub][bug=607935] Reduce overhead when showing only some bug
[08:23] <LPCIBot> comments.
[08:23] <LPCIBot> * Launchpad Patch Queue Manager: [r=leonardr][no-qa] Add YUI3 gallery-accordion widget to tree.
[08:32] <lifeless> explain select count(distinct branchrevision.branch) from branchrevision, branch where branch.id=branchrevision.branch and branch.last_scanned is NULL;
[08:34] <stub> https://pastebin.canonical.com/43510/
[08:43] <stub> Bug 711071
[08:43] <_mup_> Bug #711071: Distribution:+bugtarget-portlet-bugfilters-stats timeouts <dba> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/711071 >
[08:43] <lifeless> stub: https://bugs.launchpad.net/launchpad/+bug/717394
[08:43] <_mup_> Bug #717394: Distribution:+bugs timeouts <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/717394 >
[08:47] <jtv> morning folks
[08:58] <adeuring> good morning
[09:05] <jtv> hi adeuring
[09:05] <adeuring> hi jtv!
[09:09] <StevenK> allenap: Hello, Mr OCR! Would you have time to review my branch today?
[09:10] <jtv> StevenK: if not, I could take it.
[09:13] <lifeless> \o/ 1.4 seconds off of bug search in ubuntu coming right up
[09:13] <lifeless> and, I'm off to sleep
[09:17] <mrevell> Morning
[09:22] <allenap> StevenK: Sure. I'm only doing a half day today, but you're first in line :)
[09:22]  * allenap assumed abentley is no longer reviewing.
[09:23] <jtv> allenap: I already claimed it :)
[09:23] <allenap> jtv: Woah, swifty.
[09:23] <jtv> a timezone ahead :)
[09:26] <jtv> StevenK: "an" private archive..?
[09:26] <jtv> lib/lp/code/model/tests/test_sourcepackagerecipe.py
[09:27] <StevenK> jtv: I can't see that in my diff, but looking
[09:27] <jtv> Near the bottom.
[09:28] <jtv> Very close to it.
[09:28] <StevenK> Oh, it's "an" disabled, not private
[09:28] <jtv> Sorry!
[09:28] <jtv> Force of habit I suppose
[09:29] <StevenK> jtv: Fixed and pushed
[09:30] <jtv> StevenK: also in that same method by the way: it may be clearer to change the name slightly to say what should happen, not just what scenario you test.  For instance, test_getBuilds_ignores_disabled_archive instead of test_getBuilds_disabled_archive
[09:31] <StevenK> jtv: Agreed, fixed locally.
[09:45] <StevenK> jtv: Anything else you can see, or shall I commit and push?
[09:45] <jtv> StevenK: I've got more, hang on
[09:48] <jtv> StevenK: two questions about test_view_with_disabled_archive.
[09:48] <StevenK> jtv: Shoot
[09:49] <jtv> First, are all cases covered?  Owner can see builds for private archive, other users can't?
[09:49] <StevenK> jtv: In this case, even the owner won't, which I think is fine. They disabled the archive, anyway.
[09:50] <jtv> Then I think I misunderstood something in the MP
[09:50] <StevenK> They will of course be able to change the daily build archive if they wish.
[09:50] <jtv> So the owner sees private _archives_, not _builds for_ private archives.
[09:50] <StevenK> *disabled*
[09:50] <StevenK> Stop doing that :-)
[09:50] <jtv> Argh
[09:51] <jtv> Yes, sorry.
[09:51] <jtv> So: the owner sees their disabled archives, but not builds for their disabled archives?
[09:52] <StevenK> jtv: We are only talking about the page for the recipe here -- if the daily build archive is disabled, anyone will see the name of the archive, but no one will see builds into it. And of course will be able to change it, as I said.
[09:53] <StevenK> And of course, the owner will be able to change it, I mean.
[09:53] <jtv> OK.
[09:53] <jtv> Then what I hope is my final stupid question: it looks like you're adding Archive to your join.  How will that affect performance?
[09:54] <jtv> Damn, penultimate.  My other one was "why does test_view_with_disabled_archive create a browser with a specific person, rather than either the default or self.factory.makePerson()"
[09:55] <StevenK> jtv: I suppose I could make another person rather than using no-priv. Would you prefer that?
[09:55] <jtv> StevenK: I think so, yes.  makePerson() really says "some arbitrary regular person."
[09:55] <StevenK> jtv: Archive isn't terrible large, so I can't see it adds much to the query.
[09:55] <jtv> But if there's a default you can use, that's even better.
[09:56] <StevenK> Well, I can use no-priv, but sampledata makes me sob.
[09:57] <StevenK> jtv: Also fixed locally.
[09:57] <jtv> What I mean is, doesn't getUserBrowser give you some arbitrary, unprivileged person by default?
[09:57] <StevenK> Oh. Not that I noticed when I read it.
[09:57]  * StevenK re-checks
[10:01] <StevenK> jtv: You're right, fixing.
[10:02] <jtv> StevenK: also, please keep an eye on its performance!  Archive isn't _that_ small, and I think I caught it slowing down a join quite a lot recently.
[10:05] <StevenK> jtv: I will compare before and after on qastaging for page loads when I QA. If it's a large jump, I will file a bug.
[10:05] <jtv> StevenK: great, thanks.
[10:06] <jtv> Final note: in lp/code/model/sourcepackagerecipe.py, the And() you add has its arguments list formatted weirdly.  Could you add a line break right after the opening parenthesis?
[10:07] <StevenK> jtv: It matches other uses in the file ...
[10:07] <jtv> StevenK: no time like the present…
[10:08] <StevenK> jtv:
[10:08] <StevenK> http://pastebin.ubuntu.com/568101/
[10:08] <StevenK> Rah
[10:08] <StevenK> jtv: I prefer it before, TBH.
[10:09] <jtv> Hmm okay, let's be pragmatic then. :)
[10:09] <jtv> Approved.
[10:09] <StevenK> jtv: With the And() change, or you don't mind now?
[10:10] <jtv> StevenK: I don't mind now
[10:11] <jtv> Anyway, I already voted.
[10:12] <jtv> henninge: I think this was you, but I'm not used to hearing such foul language from you!
[10:12] <jtv>         self.assertEqual('my-domain', make_name('my - do@ #*$&main'))
[10:13] <henninge> jtv: That's what reading comic books does to one's language!
[10:13] <jtv> tsk tsk
[11:12] <jml> I've added a dependency, and that dependency makes deprecation warnings when it loads
[11:12] <jml> we shouldn't do anything about the deprecation warnings
[11:12] <jml> how can I silence them?
[11:13] <wgrant> jml: lib/lp_sitecustomise.py
[11:13] <wgrant> s/mise/mize/
[11:13] <wgrant> We filter Crypto DeprecationWarnings there already.
[11:13] <jml> wgrant: thanks.
[11:15] <jml> next question, what's the correct way of running a script from an egg dependency within a test?
[11:17] <wgrant> Is it importable?
[11:19] <jml> not really. it's the sphinx-build script from Sphinx. I could sort of re-implement sphinx-build by importing sphinx and calling main() directly, if pressed.
[11:19] <jml> but am not in a rush to do so.
[11:20] <wgrant> I'd be doing that, unless the script itself is non-trivial...
[11:21] <jml> hmm.
[11:22] <jml> more robust against path snafus, less against changes to the sphinx-build interface. you're probably right.
[11:22] <wgrant> Plus it feels less like evil.
[11:23] <jml> I'm not sure
[11:23] <jml> my evilometer can't really distinguish the two.
[11:23] <wgrant> Calling Python from Python via a subprocess is somewhat evil.
[11:24] <jml> well, the evil is that sphinx doesn't provide a decent API
[11:24] <wgrant> Ah :(
[11:24] <wgrant> My programmatic invocations of it are limited to Makefiles.
[11:26] <jml> I had thought about calling the Make target.
[11:26] <LPCIBot> Project db-devel build (374): FAILURE in 5 hr 56 min: https://hudson.wedontsleep.org/job/db-devel/374/
[11:26] <LPCIBot> * Launchpad Patch Queue Manager: [rs=buildbot-poller] automatic merge from stable. Revisions: 12396,
[11:26] <LPCIBot> 12397 included.
[11:26] <LPCIBot> * Launchpad Patch Queue Manager: [r=stub][no-qa] Make the BugMessage.index non-null now that its fully
[11:26] <LPCIBot> populated and maintained by code.
[11:26] <LPCIBot> * Launchpad Patch Queue Manager: [rs=buildbot-poller] automatic merge from stable. Revisions: 12394,
[11:26] <LPCIBot> 12395 included.
[11:26] <jml> sphinx-build also doesn't return a non-zero return code when it fails
[11:26] <wgrant> Yeah, I noticed that.
[11:26] <wgrant> Fortunately docs aren't terribly critical, I guess.
[11:27] <wgrant> Still, Sphinx is really likable in lots of ways.
[11:27] <wgrant> I can forgive it a bit.
[11:27] <jml> No, but that's not an excuse for not building a good command line tool
[11:27] <wgrant> Although I cannot forgive docutils for being what it is.
[11:27] <jml> grar caching
[11:29] <jml> wait, huh. Why does TestCase.makeTemporaryDirectory not delete the directory in tearDown?
[11:29] <bigjools> you mean - our code has bugs?!  <shock>
[11:30] <jml> never mind. I'm a muppet.
[11:31] <bigjools> waldorf?
[11:34] <wgrant> Hmm, that's pretty nice.
[11:34] <wgrant> nightly.sh takes 5 hours now.
[11:34] <wgrant> Not >24
[11:34] <jml> wgrant: that's good. 5 is much less than 24.
[11:35] <wgrant> Although update-bugtask-targetnamecaches takes 50% longer on prod than mawson :(
[11:35] <jml> *sigh*. running directly from Python means mangling stdout & stderr. I guess I'll try it and see if it's faster.
[11:36] <wgrant> Sounds like it may be similar to docutils in its general levels of sensibility. Which I guess isn't surprising.
[11:36] <bigjools> wgrant: mawson is for soyuz testing....
[12:02] <deryck> Morning, all.
[12:38] <jml> boring branch: https://code.launchpad.net/~jml/launchpad/prevent-new-sphinx-errors/+merge/50136
[12:50] <jml> where is zeca used these days?
[12:50] <jml> specifically, is zeca.tac invoked anywhere?
[12:52] <maxb> tests that need to talk to a keyserver?
[12:52] <wgrant> It is still used by tests.
[12:53] <wgrant> eg soyuz-upload.txt
[12:54] <jml> any ideas about prod though?
[12:55] <wgrant> jml: It was never used in prod.
[12:55] <wgrant> It would possibly be even less reliable than SKS.
[12:55] <wgrant> It was never intended for anything more than tests.
[12:56] <jml> ok. I'll move the tac/ out of the root daemons/ directory then.
[12:57] <wgrant> Renaming it wouldn't go astray either...
[12:58] <jml> wgrant: yeah. I'm moving canonical.zeca to lp.services.keyserver.
[12:59] <wgrant> jml: Could you put it in lp.testing.keyserver, maybe?
[12:59] <jml> wgrant: yeah, I think so.
[12:59] <wgrant> lp.services.keyserver sounds like GPGHandler.
[13:13] <jml> hmm.
[13:13] <jml> does zeca even *need* config?
[13:13]  * jml doesn't think so
[13:14] <wgrant> It needs a root.
[13:14] <wgrant> Indeed, that is its only key.
[13:15] <wgrant> If you think you can make it static, you are sadly mistaken -- we need to override all those for parallel testing :(
[13:16] <jml> is config the easiest way to do that?
[13:16] <jml> does start-soyuz-dev.sh get used much?
[13:17] <wgrant> The existing facilities to do that are based on the config infrastructure.
[13:18] <wgrant> I use it often, but more often for buildd-manager than zeca.
[13:18] <gmb> allenap: Are you OCRing today?
[13:19] <allenap> gmb: Not really, I'm only doing a half-day and I've got a lot on my plate. If it's short I might take a look though :)
[13:20] <gmb> allenap: 57 lines of JS refactoring? Pweeese?
[13:20] <allenap> gmb: Okay.
[13:20] <jml> wgrant: ok. I'll fix it rather than delete it then.
[13:20] <allenap> As it's you :)
[13:20] <gmb> allenap: I shall send you a Woodfordes voucher by way of thanks. https://code.launchpad.net/~gmb/launchpad/speed-up-subscription-overlay-bug-719249/+merge/50148
[13:20] <wgrant> jml: It will probably be used more often when we have another 20 people trying to work out what Soyuz does.
[13:20] <wgrant> Rather than just using mawson.
[13:20]  * gmb notes that he needs to find out whether Woodfordes does vouchers.
[13:21] <jml> yeah.
[13:21] <jml> I just wish we had some consistency with the means by which we fire up dev services
[13:21] <wgrant> You mean like a Makefile?
[13:21] <jml> and indeed some rationale for scripts/, bin/ *and* utilities/
[13:25] <jml> wgrant: if such were used universally
[13:26] <wgrant> jml: They pretty much are, except for Soyuz because I was lazy.
[13:27] <jml> I love that 'zeca' is also a package and a password.
[13:29] <wgrant> I do not know its etymology.
[13:34] <jml> A Brazillian singer.
[13:35] <wgrant> Ah.
[14:09] <jml> I have to say I don't like the newer standard_test_template
[14:37] <henninge> Anybody in for a 103 line review?
[14:37] <henninge> https://code.edge.launchpad.net/~henninge/launchpad/bug-720673-import-origin/+merge/50157
[14:40] <henninge> deryck, abentley, adeuring: ^ ?
[14:41] <abentley> henninge, sure.
[14:41] <henninge> abentley: thank you!
[14:53] <abentley> henninge, you're still using edge? :-P
[14:54] <henninge> abentley: ups, that's my browser history playing tricks on me ;)
[14:54] <abentley> henninge, r=me
[14:54] <henninge> abentley: thanks!
[14:54] <abentley> henninge, also, could we mumble about bug #702477?
[14:54] <_mup_> Bug #702477: Translation credits on new POFiles show the dummy string for the other side <upstream-translations-sharing> <Launchpad itself:Triaged by abentley> < https://launchpad.net/bugs/702477 >
[14:57] <henninge> abentley: sure, give me 5 minutes
[14:57] <abentley> henninge, cool.
[15:04] <henninge> abentley: now
[15:04] <henninge> ;)
[15:07] <bigjools> henninge: do you know what's going on here? https://answers.edge.launchpad.net/launchpad/+question/125218
[15:12]  * jml pushes up a branch that renames 'zeca'
[15:12] <jml> https://code.launchpad.net/~jml/launchpad/zeca-is-keyserver/+merge/50166
[15:13] <bigjools> want that reviewed? :)
[15:13] <jml> bigjools: yes please.
[15:15] <jcsackett> sinzui: could you follow up on my review of https://code.launchpad.net/~jml/launchpad/prevent-new-sphinx-errors/+merge/50136, pls?
[15:15] <sinzui> I will
[15:19] <jcsackett> thanks.
[15:20] <jtv> Revenge for the Fake Librarian!
[15:21] <jtv> I just got a test case down from 29s to 3s.
[15:21] <jtv> bigjools: ^^^
[15:21] <bigjools> nice!
[15:21] <jtv> The main trick is that you don't have to commit as much.
[15:21] <bigjools> very nice
[15:21] <jtv> Also of course, when run individually, you can save on setup by using a lighter layer.
[15:24] <jtv> That's another 8s or so.
[15:32] <bigjools> jtv: know what's going on here? https://answers.edge.launchpad.net/launchpad/+question/125218
[15:33] <jtv> Gar, the incorrect use of technical terms is dizzying
[15:42] <jtv> bigjools: working on it.
[15:45] <bigjools> jtv: also: https://answers.edge.launchpad.net/launchpad/+question/140873 and  https://answers.edge.launchpad.net/launchpad/+question/140873
[15:45] <jtv> bigjools: aren't those the same?
[15:45] <bigjools> grar paste fail
[15:45] <jtv> They very much look the same.
[15:46] <bigjools> https://answers.edge.launchpad.net/launchpad/+question/137882
[15:46] <jtv> bigjools: OK, that's me busy for the rest of the day :)
[15:46] <bigjools> sinzui: did you hear back from the guy here? : https://answers.edge.launchpad.net/launchpad/+question/145187
[15:46] <bigjools> jtv: I aim to please
[15:46] <jtv> your aim is <tshock!>OW!
[15:48] <sinzui> bigjools: thanks for asking. No. he has not. I think we should suspend
[15:48] <leonardr> large but interesting branch needs review: https://code.launchpad.net/~leonardr/lazr.restful/include-html-field-representations/+merge/50174
[15:48] <bigjools> sinzui: ok, I'll get on it
[16:04] <sinzui> bigjools: Chex I have a question from a user I cannot answer. It concerns a user investigating spam that claims to be from him: https://pastebin.canonical.com/43532/
[16:04] <LPCIBot> Yippie, build fixed!
[16:05] <LPCIBot> Project devel build (450): FIXED in 5 hr 49 min: https://hudson.wedontsleep.org/job/devel/450/
[16:18] <jml> what benefit do we get from chunkydiff?
[16:21] <jml> a better question, are the errors from pagetests more readable than the errors from standard doctests?
[16:21]  * jml experiments
[16:23] <abentley> jml, I dunno, but I would *love* to have bzr's assertEqualDiff.
[16:24] <bigjools> jml: I've never noticed any difference between doc and page test error output
[16:34] <jml> yeah, identical.
[16:38] <henninge> abentley: I am stuck on a stupid timeout on qastaging for approving a template to be uploaded to cheese ...
[16:39] <abentley> henninge, ah.
[16:39] <henninge> before that it was waiting for an admin to make me maintainer of the project
[16:39] <henninge> ...
[16:42] <henninge> abentley: I am about EOD now. I cannot continue on this today, I am sorry.
[16:43] <abentley> henninge, understood.
[17:11] <jtv> How anti-climactic.  Some preparation, a whole day of revising and adding tests, and then everything just passes with just a tiny tweak of two functions.
[17:12] <jtv> TDD will never sell until they learn to threaten us with eternal damnation.
[17:12] <jml> huh
[17:12] <jml> TDD isn't spending a day writing tests before you change code
[17:13] <jtv> There were a lot of tests to be revised.
[17:13] <jtv> Small change, large consequences.
[17:16] <jml> guh, DNS down
[17:17] <jml> anyway, https://code.launchpad.net/~jml/launchpad/flush-out-canonical/+merge/50192 up for review
[17:20] <jtv> jml: it's massive!
[17:20] <jml> jtv: not really.
[17:20] <jml> jtv: I mean, it's bigger than usual, but it's not like it's 1500 lines of actual programming.
[17:21] <jtv> jml: anyway, fell for it—I spoke up so I volunteered.  Looking now.
[17:21] <jml> jtv: thanks.
[17:22] <jtv> And may I say thank you for doing this.
[17:22] <jml> jtv: my pleasure.
[17:26] <jtv> jml: doesn't pydoc have a dedicated tag for things that are deprecated?
[17:31] <jml> back.
[17:31] <jml> jtv: don't know. will look it up.
[17:31] <jml> also, we use rst-based epytext
[17:32] <jtv> ah
[17:32] <jtv> that gives me something I can search for, thanks
[17:32] <jtv> (I'd been wondering)
[17:33] <jml> answer is "yes", http://epydoc.sourceforge.net/manual-fields.html
[17:33] <jtv> Cool!
[17:34] <bigjools> mmm "make compile" is taking forever....
[17:35] <jtv> bigjools: -j∞
[17:36] <bigjools> that'd be nice
[17:36] <bigjools> -j2 for now though.  still takes ages
[17:36] <bigjools> 5 minutes so far!
[17:37] <bigjools> 2 spare cores = sad Phenom
[17:38] <leonardr> jcsackett, can you look at https://code.launchpad.net/~leonardr/lazr.restful/include-html-field-representations/+merge/50174? it's a big branch but it should be fun
[17:38] <bigjools> jml: I am trying to bolt ftp into poppy-sftp
[17:39] <lifeless> moin
[17:39] <jml> bigjools: oh yes.
[17:39] <bigjools> the maze of twisted objects is making my head hurt
[17:39] <jml> lifeless: hello
[17:39] <lifeless> jml: hello
[17:39] <bigjools> morning lifeless
[17:39] <jml> bigjools: am happy to help navigate.
[17:39] <bigjools> jml: I will take you up on that tomorrow, thank you
[17:39] <lifeless> jml: you might want to deop yourself; joey fixed us to have permissions, but its nominally bad form to have ops all the time
[17:39] <bigjools> just trying to get something basic working first
[17:39] <jml> lifeless: thanks. I didn't notice.
[17:40] <lifeless> flacoste: you too
[17:40] <jtv> jml: I'm surprised we're not using some off-the-shelf base64.
[17:40] <jml> jtv: me too.
[17:41] <jtv> I'll admit I'm not sure it's all url-safe.  And I believe there are different choices for the 64th digit.
[17:42] <jml> jtv: I'm also not sure why we sometimes use md5 and sometimes use sha1
[17:42] <lifeless> flacoste: ping
[17:42] <jtv> jml: if we keep the algorithm secret, it's harder to crack.
[17:43] <jtv> (yes, I AM joking)
[17:43] <jml> jtv: at least now the intent of the calling code is more clear.
[17:43] <jtv> jml: yes, it's a pleasure to read.
[17:44] <jml> jtv: stub is the original author, it seems (r1268!)
[17:45] <jtv> long live stub
[17:46] <jtv> A factory of metaclasses, oh dear—my meta stack just overflowed.
[17:50] <bigjools> twistd has finally beaten me for the day, I quit
[17:50] <benji> jml: half-overhearing your conversation makes me wonder if base64.urlsafe_b64encode in the stdlib is of interest to you
[17:52] <jcsackett> leonardr: looking now.
[17:52] <jtv> jml: ISTM base does go horribly wrong on 2's-complement minimal numbers.
[17:52] <jml> benji: If I'm reading the code correctly, I think it's too late.
[17:53] <jml> benji: since we've already stored stuff keyed with the old algorithm.
[17:53] <benji> Oh, there are otherwise encoded URLs in the wild?  That would be too late.  (Unless we were highly motivated to change for some reason.)
[17:53] <jml> right.
[17:54] <jml> not 100% sure though.
[17:54] <jml> I'm just moving the bit that does the encoding from one place to another :)
[17:54] <jml> (yay abstraction!)
[17:54] <benji> having a wierd way and a standard way is worse than just a wierd way :)
[17:54] <jcsackett> leonardr: this will probably take me a bit. :-P
[17:54] <jml> exactly.
[17:55] <jml> jtv: I don't know. I'm not sure it really matters, tbh.
[17:55] <lifeless> matsubara: hi
[17:55] <lifeless> matsubara: I think this is another bug in wallyworlds bind variables patch
[17:55] <matsubara> lifeless, hi
[17:55] <lifeless> matsubara: note the values has (u"...."
[17:55] <jtv> jml: yeah… though given the recent hullabaloo with basically all java and php breaking…
[17:55] <lifeless> thats python syntax, not sql
[17:55] <matsubara> lifeless, i don't know what patch is that
[17:56] <jml> jtv: I can add a check to reject negative numbers. It's not used for positive ones right now.
[17:56] <jml> s/not/only/
[17:56] <lifeless> matsubara: he changed the oops sql layer to record the values of things getting
[17:56] <jtv> jml: sure, that'd do it for me!
[17:56] <lifeless> %s substituted etc
[17:56] <jtv> jml: also, simpler.
[17:56] <bigjools> good night
[17:56] <lifeless> bigjools: night
[17:56] <jtv> good night bigjools
[17:56] <lifeless> matsubara: so that we get better diagnostics
[17:57] <lifeless> however, its backfired spectacularly;)
[17:57] <leonardr> jcsackett, feel free to ask questions
[17:58] <matsubara> lifeless, hmm
[17:58] <jtv> jml: in lib/lp_sitecustomize.py, s/eminate/emanate/
[17:59] <jtv> jml: Also, any idea whether that comment pertains to all deprecation warnings (which emanate from zope), or to all deprecation warnings that emanate from zope?
[17:59] <matsubara> lifeless, it doesn't seem to happen often though. I could identify only one oops triggering the regex problem
[17:59] <jml> jtv: no idea. I just moved it.
[18:00] <jtv> jml: fair enough, I'm ready to vote
[18:00] <lifeless> matsubara: indeed - much of our code just embeds literal sql today; this will change
[18:03] <lifeless> matsubara: I've just commented via mail with a suggested addition regex, and a proposed bugfix for the existing one so it doesn't timeout
[18:05] <jtv> jml: done.
[18:11] <leonardr> jcsackett, fyi, one thing that i shouldn't have put into the branch (and that i remove in the follow-up):
[18:11] <leonardr> if not invalid_field.endswith('_html'):
[18:11] <leonardr> that's the wrong way to do that
[18:13] <jcsackett> leonardr: dig.
[18:15] <jml> jtv: thanks!
[18:16] <jtv> np
[18:18] <lifeless> \o/
[18:18] <lifeless> bug 1 rendering reliably on staging.
[18:18] <_mup_> Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I
[18:18] <lifeless> who would have thought it.
[18:22] <jml> lifeless: nice
[18:24] <sinzui> jcsackett: I see you have a fix for diff and it was the viewport
[18:24] <jcsackett> sinzui: alignment to the viewport, yes.
[18:25] <jcsackett> once it was isolated it was trivial.
[18:25] <sinzui> jcsackett: r=me for code and ui
[18:25] <leonardr> jcsackett, when you're done: https://code.launchpad.net/~leonardr/lazr.restful/more-tests-for-combined-representations/+merge/50202
[18:25] <jcsackett> leonardr: that's the followup?
[18:25] <leonardr> yeah
[18:27] <jcsackett> sinzui: thanks
[18:27] <lifeless> I wonder if someone would like to qa https://bugs.launchpad.net/launchpad/+bug/718809
[18:27] <_mup_> Bug #718809: New users should default to not receiving email for their own actions <qa-needstesting> <story-better-bug-notification> <Launchpad itself:Fix Committed by danilo> < https://launchpad.net/bugs/718809 >
[18:27] <lifeless> if they do, we can deploy 4 more revs
[18:33] <flacoste> hi lifeless
[18:41] <jtv> jcsackett, are you very busy?
[18:41] <jtv> If not, → https://code.launchpad.net/~jtv/launchpad/bug-719247/+merge/50204
[18:45] <lifeless> hi flacoste
[18:46] <flacoste> lifeless, you pinged me earlier?
[18:46] <flacoste> also , where do you see that I have ops?
[18:46] <lifeless> flacoste: you had ops here and in #launchpad
[18:46] <flacoste> now removed?
[18:46] <lifeless> jml deoped you here, but that will happen on every join until you tell chanserv not to do it by default
[18:47] <lifeless> flacoste: you can get it back with /msg chanserv op #launchpad-dev
[18:47] <jml> lifeless: ahhh, that's what's going on.
[18:47] <lifeless> jml: same story for jtv, bigjools etc having voice
[18:48] <jml> lifeless: do you know what the setting is?
[18:48] <jml> lifeless: because afaict, you have the same flags as I do.
[18:48] <lifeless> we had someone being hostile/silly on #launchpad the other day and I pinged joey cause the ops list was -staaaale-
[18:48] <lifeless> I do
[18:52] <jml> figured it out
[18:52] <lifeless> it should have been
[18:53] <lifeless> flags #launchpad-dev lifeless -O
[18:53] <lifeless> but chanserv whinged, so I've asked joey to action it
[18:53] <jml> yeah, that's what I've got.
[18:55] <jcsackett> jtv: i can get to it, it's just got two in the queue before it.
[18:55] <jtv> jcsackett: then I will have to leave before you get to it… the documentation's fairly extensive though.
[18:55] <jcsackett> jtv: no worries.
[18:55] <jtv> thanks
[18:56] <lifeless> flacoste: I did, about the chat with #is; how did it go?
[18:56] <mhall119> using launchpadlib, is there a way to get the url for a person's mugshot?
[18:57] <flacoste> lifeless: went well, our tickets are blocked waiting on resources, but are next in line
[18:57] <lifeless> thanks
[18:57] <mhall119> lp.people['mhall119'].mugshot gives me a lazr.restfulclient.resource.HostedFile
[18:57] <mhall119> lp.people['mhall119'].mugshot.open() gives me a lazr.restfulclient.resource.HostedFileBuffer
[18:58] <mhall119> for displaying in LD, I just need a URL that the browser can use to load the image
[18:58] <mhall119> we currently use "https://edge.launchpad.net/api/beta/~%s/mugshot" % (identity)
[18:58] <lifeless> the mugshot_link, but note the caveats:
[18:58] <mhall119> if lp.people[request.user.username].mugshot.open() doesn't throw an exception
[18:59] <lifeless>  - privacy means that we may hand out a link to our appservers which will cause a request to use, a 302 and then a request to the librarian
[19:00] <lifeless> mhall119: didn't we go over this in excruciating detail a couple of weeks ago? IIRC you want the external url added to the object where possible, or something?
[19:00] <leonardr> lifeless: i don't think there is a web_link for a hosted file
[19:01] <mhall119> lifeless: yes, but it was Ronnie asking then, I'm playing catchup
[19:01] <lifeless> leonardr: indeed - they've been using the api link directly
[19:01] <lifeless> leonardr: which doesn't do what they need quite, AIUI
[19:01] <lifeless> mhall119: the channel is logged I think; you might like to read that discussion first
[19:02] <mhall119> lifeless: mugshot_link seems to be exactly what I want, not sure why we didn't use it in the first place
[19:03] <mhall119> if no mugshot is given, will mugshot_link be None, or raise an exception?
[19:03] <lifeless> mhall119: whats the value you see at the moment ?
[19:04] <leonardr> mhall119: mugshot_link will always have a value, but sending a GET to that url may give you a 404
[19:04] <leonardr> >>> l.people['david'].mugshot_link
[19:04] <leonardr> u'https://api.launchpad.net/1.0/~david/mugshot'
[19:04] <mhall119> ok..
[19:04] <lifeless> yeah, its *exactly* the same thing you are using at the moment
[19:04] <mhall119> leonardr: that's the problem I'm trying to fix too
[19:04] <mhall119> getting text instead of an image
[19:05] <mhall119> any ideas on that front?
[19:05] <jml> 347 packages in canonical and lp, 788 directories
[19:06] <leonardr> mhall119: what kind of program are you writing?
[19:06] <lifeless> jcsackett: https://code.launchpad.net/~lifeless/launchpad/bug-717394/+merge/50110
[19:06] <mhall119> leonardr: http://loco.ubuntu.com
[19:06] <jcsackett> lifeless: on the queue. :-P
[19:08] <leonardr> mhall119: is it javascript or server-side html generation?
[19:08] <mhall119> leonardr: server-side
[19:08] <mhall119> we store the URL in our database so we don't have to call LP every time
[19:09] <leonardr> mhall119: i suggest issuing a request for the mugshot link. you'll either get a 404 or a redirect to the librarian, and you can store the redirected url
[19:09] <leonardr> just be sure to re-check every once in a while in case they change their mugshot
[19:09] <leonardr> will that work?
[19:10] <mhall119> leonardr: yours doesn't give either a 404 or 302
[19:11] <leonardr> mhall119: it's a 303
[19:14] <mhall119> ah, ok
[19:15] <mhall119> leonardr: so given that 303, is there a way to get the correct url?
[19:15] <leonardr> mhall119: it should be in the Location header
[19:16] <mhall119>  oh, nevermind, https://api.launchpad.net/1.0/~david/mugshot gives a 404
[19:17] <jcsackett> leonardr: r=me on the first one.
[19:17]  * jcsackett prays for no more ~800 line diffs.
[19:17]  * jcsackett glances at lifeless's with sneaking suspicion...
[19:17] <leonardr> jcsackett: sorry, i should have done the Accept header parser as a separate branch
[19:17] <jcsackett> leonardr: all good. :-)
[19:18] <jcsackett> i just enjoy kvetching.
[19:18] <leonardr> in that case you should pray for more 800 line diff
[19:18] <leonardr> s
[19:19] <lifeless> jcsackett: +360 - 145
[19:19] <lifeless> jcsackett: is small
[19:20] <lifeless> of course, because it hits lots of contexts, thats 730 lines flattened
[19:20] <jcsackett> lifeless: yeah, it's not actually that bad.
[19:21] <jcsackett> i'm on a bit of cold meds, so my sense of humor is distorted.
[19:21] <lifeless> jcsackett: btw I thought about making setUpTarget2 a template function, but the trade off was pretty average, and the code harder to follow so I left it as first crafted
[19:21] <lifeless> jcsackett: nasal hijinks?
[19:21] <jcsackett> lifeless: thus far. there's been a round of flu/bronchitis among some friends. i'm hoping mine is just a cold.
[19:21] <lifeless> grah
[19:21] <lifeless> be well
[19:23] <lifeless> the any/all helpers are a bit awkward to work with
[19:30] <lifeless> flacoste: so, optional reviews
[19:30] <lifeless> flacoste: I raised the thread as we discussed
[19:31] <flacoste> lifeless: yep, looks like we are good to make this the standard process
[19:31] <flacoste> lifeless: simply update the wiki pages
[19:32] <lifeless> flacoste: I'd like to roll it into the main process docs. What do you think?
[19:32] <flacoste> lifeless: sure
[19:33] <lifeless> jcsackett: so my branch has only 4 code changes: expose open_bugtasks_search, add BugTaskSearchParams.setTarget, add BugTaskSet.countBugs, use it from BugTargetView
[19:38] <lifeless> matsubara: hi
[19:38] <lifeless> matsubara: did my suggesetion in the bug make sense?
[19:39] <matsubara> lifeless, I'm adding some tests cases so we can see if the regex change will work for us
[19:39] <matsubara> lifeless, from what I tested manually the first regex worked, the second one didn't work so well
[19:41] <lifeless> matsubara: I think we need test cases yes :)
[19:41] <lifeless> matsubara: but broadly you need two changes:
[19:41] <lifeless>  1) make the single quote string regex not take so long
[19:41] <lifeless>  2) add a regex for u"" strings
[19:41] <jcsackett> lifeless: dig. having made coffee i'm properly looking at yours now.
[19:45] <matsubara> lifeless, cool. thanks for the feedback. once I have the mp ready, I'll ask you to take a look
[19:45] <matsubara> :-)
[19:45] <lifeless> sweet
[20:06]  * thumper afk to take car in to get serviced, back asap
[20:16] <benji> that reminds me, I need to take cdr in for service too; I wonder if the local Lisp shop is still open
[20:17] <leonardr> jcsackett, can i get you to take a look at one more small revision to https://code.launchpad.net/~leonardr/lazr.restful/more-tests-for-combined-representations/+merge/50202 ?
[20:18] <leonardr> specifically, revision 185
[20:22] <jcsackett> leonardr: still r=me.
[20:22] <leonardr> great
[20:31] <lifeless> jcsackett: hi
[20:31] <jcsackett> lifeless: hello.
[20:32] <lifeless> would a voice call to go through the patch help? I'm only asking because I wasn't expecting it to chew up hours of your time .
[20:32] <matsubara> lifeless, https://code.launchpad.net/~matsubara/oops-tools/720358-regex-fix/+merge/50225
[20:33] <lifeless> jcsackett: (and I feel guilty about taking up that much time)
[20:33] <jcsackett> lifeless: it hasn't chewed up hours. you pinged while i was in the midst of other reviews.
[20:34] <jcsackett> and i've had some distractions. i'm finishing making notes now.
[20:35] <lifeless> jcsackett: oh, phew :)
[20:35] <jcsackett> lifeless: yeah, no worries. :-)
[20:35] <jcsackett> now, OCR? that has chewed up hours. :-P
[20:41] <LPCIBot> Yippie, build fixed!
[20:41] <LPCIBot> Project db-devel build (375): FIXED in 5 hr 57 min: https://hudson.wedontsleep.org/job/db-devel/375/
[20:44] <jcsackett> lifeless: r=me.
[20:44] <jcsackett> sinzui, there's a stack of reviews i've thrown in that i need follow up on. not sure if you've seen them or not already.
[20:45]  * jcsackett moves on to last branch he was pinged for.
[20:49] <thumper> leonardr: want to approve https://code.launchpad.net/~thumper/launchpad/recipe-inline-edit-recipe-text/+merge/49585 ?
[20:50] <lifeless> oh, rightm you're being mentored
[20:50] <lifeless> sinzui: -yo-
[20:51] <jcsackett> lifeless: yes, i'm the diet coke of reviewers right now. :-)
[20:52] <lifeless> that reminds me of cola/coke/pepsi
[20:52] <lifeless> http://piumarta.com/software/cola/
[20:53] <lifeless> jcsackett: ^
[20:53] <matsubara> lifeless, thanks!
[20:53] <lifeless> de nada
[20:54] <jcsackett> lifeless: that sounds rather ambitious.
[20:54] <lifeless> it is
[20:55] <lifeless> some interesting shit
[20:56] <dobey> heh, that is not what i think of when i hear pepsi/jolt in reference to a piece of code
[20:56] <lifeless> http://piumarta.com/software/peg/ is also interesting to compiler geeks
[20:57] <jcsackett> peg i have heard of.
[20:57] <jcsackett> never looked at, but heard of.
[20:59] <sinzui> lifeless: jcsackett: I am back. I can review again
[21:00] <lifeless> sinzui: \o/
[21:00]  * StevenK grumbles at buildbot
[21:00] <lifeless> sinzui: I want to have a ui discussion about bugtask:+index with someone
[21:00] <lifeless> sinzui: would you be suitable, and if so, when would be good for you?
[21:00] <thumper> In mumble, if I use "push to talk" what do I push?
[21:01] <lifeless> there is a config option to choose a key
[21:02] <sinzui> lifeless: in a few minutes. I need to get a drink and hope that me second computer prefers an older kernel
[21:03] <lifeless> sinzui: kk
[21:03] <thumper> StevenK: can you hear me?
[21:04] <StevenK> thumper: Didn't have headphones on, try again?
[21:05] <thumper> leonardr: you around?
[21:05] <leonardr> yup
[21:05] <thumper> mumble?
[21:06] <StevenK> thumper: Configure -> Settings -> Shortcuts
[21:15] <lifeless> sinzui: shout when you are ready
[21:16] <thumper> sinzui: can you look at jcsackett's reviews of leonardr's branches?
[21:16] <thumper> sinzui: I want them landed asap :-)
[21:18] <StevenK> leonardr: lib/canonical/lazr/security.py and lib/canonical/lazr/doc/checker-utilities.txt is the test
[21:21] <thumper> sinzui: if you can't, I'll be happy to mentor the reviews
[21:21] <sinzui> thumper: I am reading it now
[21:21] <thumper> sinzui: awesome, thanks
[21:27] <thumper> I'm so freaking excited about this lazr.restful change
[21:28] <thumper> sinzui: got a minute?
[21:28] <thumper> sinzui: for mumble?
[21:28] <lifeless> thumper: I'm queued already for sinzui :)
[21:28] <thumper> lifeless: :(
[21:28] <lifeless> thumper: ^^
[21:29] <thumper> lifeless: my minute with sinzui is talking through the background of the changes that he is currently reviewing
[21:29] <thumper> lifeless: so it is more timely :)
[21:29] <poolie> hi thumper
[21:30] <thumper> hi poolie
[21:30] <poolie> hi lifeless, your statement about pithiness was to pithy to be understandable :)
[21:30] <thumper> poolie: we should have a chat sometime
[21:30] <poolie> how about 60m from now?
[21:31] <LPCIBot> Project devel build (451): FAILURE in 5 hr 26 min: https://hudson.wedontsleep.org/job/devel/451/
[21:31] <LPCIBot> Launchpad Patch Queue Manager: [r=jtv][bug=715325] Don't return builds for disabled archives using
[21:31] <LPCIBot> get{Pending, }Builds() on recipes.
[21:32] <thumper> poolie: yeah, that should work
[21:32] <lifeless> poolie: :)
[21:33] <leonardr> thumper, i don't think test_recipe_text tests anything? to test that you can edit the recipe text, you would have to call lp_save()
[21:33] <thumper> do we have to call lp_save for mutators?
[21:34] <leonardr> thumper: you don't have to call lp_save() when you invoke a named operation
[21:34] <leonardr> but the purpose of a mutator is to hide a named operation so that it looks like normal field access
[21:34] <thumper> leonardr: but you do for mutators?
[21:34] <leonardr> and in that case you do need to call lp_save()
[21:35] <thumper> leonardr: if you have several mutators that are being saved, which order are they called?
[21:35] <leonardr> ie. on the client, side, there is no 'mutator'
[21:35]  * thumper adds a lp_save()
[21:35] <leonardr> it's just that recipe_text is editable
[21:35] <leonardr> r=me apart from that
[21:35] <thumper> ok
[21:36] <leonardr> thumper: if you have several mutators, i believe they're called in the order in which the fields were defined in the annotated interface
[21:36] <thumper> ok
[21:36] <thumper> as in the order the fields that are being mutated were defined?
[21:36] <leonardr> yeah
[21:37] <thumper> ok
[21:37] <thumper> that makes sense
[21:37] <leonardr> that gives you the most control
[21:37]  * thumper nods
[21:37] <StevenK> leonardr: As a stupid question, how do I run the lazr.restful tests? There's no makefile that I can see.
[21:38] <leonardr> StevenK: python bootstrap.py; bin/buildout; bin/test
[21:38] <thumper> StevenK: it can take a while the first time
[21:38] <thumper> StevenK: it is worthwhile setting a cache for buildout
[21:39] <leonardr> yeah, put this in ~/.buildout/default.cfg
[21:39] <leonardr> [buildout]
[21:39] <leonardr> eggs-directory=/home/[username]/.buildout/eggs
[21:39] <leonardr> download-cache=/home/[username]/.buildout/download-cache
[21:39] <leonardr> and create those directories
[21:40] <leonardr> first buildout will take a few minutes, subsequent will be instantaneous
[21:40] <thumper> leonardr: I've just privmsg'ed that to StevenK too :)
[21:40] <leonardr> k
[21:41] <StevenK> I didn't even have setuptools installed, so I'm still on the first step :-)
[21:44]  * leonardr leaving but will be back to do a lazr.restful release
[21:45] <jam> jcsackett: could I get you to look at https://code.launchpad.net/~jameinel/launchpad/lp-forking-serve-cleaner-childre/+merge/50031
[21:45] <jam> hmm... looks like I put the comment in the wrong spot, just a sec
[21:47] <jam> pushed an update
[21:48] <lifeless> sinzui: ping
[21:48] <sinzui> hi lifeless
[21:48] <lifeless> sinzui: is now good ?
[21:48] <sinzui> May I have 10 more minutes to finish a review?
[21:49] <lifeless> of course
[22:00] <jcsackett> jam: everything where it should be on that MP? I can look at it now.
[22:04] <lifeless> matsubara-afk: lp-oops is timing out for me now
[22:04] <lifeless> matsubara-afk: on OOPS-1716ED446
[22:05] <sinzui> lifeless: I am available now. irc, mumble, or skype
[22:05] <lifeless> skype works best I think
[22:06] <StevenK> leonardr: https://code.launchpad.net/~stevenk/lazr.restful/move-test/+merge/50239 If you're still around
[22:07] <jml> turns out my branch to rename zeca fails with an obscure error in an at-first-glance unrelated test
[22:07] <jml> who'd have thunk it!
[22:07]  * jml fixes
[22:08] <thumper> jml: I'd a thunk it
[22:11] <lifeless> sinzui: https://bugs.launchpad.net/ubuntu/+bug/1
[22:11] <_mup_> Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I
[22:13] <jam> jcsackett: everything should be ready
[22:13] <jcsackett> jam: i will look at it soon.
[22:13] <StevenK> wgrant: Did you want to close all of the bugs referenced by the rollout?
[22:14] <jcsackett> sinzui: fire alarm just went off in my apartment building. hopefully we'll be back in before standup.
[22:14] <jam> jcsackett: this is another one which should be ready for review https://code.launchpad.net/~jameinel/launchpad/twisted-close-on-failure/+merge/50067
[22:19] <wgrant> StevenK: Done.
[22:21] <jml> getPublisher meaningfully changes state. How interesting.
[22:23] <thumper> StevenK, wgrant: does a distro "always" have a current distroseries?
[22:23] <wgrant> No.
[22:23] <thumper> or, I guess, does "ubuntu" always have one?
[22:23] <wgrant> Wait.
[22:24] <wgrant> With status CURRENT?
[22:24] <wgrant> Or do you mean a development focus?
[22:24] <thumper> wgrant: whatever I need for "maverick" now
[22:24] <thumper> wgrant: I'm wanting to provide a reasonable default for daily builds
[22:24] <thumper> so the default initially will be the current distroseries
[22:24] <thumper> development focus right now is natty
[22:25] <wgrant> There will almost always be one, but it will be missing occasionally.
[22:25] <wgrant> And for new distros.
[22:25] <wgrant> Which are coming soon.
[22:26] <thumper> wgrant: if a distro has at least one distro series, is the distro guaranteed to have a development focus?
[22:26] <thumper> also... why don't we force distros to have at least one series like projects?
[22:27] <wgrant> Because distroseries are special and do magical Soyuz things.
[22:27] <wgrant> Although it's less bad now.
[22:27] <jml> did anyone debug that error with ec2 things not having any output in 600s?
[22:27] <wgrant> You should use Distribution.currentseries.
[22:27] <jcsackett> sinzui: i'm back. false alarm, evidently.
[22:27] <wgrant> thumper: .currentseries implements the development focus logic, and will always return something if there are any series.
[22:28]  * thumper looks at the distro model code
[22:29] <thumper> wgrant: that would give recipes a default of making for natty now not maverick
[22:29] <thumper> ...
[22:29] <wgrant> I know.
[22:29] <StevenK> lifeless: See new comment on RT#43352
[22:29] <_mup_> Bug #43352: ipp jobs not purged; purging causes 100% cpu usage <cupsys (Ubuntu):Fix Released> <gnome-cups-manager (Ubuntu):Invalid> < https://launchpad.net/bugs/43352 >
[22:29] <thumper> I wonder if that is good enough
[22:29] <lifeless> StevenK: otp
[22:29] <wallyworld> thumper: ping me when you are free? do you want to discuss the "Build now" ui review points?
[22:30] <thumper> wallyworld: I was just going to have a quick chat with poolie
[22:30] <thumper> wallyworld: after that?
[22:30] <wallyworld> thumper: no hurry. that's why i mentioned when you are free :-)
[22:30] <jcsackett> jam: what confidence do we have that this try/finally all works, given there's no test coverage?
[22:30] <thumper> poolie: skype or mumble?
[22:31] <thumper> wgrant: when is a distroseries FROZEN ?
[22:31] <StevenK> thumper: Just before release.
[22:31] <wgrant> Around release time, or when it has just been created and is not yet initialised.
[22:31]  * thumper nods
[22:31] <thumper> ok
[22:32] <wgrant> Embedding all this in a single status is a little insane, but that's how it is :(
[22:34] <jml> wgrant: is https://bugs.launchpad.net/launchpad/+bug/661931 still an issue?
[22:34] <_mup_> Bug #661931: make check sometimes fails on EC2 without test failures <lp-foundations> <Launchpad itself:Triaged> < https://launchpad.net/bugs/661931 >
[22:34] <wgrant> jml: I don't think so.
[22:34] <wgrant> All that remains is the Windmill hang, AIUI.
[22:35] <jml> For which I just filed bug 720998
[22:35] <_mup_> Bug #720998: ec2 test times out <build-infrastructure> <Launchpad itself:Triaged> < https://launchpad.net/bugs/720998 >
[22:36] <thumper> wallyworld: join mumble and lets talk about your reviews
[22:36] <thumper> wallyworld: poolie has now been bumped to after lunch
[22:39] <wgrant> jml: Does getPublisher do much beyond creating directories?
[22:39] <jml> wgrant: well, presumably it gets a publisher
[22:39] <wgrant> s/do much/do much evil/
[22:39] <jml> wgrant: oh right, nothing obvious.
[22:40] <jml> wgrant: I deleted a line in a test that was "unused_variable = getPublisher(...)"
[22:40] <wgrant> Hah.
[22:40] <wgrant> That all sort of sucks. I rewrote the underlying config stuff last year, but didn't end up making it all the way to the top.
[22:40] <jml> because I guess functions that start with 'get' are effectively read-only
[22:41] <jml> wgrant: it's all about incremental improvement
[22:41] <wallyworld> thumper: was otp, ok to go now
[22:42] <jml> I got this error while running sphinx.main() in the Launchpad test suite on EC2:
[22:42] <jml> actual = "Making output directory...\nException IndexError: IndexError('list index out of range',) in <bound method _LockWarner.__del__ of <bzrlib.lockable_files._LockWarner object at 0x10f65d50>> ignored\n"
[22:42] <jml> uhh, the error is the exception
[22:42] <jml> hmm...
[22:42] <jml> that gives me a though
[22:42] <jml> .t
[22:52] <lifeless> wgrant: hi
[22:53] <lifeless> wgrant: I was considering another deploy, but danilos patch asn't qa'd; wondering if thats something you might like to do?
[22:57] <lifeless> StevenK: I see, cool.
[23:00] <sinzui> lifeless: ie6=0.5%, ie7=1%
[23:02] <lifeless> nice
[23:02] <lifeless> so we should ask our stakeholders / commercial customers only
[23:05] <wgrant> lifeless: Sure.
[23:10] <wgrant> lifeless: Looks good. I shall request the deploy.
[23:10] <lifeless> wgrant: -woot-
[23:11] <wgrant> This means we have deployed every day this week, I think.
[23:11] <sinzui> 16% of our visitors are using mobile devices
[23:11] <wgrant> Ah, no, missed Tuesday.
[23:11] <wgrant> But I think timezones meant they were close anyway.
[23:11] <sinzui> I bet they hate bug 1
[23:11] <_mup_> Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I
[23:13] <wgrant> lifeless: Can we remove the security deployment section from LPS?
[23:13] <wgrant> production-stable seems to be pretty dead.
[23:13] <lifeless> wgrant: raise it for discussion with losas
[23:14] <lifeless> I wanted to initially but there was lots of concern about when it would be needed, so it stayed as a compromise
[23:14] <wgrant> k
[23:14] <wgrant> I am at least tempted to move it below the stable section.
[23:14] <lifeless> if it goes, a bunch of processes can be cleaned up too
[23:20] <huwshimi> sinzui: Wow, the number of mobile users is way higher than I expected it
[23:22] <jam> jcsackett: sorry about the delay, was picking up my son. I have run the specific code quite thoroughly, and there are some tests that already cover it.
[23:22] <jam> It is a little bit hard to inject specific failures into that exact point. If you feel it is critical, we can try to figure something out
[23:22] <jam> but I did do a lot of manual testing.
[23:22] <jcsackett> jam: ah, in your MP you said there were no tests; i took that to mean no testing. :-)
[23:22] <jam> no new tests covering what changed
[23:23] <jcsackett> dig.
[23:29] <jcsackett> jam: r=me, but i'm mentored, so sinzui will have to follow up, and it is EOD in our tz. he may still follow up today, or tomorrow morning.
[23:30] <jam> k, thanks jcsackett
[23:30] <jcsackett> jam: np. :-)
[23:32] <wgrant> lifeless: So, are you OK with https://code.launchpad.net/~wgrant/launchpad/bug-708999-ff-docs/+merge/49758?
[23:32] <wgrant> It seems rather controversial.
[23:32] <wgrant> But it looks like improvements on it are even more controversial.
[23:51] <lifeless> otp
[23:58] <wgrant> Some people's interpretation of HTTP is pretty creative.