[00:16] <StevenK> wgrant: And you end up getting r15000
[00:16] <wgrant> StevenK: Indeed.
[00:17] <StevenK> wallyworld_: https://code.launchpad.net/~stevenk/launchpad/imports-once-more-with-feeling/+merge/98944
[00:18] <wallyworld_> on it
[00:21] <wallyworld_> StevenK: r=me. i'm sure you'll find some more next week
[00:23] <StevenK> Haha, probably.
[00:26] <wgrant> wallyworld_: How do you feel about 650ms for a batch of Ubuntu grantees on dogfood?
[00:26] <wallyworld_> wgrant: i think that's ok, no? i have nothing to compare it to though
[00:27] <wallyworld_> what does the profiling say take the time?
[00:27] <wgrant> I mean in SQL.
[00:27] <wgrant> Isn't it taking about 2s on prod atm?
[00:27] <wgrant> s/prod/qas/
[00:27] <wallyworld_> total, not sure about the breakdown
[00:28] <wgrant> Can you check?
[00:28] <wgrant> Expand the in-page query listing.
[00:28] <wgrant> Since oops-tools chokes on these oopses.
[00:28] <wallyworld_> i/m sort of in the middle of some coding right atm
[00:29] <wgrant> k
[00:29] <lifeless> wgrant: wait, what ?
[00:29] <wallyworld_> messing with lp form infrastructure
[00:29] <wgrant> lifeless: sqlparse crashes when asked to reindent some of wallyworld's SQL
[00:29] <lifeless> aieee win
[00:29] <wgrant> lifeless: It doesn't like MIN(CASE [...])
[00:29] <lifeless> wgrant: you've opened a bug ?
[00:30] <wgrant> No, was too busy trying not to throw buildbot and rosetta into a fire pit.
[00:30] <wallyworld_> wgrant: i wasn't going to look too closely at the nimbers till the next branch lands
[00:31] <wgrant> wallyworld_: I've tried the new primary DISTINCT query -- it takes 8s on DF.
[00:31] <wgrant> Rewording it gets it down to 650ms.
[00:31] <wgrant> Will see how it is on qas.
[00:32] <wallyworld_> 8s? what does explain say?
[00:32] <lifeless> ask again later
[00:33] <wgrant> wallyworld_: It does the sort before the unique
[00:33] <wgrant> So it's sorting like 140000 people
[00:33] <wallyworld_> well that sucks
[00:33] <wgrant> Forcing it to do the distinct first (by moving it into a subquery) works nicely, but it'd be nice if it was smarter.
[00:33] <wallyworld_> you should land that
[00:34] <lifeless> distinct will always sort before unique unless the data is being generated in-order for selective skipping
[00:34] <lifeless> or the output sort is wholly different to the distinct columns, at which point brains assplode
[00:34] <wgrant> Yeah.
[00:35] <wgrant> Oh
[00:35] <wgrant> It's the extra parens
[00:35] <wgrant> >>> sqlparse.format('SELECT CASE (foo) WHEN 0 THEN 1 END', reindent=True)
[00:35] <wgrant> u'SELECT CASE (foo)\n           WHEN 0 THEN 1\n       END'
[00:35] <wgrant> >>> sqlparse.format('SELECT CASE(foo) WHEN 0 THEN 1 END', reindent=True)
[00:35] <wgrant> Traceback (most recent call last):
[00:35] <wgrant> When there's (unncessary) parens after CASE without a space, boom.
[00:36]  * wgrant lands a workaround to LP
[00:36] <lifeless> wgrant: you will file a bug upstream though?
[00:36] <wgrant> lifeless: Yeah
[00:36] <wgrant> Just confirming that it still exists.
[00:37] <lifeless> thanks
[00:37] <lifeless> I hsould have had fairh
[00:37] <wgrant> orly?
[00:37] <wgrant> Oh
[00:37] <wgrant> faith
[00:38] <wgrant> lifeless: Fixed upstream, it seems.
[00:38] <wgrant> >>> sqlparse.format('SELECT CASE(foo) WHEN 0 THEN 1 END', reindent=True)
[00:38] <wgrant> u'SELECT CASE(foo)\n           WHEN 0 THEN 1\n       END'
[00:39] <wgrant> Our version's more than a year old.
[00:40] <wgrant> But there's only been one release since.
[00:41]  * wgrant upgrades us to 0.1.3.
[00:44] <wgrant> lifeless: Does python-oops-tools do reviews?
[00:44] <lifeless> humans do
[00:44] <wgrant> Ah, I see there are MPs.
[00:44] <lifeless> lp reviewers review them
[00:44] <lifeless> or should be
[00:45] <lifeless> its in the same group etc etc - /launchpad-project
[00:45] <lifeless> e.g. wallyworld as OCR is interruptible
[00:45] <lifeless> wgrant: if its a dep bump, self review though
[00:45] <wgrant> Sure
[00:45] <wgrant> Still wants an MP by policy, though.
[00:45] <wallyworld_> am i needed?
[00:45] <wgrant> Nope.
[00:46] <wallyworld_> good :-)
[00:46] <wgrant> I can self-review an s/2/3/ :)
[00:54] <wgrant> Oh
[00:54] <wgrant> It's tarmac
[00:54] <wgrant> So I couldn't have committed directly anyway.
[02:12] <StevenK> wgrant: Has your -11-4 triggers branch landed?
[02:15] <StevenK> Grumble. 917 line branch. Perhaps I will have to split this thing.
[02:16] <wgrant> StevenK: No, it was waiting for your information_type NOT NULL branch.
[02:16] <wgrant> Which I believe landed this morning.
[02:16] <StevenK> It did, yes.
[02:16] <wgrant> But we already have two patches in the queue, and it won't clear until Tuesday, so I won't land it yet.
[02:16] <StevenK> This code branch depends on it and -12-3
[02:17] <wgrant> So Monday will be FKs, Tuesday will be NOT NULL, Wednesday will probably be my legacy access triggers
[02:17] <wgrant> Then what do you have/
[02:17] <StevenK> BugSummary triggers
[02:18] <wgrant> Ah
[03:16] <wgrant> wallyworld_: Ah, findGranteePermissionsByPolicy still returns oddly sized batches.
[03:16] <wgrant> Because it's distinct on (person, policy)
[03:16]  * wgrant fixes in the performance branch.
[03:16] <wallyworld_> bollocks, thanks
[03:17] <wallyworld_> wgrant: if you fix, can you add a test too?
[03:17] <wgrant> wallyworld_: It necessitates a reworking of the return type, so I have to rewrite the tests anyway.
[03:17] <wallyworld_> ok
[03:18] <wgrant> (currently it returns 75 (person, policy, permission) rows, whereas it probably wants to return 75 (person, {policy: permission})
[03:27] <wallyworld_> i like the 3-tuple form better
[03:28] <wgrant> Indeed, but it doesn't work for slicing by person.
[03:28] <StevenK> wgrant: So why does the langpack export take 22 hours? And no fair if you say because translations is horrible.
[03:28] <wgrant> 'cause you'd slice by :75 and get 93 rows.
[03:28] <wgrant> StevenK: Because translations is horrible.
[03:28] <wgrant> I filed a bug on it a couple of weeks ago.
[03:28] <StevenK> wgrant: No fair.
[03:29] <wgrant> The bug mentions a specific thing that might be a performance problem.
[03:51] <StevenK> 971 line diff :-(
[03:59] <StevenK> wallyworld_: Are you going to hate me if my branch that drops private and security_related from CreateBugParams, IBug._private and IBug._security_related is roughly 1,000 lines?
[04:00] <wallyworld_> no
[04:00] <wallyworld_> i hte you anyway
[04:00] <StevenK> :-(
[04:01] <StevenK> wgrant: Turns out bugsummary *and* calculate_bug_heat has to change.
[04:01] <wgrant> :D
[04:01] <wallyworld_> StevenK: i was joking :-P
[04:02] <StevenK> 220 database/schema/patch-2209-12-3.sql
[04:02] <StevenK> stub is going to hate me too.
[04:02] <wgrant> 523 ../bugtaskflat-db/database/schema/patch-2209-16-0.sql
[04:04] <StevenK> Haha
[04:05] <StevenK> One bug to fix, then I get to re-run -vvm bugs
[04:21] <wgrant> Has diff generation been oddly fast or anyone else lately?
[04:21] <wgrant> I'm regularly getting diffs within 20 seconds now.
[04:22] <wgrant> wallyworld: https://code.launchpad.net/~wgrant/launchpad/sharing-prettier-sql/+merge/98967
[04:22] <wgrant> wallyworld_: ^^
[04:22] <wgrant> underscorefail
[04:24] <StevenK> Haha
[04:35] <wallyworld_> wgrant: r=me. will be good to see how it goes on qas
[04:35] <wgrant> Marvellously I hope.
[04:36] <wgrant> Then we can set the timeout to 1s and declare victory over the universe.
[04:36] <nigelb> I want to setup a qdb just for all the fun quotes in #lp-dev
[04:37] <StevenK> You'll keep adding branch names.
[04:38] <nigelb> I'll just have everything StevenK and wgrant says.
[04:39] <nigelb> maybe I should just make it a tumblr. shitlpdevssay.tumblr.com :P
[04:39] <wgrant> !!
[04:39] <wgrant> http://validator.w3.org/check?uri=https%3A%2F%2Flaunchpad.net&charset=%28detect+automatically%29&doctype=Inline&group=0
[04:39] <wgrant> We are valid!
[04:39] <wgrant> Finally.
[04:40]  * wallyworld_ goes away for a bit - bookclub with kid after school
[04:40] <StevenK> With 2 warnings?
[04:40] <huwshimi> wgrant: So we've gone LIVE with changing over to html5?!
[04:41] <wgrant> huwshimi: Yeah, this morning. I tested the site fairly thoroughly in Firefox/Chromium/Opera/Safari/IE8/IE9/IE10, and it looks good.
[04:42] <huwshimi> wgrant: I've clearly missed the discussion about doing that...
[04:42] <wgrant> It was just a doctype change :)
[04:42] <wgrant> So the only rendering change is moving from Almost Standards to Standards.
[04:46] <huwshimi> wgrant: Have you tested in ie6?
[04:46] <huwshimi> (it's not JUST a doctype change)
[04:46] <wgrant> huwshimi: The watermark is slightly broken, but we no longer support IE6.
[04:46] <huwshimi> wgrant: When was that decided?
[04:46] <wgrant> (only difference is that the logo is on a separate line)
[04:47]  * wgrant finds a reference.
[04:47] <wgrant> 06:56 < lifeless> rockstar: we just blew IE6 away
[04:47] <wgrant> 06:56 < lifeless> rockstar: so gnar gnar gnar :P
[04:48] <wgrant> And various other discussions.
[04:48] <wgrant> But the doctype change makes no visible difference in IE6.
[04:48] <huwshimi> wgrant: Have you check that?
[04:49] <huwshimi> wgrant: You're going to have to cite something better than that. Last I heard we have significant stakeholders who require IE6. If that's changed it's not been announced publicly.
[04:52] <wgrant> huwshimi: That restriction came from OEM a little over two years ago, and is apparently no longer true. https://dev.launchpad.net/GradedBrowserSupport was recently updated to remove any reference to IE.
[04:52] <wgrant> And it has been stated on IRC that IE6 is no longer required.
[04:52] <wgrant> lifeless: ^^ right?
[04:53] <wgrant> Anyway, still works fine on IE6, except for the logo and title being on different lines.
[04:53] <wgrant> (and the fact that we use PNG transparency for sprites, which makes everything look pretty hideous, but that's been the case for years)
[05:01] <huwshimi> wgrant: There needs to at least have been a discussion about migration, ramifications, future implications etc.
[05:05] <wgrant> huwshimi: For the doctype change that doesn't change the markup that engineers must write at all, brings the existing HTML5 elements and attributes that we use into validity, and in browsers causes a single rendering change (the removal of the shrinkwrap effect from inline images)?
[05:06] <wgrant> It's not as if we're moving from XHTML to HTML rendering.
[05:06] <wgrant> There was some discussion on our call, however.
[05:08] <huwshimi> Right, those are SOME of the implications of changing to HTML5.
[05:12] <wgrant> The only change is the doctype, and the only user-visible difference is the inline img shrinkwrap removal, which has already been fixed everywhere that it was used.
[05:12] <wgrant> There may be implications of using more HTML5-only features.
[05:12] <wgrant> But that wasn't the change here.
[05:13] <wgrant> We've always been polyglot HTML/XHTML out of necessity, so there is no markup difference.
[05:13] <wgrant> So the implications are remarkably close to 0.
[05:17] <huwshimi> wgrant: I think you're missing the point.
[05:20] <wgrant> huwshimi: Oh?
[05:22] <huwshimi> wgrant: "16:01:32 huwshimi: wgrant: There needs to at least have been a discussion about migration, ramifications, future implications etc."
[05:23] <wgrant> Migration: the shrinkwrapping change. Ramifications: the shrinkwrapping change, and our existing usage of HTML5 elements is no longer invalid. Future implications: nothing new.
[05:23] <huwshimi> (and by discussion I mean on the mailing list)
[05:23] <wgrant> Particularly boring.
[05:25] <lifeless> wgrant: huwshimi: we are waiting on a final ack from OEM *but*
[05:25] <lifeless> statik has said that us supporting IE6 isn't a good use of time
[05:25] <lifeless> and mrevell has said we won't do it - on the stakeholders list
[05:26] <lifeless> the final ack we're waiting on is in case someone comes back and says its part of getting X revenue to make it worth while
[05:26] <wgrant> Ahh, that's why I couldn't find the discussion.
[05:26] <wgrant> There it is, indeed.
[05:26] <lifeless> IE6 is now at most best effort
[05:27] <wgrant> "Thanks. Let me explain a little more clearly where we are. We no
[05:27] <wgrant> longer support IE6 and we won't make any effort to ensure a good
[05:27] <wgrant> experience in IE6."
[05:27] <wgrant> (from mrevell)
[05:28] <huwshimi> lifeless: Thanks (clearly I'm not on that list).
[05:29] <huwshimi> we need to at least communicate that to our users if we do go ahead
[05:29] <wgrant> huwshimi: We knowingly released dynamic bug listings when they're completely broken in all versions of IE.
[05:29] <huwshimi> wgrant: We did!?
[05:29] <huwshimi> Who knew?
[05:31] <wgrant> I'm pretty sure it was knowingly, but regardless it's clear that nobody tried them even though they were clearly using new JS features unlikely to be supported in IE.
[05:31] <lifeless> the team explicitly put in a check for IE short circuiting the code, because they hadn't tested it
[05:31] <wgrant> Hm?
[05:31] <wgrant> It's not short-circuited.
[05:31] <wgrant> It runs, and is broken.
[05:32] <lifeless> wgrant: there was a new if (...IE) thing you ripped out just this week
[05:32] <lifeless> anyhow, I have to run
[05:32] <wgrant> Nope.
[05:32] <wgrant> Those were all old.
[05:32] <lifeless> I have no objection to us announcing that we're not caring for IE6 anymore
[05:32] <wgrant> I only ripped out things that work in IE>=8.
[05:32] <lifeless> wgrant: ah, my misunderstanding
[05:32] <lifeless> OTOH I don't think we need to shout it from the rooftop that we don't support a given browser; most sites just track current releases and make no fanfare about changes
[05:33] <wgrant> Exactly.
[05:33] <wgrant> And our IE6 and IE7 support has been in a pretty severe state of disrepair since 3.0.
[05:33] <wgrant> Anybody using them significantly since then has probably torn their eyes out by now.
[05:33] <wgrant> So they wouldn't be able to read the notification anyway :)
[05:34] <wgrant> (functionality critical for OEM *worked*, and still does, but it's always been fugly)
[05:34] <huwshimi> Well the fact that we had (or have) stakeholders that we were maintaining support for means we need to be a little polite
[05:36] <wgrant> huwshimi: mrevell asked someone in PES if a polite notification was desired, and received no reply AFAICS.
[05:36] <wgrant> This was 6 weeks ago.
[05:36] <wgrant> Ah, you should be able to see the ML archive.
[05:37] <wgrant> https://lists.launchpad.net/private-canonical-launchpad-stakeholders/msg00658.html
[05:50] <StevenK> wgrant: I think I've broken calculate_bug_heat(), can I use 'in' in a plpy block?
[05:51] <wgrant> StevenK: In what context?
[05:51] <StevenK>     if bug['information_type'] in (3, 4):
[05:51] <StevenK>         heat['privacy'] = BugHeatConstants.PRIVACY
[05:52] <wgrant> That should work, but you actually want (3, 4, 5)
[05:52] <wgrant> And it's possible it's some magical type that doesn't work like that.
[05:52] <StevenK> It's getting pulled out by SELECT
[05:53] <StevenK> But I'm lost how to debug it
[05:53] <wgrant> Pastebin the whole function
[05:54] <StevenK> wgrant: http://pastebin.ubuntu.com/896042/
[05:56] <wgrant> StevenK: wut
[05:56] <wgrant> That's prehistoric
[05:56] <wgrant> You need to check patches too :)
[05:56] <wgrant> database/schema/patch-2209-07-1.sql
[05:57] <wgrant> It's a little bit simpler.
[05:58] <StevenK> A little?
[05:58] <StevenK> wgrant: How do I replace CASE private WHEN true -- CASE information_type IN (3, 4, 5) ?
[06:00] <wgrant> StevenK: For now I guess CASE information_type WHEN 1 THEN 0 WHEN 2 THEN 250 WHEN 3 THEN 400 ELSE 150 END
[06:00] <wgrant> That will match the current behaviour.
[06:01] <StevenK> WHEN 4 THEN 150
[06:01] <StevenK> Oh, ELSE
[06:01] <StevenK> Nevermind me
[06:04] <wgrant> To catch USERDATA and PROPRIETARY, yes.
[06:04] <wgrant> I think it makes sense.
[06:09] <StevenK> wgrant: Indeed. It even works.
[06:20] <StevenK> wallyworld: Are you still reviewing?
[06:31] <wallyworld> StevenK: when are you expecting your db patches to land?
[06:32] <wallyworld> StevenK: yes to your question, i didn;t see it
[06:34] <StevenK> wallyworld: https://code.launchpad.net/~stevenk/launchpad/bugs-remove-old-privacy/+merge/98974
[06:35] <wallyworld> StevenK: already looking
[06:35] <wallyworld> StevenK: 69	# Security bugs are always private when filed, but can be disclosed
[06:35] <wallyworld> i think that comment needs updating
[06:35] <StevenK> It
[06:35] <StevenK> Sigh
[06:35] <StevenK> It's current for the moment, it will change when the UI does.
[06:36] <wallyworld> hmm. i'd just s/private/embargoed
[06:36] <wallyworld> i think that's more accurate given the code change just below it
[06:37] <StevenK> wallyworld: -12-3 is in review, -11-4 is reviewed but not landed, but we have Monday and Tuesday for FDTs already so if -11-4 and -12-3 land on Tuesday, it gives us time.
[06:37] <StevenK> wallyworld: So I'd expect this branch in ec2 next Friday morning
[06:37] <wallyworld> too bad we can't do more than one patch per FDT
[06:37] <wallyworld> we have to wait a week to get your branch in ec2
[06:39] <StevenK> wallyworld: I need the patches in devel (otherwise a large amount of tests go bang), and that doesn't happen after it has been applied to prod.
[06:40] <StevenK> wallyworld: I'm tempted to just slam the DB patches I need into this branch and toss it at ec2 test on Tuesday just so I can fix all the other failures.
[06:41] <wgrant> The DB patch branches should be merged into that one; it depends on them.
[06:41] <wallyworld> StevenK: you could do that if you run ec2 test
[06:41] <wallyworld> StevenK: i don't understand the need for the conditional on line 95
[06:41] <wallyworld> 95	+ if params.information_type is InformationType.PUBLIC:
[06:41] <wallyworld> 96	+ params.information_type = InformationType.USERDATA
[06:42] <StevenK> wallyworld: We don't want to clobber EMBARGOEDSECURITY
[06:42] <StevenK> Which may be set higher up
[06:42] <wallyworld> ok, makes sense
[06:53] <wallyworld> StevenK: return "Bug.information_type IN (1, 2)", _nocache_bug_decorator
[06:53] <wallyworld> instead of 1 and 2, should we use InformationType.PUBLIC.value etc
[06:53] <StevenK> wallyworld: So, I think that method should be entirely rewritten because it's horrid
[06:54] <StevenK> wallyworld: So I did the smallest amount of work to get the method working
[06:54] <wallyworld> StevenK: ok. i think you could probably also change transitionToInformationType to not return a tuple
[06:54] <wallyworld> it would only be a few extra loc
[06:55] <StevenK> transitionToInformationType doesn't return a tuple :-)
[06:55] <wallyworld> sorry, setPrivacyAndSecurityRelated
[06:55] <wallyworld> since the tuple values would always be equal
[06:55] <StevenK> Right
[06:57] <wallyworld> StevenK: other than that, i think it looks ok. but as with most things lp, i'm sure there will be a few dark corners we have forgotten to look in
[06:58] <StevenK> Haha
[06:58] <StevenK> Yeah
[06:58] <wallyworld> let's hope the test coverage is adequate
[07:01] <StevenK> Yeah. :-(
[07:01] <wallyworld> StevenK: r=me but i had a thought. why don't you just delete setPrivacyAndSecurityRelated entirely?
[07:01] <StevenK> Because it's bloody exported!
[07:02] <wallyworld> but there's only a few places left in the code base so i would remove those at least
[07:02] <wallyworld> eg bugimport
[07:02] <wgrant> Isn't it new?
[07:02] <wgrant> Didn't we decide it could go away because it's not part of 1.0?
[07:02] <wallyworld> and yes, i think we did
[07:02] <StevenK> Hmmm.
[07:03] <StevenK> I could kill it ...
[07:03] <wallyworld> what's a few extra changes? it's already quite large :-)
[07:03] <wallyworld> go on, you know you want to
[07:04] <stub> StevenK: Your confident your code was based off the latest versions of those stored procedures? We unfortunately have versions scattered throughout the DB patches and we broke things once before by accidently using old code as a basis for a change.
[07:05] <StevenK> stub: I'm confident about calculate_bug_heat(). Would you mind checking for the other three?
[07:05] <stub> k. I'll have a trawl too.
[07:06] <stub> But that might end up after lunch :)
[07:07] <wgrant> I generally check \df+ just to be sure.
[07:07] <stub> yer
[07:08] <wgrant> Particularly since this touches bugsummary...
[07:09] <stub> Hmm... I suspect the best way of doing these changes is to use '\df+' to generate current functions into your db patch. commit. then edit, and we can generate a nice diff.
[07:11] <wgrant> BugSummary probably hasn't been touched since the last schema snapshot, so you can likely just pull them straight from launchpad-2209-00-0.sql
[07:11] <wgrant> But yeah.
[07:11] <wgrant> That might be a good way.
[07:12] <wgrant> Currently it's pretty horrible.
[07:13] <stub> Oh, if it hasn't been touched we don't have to worry about accidentally cargo culting old versions any more.
[07:15] <wgrant> Yeah
[07:15] <wgrant> I think before the last snapshot production had a different version than dev.
[07:15] <wgrant> Due to massive confusion around those emergency fixes.
[07:19] <StevenK> wallyworld: Dropping setPrivacyAndSecurityRelated means that branch deletes more code than it adds.
[08:04] <stub> StevenK: What are you using the bugsummary_viewers() function for? You might find a VIEW more suitable.
[08:20] <wallyworld> StevenK: that's good that we end up with a net code deletion :-)
[08:41] <adeuring> good morning
[09:41] <StevenK> stub: I have no idea at all -- it was using private, so I changed it.
[09:42] <stub> oh, thought that was something new you were adding :)
[09:45] <StevenK> stub: Nope, those are 4 triggers that should already being used and called on prod today -- I'm converting their use of bug.private and bug.security_related to bug.information_type
[09:46] <StevenK> stub: Thank you for the approval, I'll toss it at ec2 on Monday.
[10:00] <wgrant> wallyworld: Bug #962912 :(
[10:00] <_mup_> Bug #962912: StormRangeFactory evaluates DecoratedResultSet slices twice <disclosure> <performance> <Launchpad itself:Triaged> < https://launchpad.net/bugs/962912 >
[10:01] <wallyworld> wgrant: yes, i noted that in my mp
[10:01] <wallyworld> but didn;t raise a bug
[10:01] <wallyworld> because there's a reason for it
[10:02] <wallyworld> so we would need to find a work around
[10:06] <wgrant> wallyworld: I think it should be pretty easy. Will look at it next week
[10:07] <wgrant> wallyworld: Just needs to use a custom version of __iter__ on DRS that returns (base, decorator(base)) rather than just decorator(base)
[10:10] <wallyworld> yeah probs. my brain was too full to think about it this week
[10:10] <wallyworld> and we can fix the other issue too
[10:12] <wgrant> WHich other issue?
[10:12] <wgrant> I didn't actually read the text of your MP, just the diff.
[10:12]  * wgrant finds.
[10:13] <wgrant> Hm, don't see another issue.
[10:17] <wallyworld> wgrant: SQL tracing shows that the batching infrastructure executes the core batching query twice due to a decorated result set being used. This is unfortunate.
[10:17] <wallyworld> https://code.launchpad.net/~wallyworld/launchpad/sharing-view-batching4-957663/+merge/98820
[10:18] <wgrant> That was the first issue, I was looking for the second one that you mentioned.
[10:19] <wallyworld> wgrant: ah, that the range factory can't handle person_sort_key
[10:20] <wallyworld> bug 961836
[10:20] <_mup_> Bug #961836: StormRangeFactory should support functional sort keys <batching> <infrastructure> <Launchpad itself:Triaged> < https://launchpad.net/bugs/961836 >
[10:20] <wgrant> wallyworld: ah, right.
[10:20] <wgrant> wallyworld: That's a bit harder.
[10:20] <wallyworld> yeah
[10:20] <wgrant> But similar indeed.
[10:20] <wallyworld> maybe
[11:00] <rick_h> morning
[13:13] <deryck> Morning, all.
[13:17] <rick_h> party on
[13:47] <rick_h> deryck: https://code.launchpad.net/~rharding/launchpad/yuixhr_combo/+merge/99023
[14:30]  * deryck switches work locations
[14:35] <jcsackett> are we applying the new LoC maintenance costs experiment to all code, or just the LP tree? my understanding was the latter, but i'm curious.
[14:40] <macagua> hi guys
[14:41] <rick_h> jcsackett: hmm, that conversation came up last night. /me checks how that went
[15:02] <adeuring> abentley: r=me for the latr.jobrunner mp
[15:03] <abentley> adeuring: Cool.  Thanks.
[15:06] <abentley> adeuring: Merged and pushed.
[15:07] <adeuring> abentley: cool. but I can't yet see your other MP -- LP is terribly slow for me at the moment...
[15:07] <abentley> adeuring: I haven't made a proposal because I'm still trying to sort out this configuration issue.
[15:08] <adeuring> abentley: ah, ok
[15:12] <abentley> adeuring: So with my branch merged, we have my job.fail fix landed without a test.
[15:12] <adeuring> abentley: I know but that does not mean that can't test it ;)
[15:15] <jcsackett> rick_h: ctrlp is pretty hot. :-P
[15:15] <rick_h> jcsackett: yea, I'm liking it. Not used to starting in the lib directory, but with multiple tmux sessions going I'm getting over it slowly
[15:16] <jcsackett> rick_h: i didn't need to start in lib; just added the non-code dirs to the custom filter list.
[15:16] <rick_h> bac: can I get this on your list please? https://code.launchpad.net/~rharding/launchpad/yuixhr_combo/+merge/99023
[15:16] <jcsackett> were you having problems with that working, or did you not want that globally set?
[15:16] <rick_h> jcsackett: yea, but since I do other projects I didn't want to drop some other dirs
[15:16] <jcsackett> rick_h: dig.
[15:16] <bac> rick_h: sure
[15:16] <rick_h> lib, build, I use on other code projects
[15:17] <rick_h> jcsackett: but yea, starting in lib seems like a winner, just have to switch to another tmux window to fire off make/test commands and such
[15:17] <jcsackett> yeah; it can run a custom filter command..you could probably rig up something nice with sourcing a command from a .ctrlpignore file.
[15:17]  * jcsackett makes note to do that at some point.
[15:17] <rick_h> ah, true. or even just a shortcut to set lpmode or something
[15:18] <rick_h> I do get when it keeps reloading the cache more often than I'd expect, but not nailed down why yet
[15:19] <rick_h> ssd ftw on that I guess, pretty fast
[15:19]  * jcsackett nods
[15:20] <rick_h> next up I need to get syntastic running vs my pyflakes plugin, maybe this weekend
[15:36] <jcsackett> "vim: the neverending plugin and configuration rabbit hole" :-P
[15:50]  * deryck is afk at accountant
[18:04] <bac> rick_h: done.  sorry for the sashimi-induced delay.
[18:04] <rick_h> bac: no problems, thanks for the peek
[18:08] <rick_h> bac: thanks for the comment catch
[18:13] <czajkowski> <---------- EOD nn
[18:13] <rick_h> have fun czajkowski
[18:39] <mhall119> does anybody know if there's a Django app that mirrors Launchpad objects?
[18:39] <mhall119> Project/Team/Branch, etc
[18:54] <sinzui> bac: do you have time to review https://code.launchpad.net/~sinzui/launchpad/project-notify-4/+merge/99094
[19:00] <bac> sinzui: yes
[19:00] <bac> sinzui: that branch has conflicts, though.  would you resolve them first?
[19:03] <sinzui> okay
[19:06] <sinzui> bac: I pushed the resolution of the import conflicts
[19:35] <abentley> deryck: I am especially free to chat now, as I've just put my branch up for review.
[19:40] <deryck> abentley, I'm not further along enough to articulate ideas yet. unfortunately, distracted by other work.
[19:40] <abentley> deryck: cool.
[19:41] <deryck> abentley, I'll try to knuckle down the rest of the day on it, and then let's chat first thing Monday.
[19:42] <bac> sinzui: done.  neat branch and idea.  it's going to be awesome.
[19:42] <deryck> abentley, if that's cool with you.
[19:42] <abentley> deryck: sure thing.
[19:42] <deryck> abentley, thanks, man!
[19:42] <abentley> deryck: np.
[19:42] <sinzui> bac, thanks for the encouragement. That branch was very hard. Reading all the other ways lp.registry sends emails really depressed me
[19:43] <bac> no doubt
[19:49] <sinzui> bac assertTrue(1) passes, but it is not a boolean. I used assertIs to avoid coercion.
[19:50] <bac> sinzui: oh, gotcha.
[21:20] <sinzui> bac do you have a few minutes to look at this small branch: https://code.launchpad.net/~sinzui/launchpad/front-page-layout/+merge/99121
[21:20] <sinzui> it has a picture too
[21:23] <bac> sinzui: i don't.
[21:23] <sinzui> okay. thanks bac
[22:20] <wgrant> Yay
[22:20] <wgrant> /ubuntu/+sharing down to 1.2s
[22:21] <wgrant> And /launchpad/+sharing is faster enough that the AJAX batchnav feels very nice.
[22:29] <lifeless> nice
[22:45] <jelmer> 'evening launchpadders
[22:48] <wgrant> Morning jelmer.
[22:57]  * jelmer is liking the new +sharing pages
[22:57] <jelmer> I guess it's intentional that they're read-only at the moment?
[23:44] <wallyworld_> wgrant: ubuntu/+sharing seems to work well
[23:46] <wgrant> wallyworld_: Indeed, 1.2s even with the dupe query
[23:46] <wgrant> And launchpad/+sharing is about 600ms, 113ms SQL
[23:47] <wgrant> But the AJAX batchnav feels pretty nice, even with 350ms of latency.
[23:47] <wallyworld_> wgrant: i think the supe query does not load person objects, so it may not be too bad
[23:47] <wgrant> wallyworld_: 25% of the page time is in load_objects
[23:47] <wallyworld_> yes, i think it's quite usable
[23:47] <wallyworld_> 25% but i don't think that's due to the 2nd query being done
[23:47] <wgrant> Ubuntu should feel nice too once we remove the dupe query.
[23:47] <wgrant> Indeed.
[23:48] <wgrant> There's only about 110 load_object calls
[23:48] <wgrant> Hm
[23:48] <wgrant> Actually, that could be, then.
[23:48] <wgrant> But we'll see.
[23:48] <wallyworld_> so i haven't looked so i'm not sure how much time the dupe query takes
[23:48] <wgrant> /launchpad/+sharing's queries are like 15ms
[23:48] <wgrant> It's awesome.
[23:48] <wgrant> In other news, lifeless makes EnumCols slow :(
[23:48] <wallyworld_> how?
[23:49] <wallyworld_> i like the service stuff because it's easy to tweak things
[23:49] <wgrant> Indeed.
[23:49] <wgrant> Well, about 5% of the total page time is creating and loading EnumCols.
[23:49] <wgrant> I get a 50% speedup on that by reverting EnumCols to take a single DBEnum rather than multiple.
[23:50] <wallyworld_> we could change that - just fetch the ids
[23:50] <wgrant> Support for multiple enums in a single col was added for the bug search incomplete thing.
[23:50] <wgrant> Nah, we should fix this properly.
[23:50] <wgrant> Will be a universal speedup.
[23:50] <wallyworld_> ok, i'm not across the root cause really. need to grok what's happening
[23:51] <wallyworld_> wgrant: i also fixed the register merge thing - we had no support at all for XHR form error handling
[23:51] <wgrant> Heh
[23:51] <wgrant> Yeah, glanced at that vaguely.
[23:51] <wgrant> Do you really need to use setContent?
[23:51] <wallyworld_> it looks and works nice now
[23:51] <wgrant> That's basically innerHTML
[23:51] <wallyworld_> i could use set('text', xxx)
[23:52] <wallyworld_> i'll change that
[23:52] <wgrant> I know in some circumstances we assume that we can spit HTML out.
[23:52] <wgrant> eg. if you try to register a spec with a dupe URL
[23:52] <wgrant> But I'm not sure at what level the escaping is normally done.
[23:52] <wgrant> Hmm
[23:52] <wgrant> So, profiling shows that the total SQL execution time for /launchpad/+sharing is 55ms.
[23:52] <wgrant> So 90% of the time is Python :)
[23:53] <wallyworld_> cool, good that the db is not the bottleneck
[23:57] <wgrant> For Ubuntu it is, but everything else should be Python.