[00:35] <LPCIBot> Project windmill build #122: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill/122/
[00:43] <lifeless> wgrant: you've been nominated to coordinate killing poppy, if thats ok with you and sinzui
[01:02] <wgrant> lifeless: Killing poppy? You mean moving to poppy-sftp before the rollout?
[01:02] <wgrant> Or do you mean renaming poppy-sftp to something sensible, which I would also gladly do?
[01:15] <lifeless> wgrant: moving to the new service before the db deploy
[01:16] <lifeless> partial scheduled downtime; I've mailed mrevell for a slot on monday
[01:18] <wgrant> lifeless: Yeah, saw that. I'll chat with mrevell tonight.
[01:18] <wgrant> Thanks.
[01:21] <lifeless> wgrant: cool, and *thank you*
[01:34] <lifeless> wgrant: I don't understand why https://bugs.launchpad.net/launchpad/+bug/745799 shows librarian access
[01:34] <_mup_> Bug #745799: DistroSeries:+queue Timeout accepting packages <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/745799 >
[01:35] <wgrant> lifeless: It grabs the changes file to send emails.
[01:35] <wgrant> It's on a POST, right?
[01:35] <lifeless> yes
[01:36]  * wgrant looks at the OOPS.
[01:37] <lifeless> we should probably store that stuff in -db [massively more resourced] and clear it on completion
[01:37] <wgrant> Possibly, although DDs will change where this is required.
[01:37] <wgrant> Hmm.
[01:37]  * wgrant stabs SPFP.
[01:38] <lifeless> StevenK: Revision 12696
[01:38] <wgrant> I'm not even sure why it's using SPFP... except maybe for conflict checks.
[01:38] <wgrant> We really need to merge the copier and uploader and queue conflict check mechanisms.
[01:38] <wgrant> Erm.
[01:39] <wgrant> Why are the PackageDiff queries so slow?
[01:39] <wgrant> Could you EA them?
[01:39] <lifeless> sure
[01:39] <lifeless> just qaing stuff first
[01:39] <wgrant> Thanks.
[01:39] <lifeless> so we cna fix person:+branches
[01:39] <wgrant> Great!
[01:40] <lifeless> wgrant: thoughts on https://bugs.launchpad.net/launchpad/+bug/740640 ?
[01:40] <lifeless> qa wise
[01:41] <wgrant> lifeless: Deploy it. The non-AJAX stuff looks safe, the AJAX stuff is bad but needs user interaction behind a flag.
[01:42] <wgrant> (and it's already broken on prod)
[01:42] <lifeless> wgrant: you've looked at subscriptions - -12704
[01:42] <lifeless> bah
[01:42] <lifeless> 12703
[01:43] <wgrant> I'm even in the relevant team on qas now.
[01:43] <wgrant> CHecking.
[01:45] <wgrant> huwshimi: Ah! The privacy overlay!
[01:45] <lifeless> anyone know the time dimension in staging restore logs ?
[01:45] <lifeless> 725,778
[01:45] <lifeless> e.g. is that milliseconds, seconds, minutes?
[01:46] <wgrant> I presume ms... aren't there timestamps around it?
[01:46] <huwshimi> wgrant: Indeed
[01:47] <wgrant> huwshimi: Not quite pretty yet, but looks like a good start.
[01:47] <lifeless> looks like redoing trusted.sql was /way/ more time than the heat migration
[01:47] <wgrant> Hm, that's really unlikely.
[01:48] <lifeless> wgrant: and yet...
[01:49] <wgrant> So I think you're reading it wrong :)
[01:50] <wgrant> lifeless: We are QAd.
[01:50] <wgrant> Hm.
[01:50] <wgrant> Except that we are bad.
[01:51] <wgrant> r12697 still has the sprites breakage, right?
[01:51] <wgrant> huwshimi: ^^
[01:52] <lifeless> anyhow
[01:52] <lifeless> 2011-03-31 00:44:24 INFO    2208-59-0 applied just now in 495.6 seconds
[01:52] <lifeless> so, fine.
[01:52] <wgrant> Yeah.
[01:53] <wgrant> Not good, but fine.
[01:53] <huwshimi> wgrant: That's right
[01:53] <wgrant> huwshimi: I'll tag it.
[01:53] <wgrant> Let's deploy 12696.
[01:53] <wgrant> Unless the fix is coming RSN.
[01:54] <wgrant> Hmm, will be on qas in three hours.
[01:55] <wgrant> TYhere's only one interesting performance fix between 12696 and the fix, so I think we might as well deploy now.
[02:01] <lifeless> +1
[02:01] <wgrant> Requesting.
[02:01] <lifeless> want to queue it? I'll get onto those explains
[02:02] <lifeless> thanks!
[02:02] <wgrant> Thanks. I don't see why they should be so slow.
[02:02]  * lifeless hopes he got the tone right in his last email
[02:03] <lifeless> does that include ajax times?
[02:04] <lifeless> wgrant: you're talking about the 5x574ms queries ?
[02:04] <wgrant> No.
[02:04] <wgrant> lifeless: Yes, those queries.
[02:04] <wgrant> AJAX log is 12699
[02:07] <lifeless> wgrant: its one slow one
[02:07] <lifeless> query 569
[02:09] <lifeless> the data isn't on qas yet, will see about prod
[02:09] <wgrant> Thanks.
[02:12] <lifeless> oopses are looking good - product:+code-index is only a soft timeout now
[02:12] <wgrant> Excellent.
[02:12] <lifeless> and > 300 are +branches/+registeredbranhces
[02:12] <wgrant> Your fix unbreaks Person:+registeredbranches too, right?
[02:12] <lifeless> it should
[02:12] <wgrant> Heh
[02:15] <lifeless> I didn't explicitly test
[02:15] <lifeless> but to have a different cause would be excitingly coincidental
[02:15]  * wgrant growls at qa-tagger.
[02:16] <wgrant> Don't add more items for me to the db-stable report 30s after I look at it.
[02:17] <huwshimi> wgrant: Sorry I had a bit of a brain failure when I tagged that as qa-ok, I was forgetting about the sprites thing.
[02:18] <wgrant> huwshimi: It happens. I always check the bugs manually before deploying.
[02:18] <huwshimi> wgrant: Yeah thanks.
[02:23] <lifeless> wgrant: you're doing 721591 ?
[02:24] <wgrant> lifeless: Yes, just waiting for mawson to catch up.
[02:24] <wgrant> Publishing is slow.
[02:24] <lifeless> no worries
[02:24] <lifeless> just seeing if the bugmessage.visibilty move regressed bugtask performance
[02:25] <lifeless> OOPS-1916QS19 suggests it may have
[02:25] <StevenK> wgrant: Ah ha, that explains why mawson's code was up-to-date when I updated it. Let me know when you're done and I'll play with it.
[02:25] <wgrant> lifeless: It could have, but it should be fixable.
[02:26] <lifeless> ah, hitting reload enough worked
[02:26] <lifeless> so if it has regressed its tolerable
[02:27] <lifeless> wow
[02:27] <lifeless> 8 ajax requests for bugtask:+index
[02:28] <lifeless> huwshimi: another tweak - show the count in the collapsed log
[02:28] <lifeless> Ajax Requests (8 in 12s)
[02:29] <lifeless> (just enumerate & sum)
[02:35] <wgrant> StevenK: All yours.
[02:36] <huwshimi> lifeless: Sure.
[02:36] <lifeless> gnar, new bugtask heat indices don't want to be used
[02:41] <StevenK> wgrant: Thanks, I'll be evil after lunch.
[02:42] <poolie> hi all
[02:42] <wgrant> StevenK: What DSD malice are you up to?
[02:42] <StevenK> wgrant: The job runner.
[02:43] <wgrant> Aha.
[02:44] <poolie> lifeless, i like your downtime page
[02:44] <lifeless> poolie: thanks!
[02:45] <poolie> re bug 746486, couldn't you just remember a mapping from transaction-id to url?
[02:45] <poolie> huwshimi, ^
[02:47] <huwshimi> poolie: But how do we create that mapping?
[02:48] <wgrant> I found a YUI bug report asking for this sort of thing.
[02:48] <wgrant> There's no way to do it at the moment :/
[02:48] <wgrant> Unless we patch Y.io, I guess.
[02:50] <poolie> wow
[02:52] <wgrant> Yes :/
[02:52] <wgrant> It's a bit crap.
[02:52] <poolie> it's not possible to dig the transaction out of the yui internals?
[02:53] <poolie> i believe you, i'm just surprised
[02:56] <poolie> lifeless, what did you mean by "blueprints linked bugs" has "inline editing of lists of bugs"
[02:56] <poolie> when i look at a blueprint page with linked bugs it does not seem to have any inline edit controls
[03:18] <wgrant> thumper: You've hacked lazr.restful a bit, haven't you?
[03:18] <thumper> kinda
[03:19] <wgrant> I need to change the JSON encoder that it uses. Do you have hints for using a non-released version in a dev LP instance, or should I just create a test egg?
[03:20] <thumper> well... I don't personally have a preference
[03:20] <thumper> to test you can easily just create a test egg
[03:20] <thumper> and not add it to the branch
[03:21] <wgrant> Sure.
[03:40] <thumper> if I have a resultset designed to bring branch Branch objects
[03:40] <thumper> how can I change the resultset to just give me the Branch.id column?
[03:42] <wgrant> thumper: Look at .values
[03:42] <wgrant> resultset.values(Branch.id)
[03:42] <thumper> wgrant: cool, ta
[03:43] <wgrant> wallyworld: You can't do the escaping inside update_field?
[03:43] <thumper> wgrant: I mentioned that in one of my review replies
[03:44] <wgrant> It was my initial suggestion, and I still think it's the right place to do it.
[03:44] <wgrant> The latest version is less bad, but it's still the wrong layer.
[03:44] <wallyworld> wgrant: sorry, i misunderstood. i'll rework it
[03:45] <wgrant> wallyworld: Thanks. While your previous versions will work, I want it to be hard to misuse, or people are going to misuse it.
[03:45] <wallyworld> wgrant: are we sure update_field is used universally and will capture all cases?
[03:45] <wgrant> wallyworld: No.
[03:45] <wgrant> But it should be.
[03:45] <thumper> I know it isn't used universally yet
[03:46] <thumper> it is still a recent (ish) change
[03:46] <wgrant> thumper added the event recently, though...
[03:46] <wgrant> So update_field may be the only consumer of that event.
[03:46] <thumper> I think it is
[03:46] <thumper> we may however need to tweak it
[03:46] <wgrant> I want these abstractions to be neat, so people don't have to care about escaping.
[03:47] <wgrant> They can just do the simple thing, and it will do the right thing for them.
[03:47] <wallyworld> wgrant: agreed :-)
[03:47] <thumper> as I think there are places where it expects a plain string
[03:47] <thumper> and other places where it expects real HTML
[03:47] <thumper> we may want two methods
[03:47] <wallyworld> thumper: that's my worry too
[03:47] <wgrant> thumper: Hm? Are there are more than two cases?
[03:47] <thumper> two methods is fine
[03:47] <thumper> wgrant: yes
[03:47] <wgrant> 1) Given HTML. Needs not to be escaped.
[03:47] <thumper> titles
[03:48] <wgrant> 2) Given non-HTML. Always safely escapable, sometimes needs to be escaped.
[03:48] <thumper> assignees which is a link to a person
[03:48] <thumper> wgrant: the question becomes how to determine the HTMLness of the param
[03:48] <thumper> I suppose we could have the new_value_html be a Node
[03:48] <thumper> and check that
[03:49] <wgrant> thumper: Exactly.
[03:49] <thumper> then there is still one method
[03:49] <thumper> wallyworld: make it so
[03:49] <wgrant> My suggestion is to parse all HTML values into Nodes before giving them
[03:49] <wgrant> to the callbacks. This lets update_field distinguish between safe and
[03:49] <wgrant> unsafe values.
[03:49] <thumper> that makes a certain amount of sense
[03:49] <wgrant> This is similar to what I am doing to our templates at the moment.
[03:50]  * wallyworld switches branches again
[03:56] <wgrant> Unity, you were doing so well. You had not crashed for three days.
[04:06] <StevenK> Hah
[04:15] <huwshimi> A simple review for someone: https://code.launchpad.net/~huwshimi/launchpad/browse-links-746104/+merge/55667
[04:15] <huwshimi> thumper? wgrant? ^
[04:16]  * wgrant looks.
[04:16] <wgrant> Difficult.
[04:17] <wgrant> StevenK: Want a very difficult mentor review?
[04:18] <StevenK> wgrant: No? :-)
[04:18] <thumper> done
[04:19] <wgrant> Thanks thumper.
[04:19] <StevenK> 2011-03-31 03:19:20 INFO    Ran 48 DistroSeriesDifferenceJob jobs.
[04:19] <StevenK> 2011-03-31 03:19:20 DEBUG   Removing lock file: /var/lock/launchpad-rundistroseriesdifferencejob.lock
[04:19] <StevenK> \o/
[04:20] <wgrant> But did they work?
[04:20] <lifeless> do we have a bug for the loggerhead test fail ?
[04:20] <wgrant> There is a loggerhead bug. Not sure about a launchpad one.
[04:20] <lifeless> ah 745738
[04:30] <StevenK> wgrant: That's the next question.
[04:30] <StevenK> But first, tea.
[04:38]  * StevenK tries to work out how to disable the annoying update-motd stuff
[04:40] <LPCIBot> Project windmill build #123: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill/123/
[04:49] <lifeless> ok, buildbot should succeed *next run*
[04:50]  * StevenK finds another DSD bug
[04:51] <StevenK> This is just a wart, nothing bad
[05:14] <StevenK> wgrant: I'm having trouble finding the code that lists the differences for DSDs, can I have a quick hand?
[05:14] <StevenK> wgrant: I'd like to hide the child difference line if dsd.base_version == dsd.source_version
[05:15] <wgrant> StevenK: You want to hide the child diff, you mean?
[05:15] <StevenK>         * 3.6.2.0-3 to Maverick version: 3.6.2.0-3
[05:15] <StevenK>         * 3.6.2.0-3 to Sid version: 3.6.3.0-2
[05:15] <StevenK> I'd like to not display the first line, since they're the same and the diff will be empty
[05:22] <wgrant> StevenK: Grep around in lib/lp/registry/templates, I guess.
[05:22] <wgrant> I think Unity just survived me pressing Ctrl+Alt!
[05:22] <wgrant> Yes, I can press Ctrl+Alt reliably now.
[05:22] <wgrant> This is a good start.
[05:23] <wgrant> Ah no, broken again.
[05:27] <StevenK> wgrant: I can't see anything obvious in lib/lp/registry/templates/distroseries-localdifferences.pt
[05:29] <wgrant> StevenK: distroseriesdifference-listing-extra.pt
[05:31] <StevenK> wgrant: Ah ha! Thanks.
[05:34] <wgrant> thumper: Still around?
[05:37] <wgrant> thumper: Do you recall why we wanted hybrid JSON/XHTML representations in the client cache? We can restore them now, if we want.
[05:39] <poolie> huwshimi, while you're doing css-easy bugs, it would be nice if the textareas for entering bug and mp comments used the same monospace font as the comments are finally shown in
[05:39] <poolie> i think there's a bug for this
[05:39] <huwshimi> poolie: I think I've seen that bug
[05:39] <poolie> just if you're running low :)
[05:40] <wgrant> In https://code.launchpad.net/~wgrant/lazr.restful/bug-684430 I've changed lazr.restful to give XML-escape-safe JSON in most cases. But this will somewhat bloat XHTML representations that are delivered inside application/json... do we care?
[05:40] <wgrant> (<, >, & get translated to \uXXXX)
[05:41] <huwshimi> poolie: Are you thinking of this bug: 713366?
[05:41] <wgrant> If we care, then I can shuffle things so it only affects the TALES function, but that seems overcomplicated.
[05:41] <poolie> wgrant i doubt that would ever impact performance
[05:41] <poolie> compared to all the round trips
[05:41] <wgrant> poolie: Right.
[05:41] <poolie> is there any chance any client libraries will fail to understand it?
[05:41] <wgrant> No.
[05:42] <wgrant> Even cjson understands this, and cjson is pretty bad at complying with the spec :)
[05:42] <poolie> i can't think of any other consequences then; can you?
[05:42] <wgrant> The only negative consequences are ugliness and slight bloat.
[05:42] <wgrant> It's still perfectly correct.
[05:42] <poolie> mm
[05:43] <poolie> it's not really optimized for human reading now
[05:43] <wgrant> Indeed.
[05:44] <poolie> so a weak approval from me
[05:44] <wgrant> (ugliness also in terms of escaping where we don't need to. but it's not like HTML escaping, because the strings are exactly equivalent once the JSON is parsed)
[05:44] <poolie> or rather enthusiastic but non-authoritative
[05:44] <wgrant> Heh
[05:44] <wgrant> Thanks.
[05:56] <wgrant> https://code.launchpad.net/~wgrant/lazr.restful/bug-684430/+merge/55678
[05:57] <LPCIBot> Project db-devel build #507: FAILURE in 5 hr 21 min: https://lpci.wedontsleep.org/job/db-devel/507/
[05:57] <wallyworld> wgrant: i think my xss fix may be ok now?
[05:59] <wgrant> wallyworld: Let's see.
[06:00] <wgrant> wallyworld: You use get('innerHTML'), but can't you just set the Node as the content directly? I don't really know YUI, but from my experimentation that seems like it should be possible.
[06:00] <wgrant> Indeed, you already do that in multicheckbox.js
[06:01] <wallyworld> wgrant: which line nr?
[06:01] <wgrant> lp.ui.js, 81 in the diff.
[06:02] <wgrant> In picker.js you've lost a containing <span>. That doesn't matter at all?
[06:02] <wallyworld> wgrant: yes, i missed that one. as you say i changed in elsewhere. i'll fix
[06:02] <wgrant> Thanks. This looks really good.
[06:03] <wallyworld> wgrant: also, your lazr restful mp - you need to update news.txt and other stuff. i've already got a mp almost ready to land. i can merge in your stuff once approved and it can be done in one go if you like
[06:04] <wgrant> wallyworld: I've already added a NEWS.txt entry. But yes, we should probably release both as 0.18.1.
[06:04] <wgrant> What's your change?
[06:04] <wallyworld> wgrant: https://code.edge.launchpad.net/~wallyworld/lazr.restful/propogate-notifications/+merge/54690
[06:04] <wgrant> Ah, right.
[06:05] <wgrant> that one scares me :)
[06:05] <wallyworld> why? :-)
[06:05] <wgrant> Very handy, but scary.
[06:05] <wallyworld> it replicates what we already do
[06:05] <wallyworld> for page loads
[06:05] <wallyworld> but also now via xhr calls
[06:05] <wgrant> Yeah, but it's really racy.
[06:06] <wgrant> I am very wary of adding 10x the opportunities for races.
[06:06] <wallyworld> i can see what you mean, but given how we use ajax atm, it should be ok
[06:06] <wgrant> I would prefer it if the lazr.restful operations would use a separate notification system that didn't use the session, just returning them within the request.
[06:06] <wgrant> s/system/provider/
[06:07] <wgrant> eg. if you comment on a bug then quickly load another one, the notification comes up on the wrong page.
[06:07] <wgrant> This is going to make that a whole lot worse.
[06:08] <wgrant> However, I guess that fix is on the LP side, not in lazr.restful.
[06:08] <wgrant> So this change is probably OK to land. Do you have the LP changes yet?
[06:09] <wallyworld> wgrant: yes - currently being reviewed. i have a pipe. 1st one for the core infrastructure changes, next one for the actual end functionality
[06:10] <wallyworld> wgrant: https://code.edge.launchpad.net/~wallyworld/launchpad/show-ajax-notifications/+merge/54342
[06:11] <lifeless> stub: so I'm thinking a -1 and -2 patch *in case* qa is stalled and my updating indices patch doesn't get through in time for the deploy
[06:11] <wallyworld> wgrant: re your earlier comment. the notifications are returned with the response to a given request
[06:12] <lifeless> stub: that way we /can/ do it live if we need to
[06:12] <stub> lifeless: sure.
[06:12] <wgrant> wallyworld: I'm not sure how well that's going to interact with my markupsafe changes, but I guess I'll see when I get to that.
[06:12] <lifeless> (-1 to drop the index that is superceded, -2 to add the two new ones). We may need to change the other indices, but I'd like to wait for performance data before doing that.
[06:12] <lifeless> stub: ok, I'll prep
[06:12] <wgrant> wallyworld: But the normal LP notification infrastructure uses the session, so they can leak cross-request if timing is bad.
[06:13] <wgrant> wallyworld: We may later need to fix this for API requests, but it seems well layered so that should be easy.
[06:14] <wallyworld> wgrant: atm, i'm not changing the backend implementation wrt content/escaping or mechanics of generating notifications. i'm just providing the transport so that xhr calls can get notifications pushed through
[06:15] <wgrant> wallyworld: In the bit around line 32 of the blueprint-title-fix diff, any reason you're escaping and setContent instead of using default_value.set('text', default_value)?
[06:16] <wgrant> Um, obviously without using the same variable name twice.
[06:16] <wallyworld> wgrant: cause i didn't know about set('text', ...). my js/yui foo is improving but i'm not an expert clearly :-)
[06:16] <wallyworld> wgrant: so does set('text'...) escape correctly etc?
[06:16] <wgrant> wallyworld: Yeah, me neither... I know a bit of jQuery, but my only real YUI experience is this week.
[06:17] <wgrant> wallyworld: It doesn't need to escape, since it is using the DOM.
[06:17] <wgrant> But effectively, yes.
[06:17] <wallyworld> wgrant: ok, so under the covers it will render correctly i guess i what i'm asking. i'll change it and retest
[06:17] <wgrant> lifeless: Thanks.
[06:18] <wgrant> wallyworld: I'm going to try to break it locally, since I don't quite understand what a couple of the bits do.
[06:18] <wgrant> I need to learn more about our JS :/
[06:18] <wallyworld> wgrant: break away :-)
[06:21] <wgrant> wallyworld: Does the new object from the event get stored somewhere that I can get to in the console?
[06:22] <thumper> wgrant: ask me again tomorrow when I'll have time to give you a full answer
[06:22] <wallyworld> wgrant: you mean the new_value key of the dict?
[06:22] <wgrant> wallyworld: I ideally want to see the whole object, I guess.
[06:22] <wgrant> Hmm, something's still wrong.
[06:23] <wallyworld> wgrant: you may need to set a breakpoint as it's just passed around and not stored anywhere
[06:23] <wgrant> wallyworld: If you load a blueprint, change the title to have '<boo>' in it, refresh the page, then change another field (eg. Approver), the breadcrumb flashes green on the first change.
[06:23] <wgrant> So we're still doing something slightly wrong.
[06:23] <lifeless> ugh
[06:24] <lifeless> why does launchpad forget I merge into db-devel every day now ?
[06:24] <wgrant> lifeless: Oh, so it's not just me.
[06:24] <wallyworld> wgrant: you mean the first change after refreshing the page?
[06:24] <wgrant> wallyworld: The first change after refreshing the page makes the breadcrumb flash, yes.
[06:24] <wgrant> wallyworld: So the cache value is wrong, somehow.
[06:24] <lifeless> stub: can has tick? https://code.launchpad.net/~lifeless/launchpad/bug-618406/+merge/55680
[06:24] <wgrant> Or the new value is just different, despite being the same.
[06:25] <wallyworld> wgrant: could be the stupid <p> wrappers
[06:25] <wallyworld> i'll have a look
[06:25] <wgrant> wallyworld: Yeah, I'm guessing so.
[06:25] <wgrant> Thanks.
[06:25] <wgrant> wallyworld: It's possibly related to the fact that there is no HTML cache to compare against.
[06:25] <wgrant> This can be fixed now, though, since we are escaping JSON properly.
[06:25] <wallyworld> wgrant: well, the html is just presentation. it's the underlying values which are compared
[06:26] <wgrant> wallyworld: Ah, OK.
[06:26] <wallyworld> so the <p> comment i made is likely wrong
[06:27] <wallyworld> wgrant: for example, an assignee attribute may be fred but the html property will be <a> href=...~fred...</a> etc
[06:27] <stub> lifeless: tick
[06:27] <wgrant> wallyworld: Right, but I wasn't sure if it compared the HTML values too.
[06:28] <wallyworld> wgrant: no, it doesn't
[06:29] <wgrant> stub: Ah, thanks, forgot to reply to that email, but you said what I wanted to :)
[06:31] <stub> I hereby apologise for INotificationRequest. My only excuse is I didn't know better, many years ago when I wrote it :)
[06:31] <lifeless> stub: hahaha
[06:31] <lifeless> stub: do you mean about the session aspect, or some other aspect ?
[06:32] <stub> re: session, it was written correctly first off with state being passed in the URL. But that was deemed too ugly so I had to break it.
[06:32] <lifeless> thats right
[06:32] <stub> I'm talking about notifications being HTML strings
[06:32] <lifeless> ah!
[06:32] <stub> Think Curtis fixed that
[06:33] <lifeless> righto, that makes more sense (I distinctly remembered discussing the session aspect with you at the time)
[06:33] <lifeless> I have an idea for fixing the urls.
[06:33] <wgrant> stub: I'm hopefully getting to fixing that stuff tomorrow.
[06:33] <lifeless> if we :
[06:33] <lifeless>  - put notifications in their own place (perhaps in the session db still)
[06:33] <stub> IIRC, the fundamental problem is it is impossible to differentiate one browser window from another reliably.
[06:33] <lifeless>  - with an association to a user (as only logged in folk can trigger notifications)
[06:34] <wgrant> stub: Yes :/
[06:34] <wgrant> The easiest way to fix this is probably to just continue AJAXifying everything.
[06:34] <lifeless> then we could use a very short short (primary key in the table) reference to select the notification to show
[06:37] <poolie> lifeless, hi
[06:37] <poolie> can you give me a url showing inline bug list editing?
[06:37] <lifeless> poolie: hi, sorry, edistracted
[06:38] <poolie> np
[06:38] <lifeless> there are some in 727023
[06:38] <poolie> i just had no idea that was actually implemented so i was curious to see it
[06:38] <lifeless> the blueprint thing I'm going off an escalated bug
[06:38] <lifeless> which I think was fixed
[06:38] <lifeless> that you couldn't change the status of linked bugtasks on a blueprint
[06:39] <lifeless> I may be misremembering
[06:39] <stub> lifeless: I suspect the existing mechanism is good enough rather than polluting the URLs with a query parameter. Cure seems worse than the problem (which is rare to trigger (?), and harmless).
[06:39] <lifeless> anyhow, I'm basically massively skeptical of any per-bug rules until we have /any/ bug stuff working really well
[06:39] <poolie> separately, i just got a timeout again  OOPS-1916L440 on my code homepage
[06:39] <lifeless> stub: its certainly low priority
[06:39] <poolie> is that a regression of bug 745310
[06:40] <_mup_> Bug #745310: Person:+branches timeout <qa-ok> <regression> <timeout> <Launchpad itself:Fix Released by lifeless> < https://launchpad.net/bugs/745310 >
[06:40] <poolie> (if known, np)
[06:40] <lifeless> stub: I can reproduce it really easily; I have  ascreen shot around somewhere with 8 or so notifications on one page
[06:40] <lifeless> poolie: I'll look at the OOPS. my WAG is that the page was poor before the regression, and thus is just timing out naturally because ithasn't been optimised (just restored to its prior behaviour)
[06:41] <stub> yer, but you have to try hard. People are less likely to be submitting 8 tabs simultaneously now that Launchpad performance sucks so much less.
[06:41] <poolie> i wonder
[06:41] <wgrant> stub: And we do lots of stuff by AJAX now, which can do notifications without the session evil.
[06:43] <stub> wgrant: If you pull in the notifications asynchronously, you still have to somehow identify *this* window's set of notifications vs. *that* window's set of notifications.
[06:43] <wallyworld> wgrant: the issue was that when a page first loads, the cache contains the escaped value, but then the update_cahced_object() function stuffs the unescaped new value into the cache. this is how it always has been so i'll fix it
[06:44] <wgrant> Oh.
[06:44] <wgrant> wallyworld: My lazr.restful branch fixes that.
[06:44] <wgrant> wallyworld: The cache now contains the unescaped value.
[06:44] <wgrant> How did I not think of that :/
[06:44] <wgrant> Let's see if it works now.
[06:44] <wallyworld> wgrant: ok, then i won't change it on my side
[06:46] <wgrant> wallyworld: Yeah, new lazr.restful fixes it.
[06:46] <wgrant> Great.
[06:46] <wallyworld> \o/
[06:46] <wgrant> So, I'm not quite done yet, but I think this infrastructure may just about be correct.
[06:46] <wgrant> Then we can deploy it eeeeeverywhere.
[06:47] <wallyworld> well it's certainly a big improvement on what it was.
[06:47] <wallyworld> did you head spin around when you said "eeeeeeverywhere"?
[06:49] <wallyworld> wgrant: can you let me know when your lazr-resful mp is approved so i can roll it into a single 18.1 release? thanks.
[06:49] <wgrant> I need to work out how to land it.
[06:49] <lifeless> lp-land
[06:50] <wallyworld> i was just going to merge it into mine directly
[06:51] <wgrant> Might as well land separately, or it's going to be confusing to people looking through the history.
[06:51] <wgrant> lifeless: You haven't by any chance added a long-poll change notification service to LP while I wasn't watching, have you?
[06:51] <wallyworld> ok
[06:51] <lifeless> wgrant: sorry no
[06:51] <lifeless> wgrant: I know where one is we can pick up and use
[06:52] <lifeless> wgrant: or I have some ideas on a variant
[06:52] <wgrant> Damn.
[06:53] <lifeless> wgrant: I think this is fine
[06:53] <lifeless> the race is lower on faster requests
[06:53] <wgrant> Sure.
[06:53] <lifeless> wgrant: I agree we should improve it, but perfect enemy of the good
[06:54] <wgrant> Oh, lazr.restful isn't PQM.
[06:54] <wgrant> Handy.
[06:59] <wgrant> wallyworld: Mine's landed.
[06:59] <wgrant> Now, let me finish up reviewing your client fixes.
[06:59] <wallyworld> wgrant: thanks. will grab it. hopefully my mp will get approved tonight.
[06:59] <wgrant> wallyworld: One thing: testtools is only a test dep, so it shouldn't be in requires.
[07:01] <wallyworld> wgrant: ah ok. i was just going by what i though the review comments said i had to do. i actually agree with you that it needent be listed as a dep. i'll have another look.
[07:02] <poolie> lifeless, sorry, i'm tired and i'm probably just being thick, but i can't see why a lock bit would have any performance impact
[07:02] <wgrant> wallyworld: I didn't read the comments at all.
[07:08] <wgrant> wallyworld: Do we need getHTMLOrDefault? I can't think when we'd need a fake HTML representation for something that doesn't have an HTML representation.
[07:09] <wallyworld> wgrant: i put it there as a "failsafe" so that something sensible would still be displayed if there were no explicit html included
[07:09] <wgrant> wallyworld: I think we probably want to crash in that case, no?
[07:10] <wallyworld> wgrant: not sure. i can see both sides.
[07:11] <wgrant> Because that function does some slightly questionable stuff, so it would be nice to demolish it if it's not really useful.
[07:13] <rvba> Hi lifeless. A question about qa-ing changes. If you look at 737165 ... you can see I've qa-ed this (on dogfood, with the help of bigjools because qa-ing this required admin rights to set a feature flag) but it got flagged qa-needstesting again. Not sure what to do at this point.
[07:13] <rvba> https://bugs.launchpad.net/launchpad/+bug/737165
[07:13] <_mup_> Bug #737165: Add search option for higher versions of local packages <derivation> <qa-needstesting> <Launchpad itself:Fix Committed by rvb> < https://launchpad.net/bugs/737165 >
[07:15] <rvba> I suppose I should just tag it again qa-ok ... but I prefer to check with you first ...
[07:15] <wgrant> rvba: Yes, just tag it again.
[07:15] <wallyworld> wgrant: i'll look at removing it. leave it with me
[07:16] <wgrant> qa-tagger ignores old tags, since bugs can be reused.
[07:16] <rvba> all right
[07:16] <wgrant> wallyworld: Thanks. Apologies for being so nitpicky, but this stuff will hopefully be used everywhere eventually, so I want to get it *really* right now.
[07:17] <wallyworld> wgrant: np at all. i agree with the need to get it as right as possible.
[07:28] <lifeless> rvba: things get tagged every time that they show up on the landing branch
[07:29] <lifeless> rvba: tagging them ok orotherwise before the taggers get to them just means you'll need to do it again
[07:29] <lifeless> rvba: ah, as wgrant explained ;)
[07:30] <rvba> lifeless: I get it now ;-). I'll make sure to check that every time I receive a mail from the buildbot.
[07:36] <wallyworld> wgrant: tis done
[07:36] <wgrant> Woo.
[07:37] <wgrant> This change has made the code 15 lines shorter, which can only be a good thing.
[07:38] <wgrant> wallyworld: As I said on the MP, _defaultFormatter is a bit odd and I don't understand its purpose.
[07:38] <wgrant> It's still using innerHTML, so it smells bad.
[07:38] <wgrant> It might be right, but I don't know.
[07:39] <wgrant> 161	+        // If there is no html representation, the raw cache value should be
[07:39] <wgrant> 162	+        // properly wrapped inside a node.
[07:39] <wgrant> That test comment's wrong now, right?
[07:39] <wgrant> The test itself seems to be correct.
[07:39] <wallyworld> wgrant: bugger sorry. comment is borked
[07:43] <wallyworld> wgrant: _defaultFormatter is required to return text, and now getHTML wraps stuff inside a node, so get get('innerHTML') is necessary
[07:43] <lifeless> poolie: all software sucks.
[07:43] <lifeless> poolie: some software sucks more
[07:43] <wgrant> wallyworld: Hm, so it will return HTML or unescaped text, right?
[07:43] <wallyworld> wgrant: although the null case needs to be checked now
[07:43] <wgrant> Anything that calls it is probably broken, then.
[07:43] <lifeless> poolie: for performance in launchpad the question isn't 'can it have a performance impact', it is 'is the performace impact low enough'
[07:44] <lifeless> poolie: we have, you might say, a target rich environment
[07:44] <lifeless> poolie: there are practical limits beyond which theoretical models just fail - like in python profiling, actual measurement is the key things
[07:45] <lifeless> poolie: I suggest that if you want a better metric than my hunch as expressed, that it needs coding up and scale testing
[07:45] <wallyworld> wgrant: yes, I think it returns html (when asked to do so) but that html is expected to be safe
[07:46] <wgrant> wallyworld: Hm, so the caller sets use_html?
[07:47] <wgrant> As I said, this might well be fine, it just seems odd to have a function return both trusted and untrusted strings.
[07:47] <wgrant> Depending on the situation.
[07:47] <wallyworld> wgrant: yes, see text-area-editor.pt
[07:48] <lifeless> principle of least suprise
[07:48] <wallyworld> that's the only place that sets it to true
[07:48] <wgrant> Ah, I see.
[07:49] <wgrant> I might file a bug for that.
[07:49] <wgrant> Since it's mildly insane.
[07:49] <wgrant> Anyway, approved.
[07:49] <wgrant> lifeless: Still around to mentor?
[07:50] <wallyworld> wgrant: thanks
[07:50] <lifeless> in a few minutes
[08:04] <LPCIBot> Project windmill build #124: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill/124/
[08:14] <wgrant> lifeless: Thanks.
[08:21] <lifeless> grah
[08:21] <lifeless> another compiler layering bug
[08:42] <adeuring> good morning
[09:14] <wgrant> More conflicts :(
[09:20] <lifeless> can has review https://code.launchpad.net/~lifeless/launchpad/bug-618406/+merge/55703 ?
[09:51] <lifeless> stub: one more if you have time https://code.launchpad.net/~lifeless/launchpad/bug-618406/+merge/55703
[09:51] <LPCIBot> Project devel build #595: FAILURE in 5 hr 5 min: https://lpci.wedontsleep.org/job/devel/595/
[09:52] <StevenK> allenap: https://code.launchpad.net/~stevenk/launchpad/dsd-hide-child-diff/+merge/55685
[09:52] <allenap> lifeless: I'll take it.
[09:55] <stub> lifeless: done
[10:05] <lifeless> stub: thanks
[10:09] <lifeless> allenap: Thanks, but stub got there ;)
[10:09] <allenap> lifeless: No worries, I'm happy :)
[10:11] <stub> db-devel qa is all green (sorry about those patches! I need some better reminder system for qa todo)
[10:14] <stub> Hmm... so my ec2 instance is terminated, but no results :-(
[10:15] <stub> oh... there they are
[10:17] <stub> Do we have any scripts that still need LibrarianLogger? Its a pain and I think the noise problems it solved no longer exist.
[10:18] <lifeless> dunno; fine to nuke IMO
[10:18] <lifeless> stub: I check both deployment reports as part of 'starting work' and 'wrapping up
[10:18] <lifeless> '
[10:18] <lifeless> daily
[11:35] <lifeless> night all
[12:12] <deryck> Morning, all.
[12:16] <bigjools> allenap: did you say you were fixing the db-devel conflict ?
[12:48]  * jml has spent the morning defacing sheets of creativity-sized paper.
[12:49]  * henninge lunches
[13:02] <bigjools> jml: is that a euphemism?
[13:03] <jml> bigjools: heh. no.
[13:03] <bigjools> jml: guess where I do most of my thinking :)
[13:03] <jml> bigjools: :D
[13:06] <danilos> allenap, hi, care to give me a quick review of: https://code.launchpad.net/~danilo/launchpad/revert-xss-workaround/+merge/55738 (all removal of something we landed earlier :)
[13:07] <wgrant> danilos: Yay, thanks.
[13:07] <danilos> wgrant, heh, you are welcome :)
[13:08] <wgrant> danilos: If you run into any more escaping issues like that, *please* whine at me until I fix them before working around them like that :)
[13:08] <danilos> wgrant, heh, if all it takes is whining at someone, I'd be happy to :)
[13:09] <danilos> wgrant, fwiw, I do agree with your position, and I brought it up multiple times (in pre-imp, MP, ... :), but we are also working against a deadline
[13:09] <danilos> wgrant, now that I know the proper address to whine at, all the better :)
[13:11] <jml> oh yeah
[13:11] <jml> colo
[13:11] <wgrant> danilos: Maintenance squads are handy for this sort of thing.
[13:12] <jml> ...
[13:14] <wgrant> Oh dammit.
[13:14] <wgrant> The new superlong buildd connection timeout sucks.
[13:20] <jml> whycome
[13:22] <wgrant> One could previously kill a build from a hung builder by disabling the builder.
[13:22] <wgrant> The connection would time out after a reasonable interval.
[13:22] <wgrant> And the next scan would see that the builder was disabled.
[13:22] <wgrant> But now the connection timeout is something like a day.
[13:22] <wgrant> So that doesn't work so well.
[13:23] <bigjools> s/builder/virtual builder/ :-)
[13:23] <wgrant> Yeah.
[13:24] <wgrant> But I like to pretend that armel doesn't exist, and the others don't hang, so...
[13:26] <bac> hi allenap, have time for a review?
[13:30] <jml> ffs.
[13:30] <jml> I should release testtools already.
[13:32] <LPCIBot> Yippie, build fixed!
[13:32] <LPCIBot> Project db-devel build #508: FIXED in 5 hr 27 min: https://lpci.wedontsleep.org/job/db-devel/508/
[13:32] <jelmer> jml: you should.
[13:33] <allenap> bac: Certainly :)
[13:33] <allenap> danilos: But I'll do yours first.
[13:33] <bac> allenap: great: https://code.edge.launchpad.net/~bac/launchpad/bug-745660/+merge/55636  -- most of the 700+ lines are a file deletion
[13:34] <allenap> bigjools: I think I fixed the db-devel conflict... I have my fingers crossed.
[13:34] <allenap> bigjools: No I didn't.
[13:34] <bigjools> allenap: yeah :(
[13:35] <bigjools> nagbot is still nagging
[13:35] <allenap> PQM swallowed my branch and defecated it into /dev/null.
[13:35] <wgrant> bigjools: I didn't think of this consequence when I sped up PQM :/
[13:35] <allenap> I'll have another go.
[13:35] <wgrant> (buildbot-poller only tries to merge again if there's not already a merge in the queue, so the OMG-so-slow PQM slowed down the spam too)
[13:50] <rvba> allenap: a small MP to review if you have the time https://code.launchpad.net/~rvb/launchpad/dds-fix-localpackagediffs-745776/+merge/55704
[13:51] <allenap> rvba: Should do.
[13:51] <rvba> allenap: great
[14:00] <deryck> henninge: ping for standup
[14:16] <adeuring> allenap: could you please have a look at this mp: https://code.launchpad.net/~adeuring/launchpad/js-translation-2/+merge/55575 ?
[14:18] <allenap> adeuring: I'll probably get to it, sure.
[14:18] <adeuring> allenap: thanks!
[14:30] <danilos> allenap, btw, thanks for the review :)
[14:34] <allenap> danilos: No worries. It was an easy one!
[14:53] <gary_poster> hey allenap, jcsackett, would love a review of https://code.launchpad.net/~gary/launchpad/bug741684/+merge/55656 and follow-on branch https://code.launchpad.net/~gary/launchpad/bug741684-2/+merge/55657 when you have a moment.
[14:53] <jcsackett> gary_poster: looking at the first of those now.
[14:53] <gary_poster> awesome thank you jcsackett
[14:55] <LPCIBot> Yippie, build fixed!
[14:55] <LPCIBot> Project devel build #596: FIXED in 5 hr 4 min: https://lpci.wedontsleep.org/job/devel/596/
[15:00] <jcsackett> gary_poster: i don't think you have any reason to worry about problems with caching initial_message; to my knowledge, one of the reasons we access initial_message is b/c it *doesn't* change, so we can use it as a reference.
[15:01] <gary_poster> cool, thanks
[15:01] <jcsackett> so it's a pretty excellent candidate for cache.
[15:01] <gary_poster> awesome
[15:02] <jcsackett> gary_poster: what's the reason for LeftJoining on BugActivity from BugNotification? can you have a situation where a notification has no corresponding activity?
[15:02] <gary_poster> yes, jcsackett.
[15:02] <jcsackett> huh.
[15:03]  * jcsackett makes note that he misunderstands what bugactivity must be.
[15:03] <jml> I want to run a process from a Python script. I want to collect the stdout and the stderr. I want to be able to get the "pure" stdout, unmixed with stderr, but I would also like to be able to have a combined stdout/stderr that looks a lot like hat you would get if stdout & stderr went to the same pipe
[15:04] <jml> s/hat/what/
[15:06] <gary_poster> jml, ec2 test does something like that IIRC.  It's not easy nor perfect
[15:06] <james_w> jml, you're not going to like it, but there is code at http://bazaar.launchpad.net/~james-w/ubuild/trunk/view/head:/ubuild/background_runner.py that works
[15:06] <jml> gary_poster: actually, it doesn't. I'm fixing ec2 test to do that :)
[15:07] <jml> james_w: your powers of prediction are amazing :)
[15:08] <jml> james_w: I think I could justifiably switch to using Twisted rather than do that.
[15:09] <jml> hmm.
[15:10] <jml> maybe I can do something where I set up a couple of forking streams and replace p.stdout & p.stderr with them
[15:11] <jml> something roughly equivalent to p.stdout = MultiStream(pure_stdout, mixed_output); p.stderr = mixed_output
[15:15] <jml> ugh, no, wrong direction
[15:23] <deryck> henninge: did you want to chat about js at all?  Or you're good?
[15:24] <henninge> deryck: at the moment I am good.
[15:25] <henninge> thanks for asking
[15:25] <deryck> henninge: ok.  I'm stepping out of the office for a lunch outside the house.  In about an hour.
[15:25] <deryck> adeuring: ^^  just fyi
[15:25] <adeuring> ok
[15:25] <henninge> ok
[15:32] <gary_poster> jcsackett, on calls, so sorry for "succinct" message
[15:32] <gary_poster> bug activity is not always generated
[15:32] <gary_poster> IIRC, comments don't always have one, for instance
[15:32] <gary_poster> I don't remember the details, but I do remember that it is not always there
[15:33] <jcsackett> gary_poster: dig. no worries for the succinctness. :-)
[15:33] <gary_poster> :-)
[15:33] <gary_poster> thanks
[15:35] <jcsackett> i am surprised that creating a comment could not count as activity; seems to break my mental model of what should be happening. :-)
[15:36] <jcsackett> but then, that happens all the time.
[15:37] <gary_poster> :-)
[15:38] <LPCIBot> Project windmill build #125: STILL FAILING in 1 hr 10 min: https://lpci.wedontsleep.org/job/windmill/125/
[15:51] <bac> allenap: thanks for the review and the suggestions!
[15:52] <allenap> bac: You're welcome.
[15:52] <bac> i wasn't aware about cmp.  good to know.
[15:53] <jcsackett> gary_poster: r=me on part 1. looking at the second bit in just a few.
[15:54] <gary_poster> great, thanks again jcsackett
[15:55] <jml> Ursinha: I'm looking at https://bugs.launchpad.net/launchpad/+bug/715832
[15:55] <_mup_> Bug #715832: ec2 land adds duplicate tags to the merge proposal's commit message <build-infrastructure> <ec2land> <ec2test> <Launchpad itself:Triaged> < https://launchpad.net/bugs/715832 >
[15:56] <jml> Ursinha: I think you originally changed autoland to edit the commit message
[15:56] <jml> Ursinha: what was the motivation behind that?
[15:59] <gary_poster> jcsackett, while it is still in your head, I'd love to get your ideas on reducing the churn in that for loop.  mumble would be fine--I could take notes for a third branch, or comments, or future work, or something.  It would be a shame to lose your idea though.
[15:59] <jcsackett> gary_poster: what does the ProxyFactory decorator do? is that the one that throws a security proxy on returned data?
[15:59] <gary_poster> jcsackett, exactly
[16:00] <jcsackett> gary_poster: my notions on it are still churning--i'm not certain i *have* a solution, just i see that the DB call is happening at roughly a similar O() as before, so could still be an issue.
[16:05] <gary_poster> jcsackett, gotcha.  If there are no teams without preferred emails, and only one notification at a time, you are right, the changes in the loop are small.
[16:05] <gary_poster> I know we have multiple notifications at a time, though; and I actually ought to see how many teams we have with and without a preferred email--I bet that's a relatively simple SQL select I can make on staging.
[16:05] <gary_poster> Sadly, I don't see a way to simplify this further and maintain the desired functionality.  That isn't to say that there isn't onem of course.  If there are more problems, it will be interesting to see what we can do.
[16:06] <jcsackett> gary_poster: yeah, i think if we reach a point where further changes are needed, we're going to have an interesting time of it.
[16:06] <jcsackett> that said, and as i said in the review, the actual DB stuff itself is cheaper than it was thanks to your changes, which is a huge help. and the situation in which your other changes doesn't help should be an edge case.
[16:07] <gary_poster> yeah, hope so. Thanks.
[16:10] <jcsackett> gary_poster: on part 2, you the goal of _get_recipients_for_team is to get emails for every Person (who is not a Team) that has membership in the team, whether directly or via another team, right?
[16:11] <gary_poster> jcsackett, not precisely.  The logic is similar to that described in get_recipients:
[16:12] <gary_poster> a team with a preferred email is its own recipient, with no transitive walk down.
[16:12] <jcsackett> aaah, missed that bit.
[16:12] <gary_poster> if a team does not have a recipient, then you need to do a transitive walk down to find what does
[16:12] <gary_poster> (which can be a person or a team)
[16:12] <jcsackett> right, now it all clicks together.
[16:12] <gary_poster> cool
[16:13] <jcsackett> i was about to suggest a single query via teamparticipation, but the filtering to then get rid of people you don't need would be just as expensive as the current iterations.
[16:13] <gary_poster> yeah.  I also considered a recursive with statement, but it didn't seem to be a match: I need to walk down the things I don't return.
[16:14] <gary_poster> (where with helps you walk down the things you return)
[16:14] <gary_poster> I could have done it with "with" but it would have made more loops in the DB, even though there might be fewer in Python.
[16:14] <gary_poster> At least the way I conceived of it
[16:15] <jcsackett> i think you're right, as i'm thinking through this. and we would much rather have the loops be in python, given db speed was the problem. :-P
[16:15] <gmb> allenap, jcsackett: Could one of you review the code portion of https://code.launchpad.net/~gmb/launchpad/team-subscription-opt-out/+merge/55764 please?
[16:16] <gary_poster> :-) yeah.  Well, the speed is honestly the first problem.  The DB usage is a scalability issue, and a secondary problem.  But yeah, ideally we'd fix both. :-/
[16:16] <allenap> gmb: Sure, I'll do it next.
[16:16] <gmb> Cool, thanks.
[16:18] <jcsackett> gary_poster: r=me on part 2. i have no problems with it being a function, rather than a method. :-)
[16:18] <gary_poster> jcsackett, cool :-) .  Thanks!
[16:18] <jcsackett> you're welcome.
[16:49] <allenap> gmb, apparently you have largely reimplemented Launchpad: Diff against target: 345455 lines (+151809/-75208) 3004 files modified
[16:49] <gmb> WAT
[16:49] <allenap> I'm not going to be able to review that today.
[16:49] <gmb> gary_poster: So, that bzr problem you mentioned...
[16:49] <gmb> ^^
[16:49] <gmb> Oo-kay.
[16:49] <gmb> allenap: Let me take a look at that, then.
[16:50] <gmb> Oh.
[16:50] <gmb> Hahaha.
[16:50] <gmb> Interesting.
[16:50] <gmb> allenap:  Ready for review for merging into lp:~gmb/launchpad/db-devel
[16:51] <gmb> E_RONG_TARGET
[16:51] <allenap> Hehe :)
[16:52] <gmb> allenap: https://code.launchpad.net/~gmb/launchpad/team-subscription-opt-out/+merge/55779 instead.
[16:52] <rvba> allenap: jcsackett I've 2 small bugfix MP for you to review:
[16:52] <rvba> https://code.launchpad.net/~rvb/launchpad/dds-req-packagediff-fix-flashing/+merge/55775
[16:52] <rvba> https://code.launchpad.net/~rvb/launchpad/dds-fix-localpackagediffs-745776/+merge/55704
[16:52] <allenap> gmb: Okeydoke.
[16:53] <gmb> Ta
[16:53] <allenap> rvba: I'll see if I can squeeze one of those in after Graham's.
[16:53] <rvba> great
[16:53] <jcsackett> rvba: i'm looking at the first of the two now.
[16:53] <rvba> jcsackett: thx
[16:57] <jcsackett> rvba: why the name change from "retry_handler" to "recompute"? was it just to be clearer, or was there anything else?
[16:57] <rvba> jcsackett: yes, just to be more clear
[16:57] <jcsackett> cool.
[16:59] <jcsackett> rvba: to summarize, the big change here is that you're now attaching events to that new span, which is replaced by a placeholder without events on error. is that correct?
[17:01] <rvba> jcsackett: right
[17:02] <jcsackett> rvba: last question. :-) ui wise, i see that you are removing the red flash animation. this isn't something we want on error anymore? or is it provided by somethine else now?
[17:03] <rvba> jcsackett: I removed the flash anim because, although I like js animation as much as the next guy, you'll be instant feedback right where you've just clicked
[17:03] <rvba> hence no need to flash
[17:04] <jcsackett> rvba: okay. r=me.
[17:04] <rvba> s/you'll be/you'll get/
[17:04] <jcsackett> rvba: it might be worth it to run that flash change by a ui guy, but i see no problems with it.
[17:05] <rvba> jcsackett: we plan to get feedback for the ui (and the rest) asap. All of this is related to the new derived distro series ... thing.
[17:06] <jcsackett> rvba: sounds good to me. :-)
[17:06] <jcsackett> rvba: as i said, r=me. :-)
[17:06] <rvba> jcsackett: great, thx.
[17:06] <jcsackett> if allenap hasn't hit your other branch in a few, i'll take a look at it as well.
[17:09] <jml> https://code.launchpad.net/~jml/launchpad/various-ec2-fixes/+merge/55763 genuinely needs a review now
[17:09] <jml> sorry for the noise
[17:10] <gmb> allenap: I'm doing quite a bit of work in a dependant branch, so I'll add the tests you suggested there.
[17:10] <allenap> gmb: Cool :)
[17:25] <jcsackett> rvba: i am looking at your second branch now.
[17:25] <jcsackett> jml: if allenap hasn't gotten to your branch in a bit, you're up next for me.
[17:27] <allenap> It's a race!
[17:30] <allenap> jcsackett: Actually, it's all yours; I have to go and collect the kids now.
[17:30] <jcsackett> allenap: righto. :-)
[17:32] <rvba> jcsackett: looks like allenap took my second branch first :-)
[17:32] <jml> jcsackett: thanks.
[17:32] <jml> man.
[17:32] <jml> web browsers suck.
[17:32] <jml> can we stop using them please?
[17:33]  * jcsackett laughs.
[17:33] <jml> turns out the svgs on http://lpqateam.canonical.com/doc/vision.html look fine in firefox but tiny in chrome
[17:35] <jcsackett> rvba: r=me, with a small change listed in the MP comment.
[17:36] <jcsackett> jml: i'll be looking at yours in just a few.
[17:36] <rvba> jcsackett: thanks.
[17:36] <jml> jcsackett: thanks.
[17:36] <rvba> allenap: thanks also for your review
[17:39] <jcsackett> did we both hit that branch?
[17:39]  * jcsackett laughs.
[17:39] <jelmer> jcsackett, allenap: I've got a MP for a project which doesn't appear to be listed on the launchpad-project page
[17:40] <jelmer> allenap: ah :)
[17:40] <jcsackett> jelmer: which project?
[17:40] <jelmer> jcsackett: lpreview-body
[17:41] <jcsackett> huh. there is definitely a strong argument for that being an lp project. :-P
[17:41] <jcsackett> MP link? i'll look when i'm done with jml's MP.
[17:44] <jelmer> jcsackett: yeah, indeed :)
[17:45] <jelmer> The MP is @ https://code.launchpad.net/~jelmer/lpreview-body/lazy-hooks/+merge/50471
[17:45] <jelmer> thanks :)
[17:46] <jml> mrevell: could you have a look at https://code.launchpad.net/~jml/launchpad/vision-doc-split/+merge/55789 ?
[17:46]  * mrevell looks
[17:47] <mrevell> jml No problem
[17:54] <mrevell> jml, Is there a package with sphinx-build or do I need to go hunt it down from somewhere?
[17:54] <jml> mrevell: python-sphinx
[17:55] <mrevell> ah, thanks
[18:01] <mrevell> jml, I'll complete my review of that branch in the morning.
[18:01] <jcsackett> jml: looks like a good grab bag of fixes. r=me.
[18:01] <jml> jcsackett: thanks.
[18:02] <jcsackett> jml: are there bugs filed about the coverage of tests on ec2? your MP mentioned it is not well tested, in general.
[18:02] <jml> jcsackett: not really.
[18:03] <jml> jcsackett: there's such a great deal of stuff that's not tested I'm not sure that it's possible to file a closable bug.
[18:03] <jcsackett> jml: yeah, i could see that being an issue.
[18:03] <jcsackett> it's sort of funny that our testing infrastructure is sufficiently complicated it's hard to test itself.
[18:05] <jcsackett> jelmer: r=me. i love short branches. :-)
[18:06] <jelmer> jcsackett: Thanks :)
[18:07] <jml> jcsackett: yeah. it's ec2 and Launchpad's own deployment/installation complexity that really does it.
[18:08] <jml> jcsackett: ec2 test was originally a fairly organic script that (AIUI) was written as we were learning about how best to do this. Because it wasn't written with testing in mind, there are a lot of sticky bits that need to be unstuck.
[18:09] <jcsackett> jml: makes sense. refactoring for testability can be a major pain, too.
[18:10] <jml> jcsackett: yes. how long has it been since I last advocated TDD in this forum?
[18:10] <jcsackett> your talk was last week, wasn't it?
[18:10] <jcsackett> does that count? :-)
[18:12] <jkakar> ++TDD!
[18:12] <jkakar> :)
[18:15] <gary_poster> As the original source of the ec2 script and its lack of tests, and someone who has written *lots* of tests, I personally think that exploratory programming has its place.  And personally still feel a tad defensive, obviously ;-) .
[18:15] <gary_poster> When the exploration takes much more time than expected, and what you have works, and you are supposed to go off and do something else now thank you very much, you're left with something like what ec2 was before jml started his magic on it.
[18:16] <jml> gary_poster: I think that doing TDD with ec2test would have been prohibitively difficult
[18:16] <gary_poster> I certainly had no freaking idea what I was doing when I was starting :-)
[18:16] <jml> :)
[18:17] <jml> and once something is working, it's much easier for someone else to come along & refactor, because "use it and see if it works" becomes a valid & effective test
[18:17] <jkakar> gary_poster: I agree.  Sometimes you just need to type really fast and see what comes out the other end.  There's nothing wrong with that.
[18:18] <gary_poster> jkakar, cool.  congrats on new position!  Looks really interesting
[18:18] <jkakar> gary_poster: And you shouldn't feel defensive--you solved an important problem.
[18:18] <gary_poster> :-) thanks
[18:18] <jkakar> gary_poster: Thanks!  It's turning out to be a lot of fun. :)
[18:18] <jml> gary_poster: and I honestly don't mean to attack. I couldn't fault your approach with ec2test, and ... what Jamu said :)
[18:18] <gary_poster> I bet
[18:18] <jkakar> That's actually an interesting thing...
[18:19] <gary_poster> heh, thanks guys.  when I said I felt defensive, I was trying to admit that I was not entirely rational in feeling that way :-)
[18:19] <jkakar> :)
[18:34] <jml> g'night all.
[18:37] <jcsackett> night.
[18:38] <gary_poster> night
[18:44] <deryck> allenap: thanks for the review!  Was away and nice to see it done when I returned. :-)
[18:44] <deryck> Wasn't expecting it. :-)
[18:55] <LPCIBot> Project windmill build #126: STILL FAILING in 1 hr 12 min: https://lpci.wedontsleep.org/job/windmill/126/
[19:38] <jcsackett> is raising Unauthorized the best way to send back a 401?
[19:38] <jcsackett> i mean, i assume so, but i don't want to get tripped up by something i'm not aware of, and status codes in launchpad have tripped me up before.
[19:46] <jcsackett> sinzui:  did you still want to mumble about bug 676988?
[19:46] <_mup_> Bug #676988: Relax-NG validity error : Element hardware failed to validate  <hwdb> <lp-bugs> <oops> <Launchpad itself:Triaged> < https://launchpad.net/bugs/676988 >
[19:47] <sinzui> yes
[19:47] <jcsackett> when would you like? now?
[20:26] <jcsackett> sinzui: https://lp-oops.canonical.com/oops.py/?oopsid=1782C2286
[20:31] <lifeless> jcsackett: wow, special oops
[20:48] <james_w> is there a bug about editing blueprints changing the title in an odd way?
 specifically
[20:57] <lifeless> yes
[20:57] <lifeless> erm possibly yes
[20:57] <lifeless> I hink its pending deploy
[20:57] <lifeless> does qastaging look better to you?
[21:11] <wgrant> james_w: Yes, and the fix has landed.
[21:11] <james_w> great, thanks
[21:17] <wgrant> We can probably deploy it in a few minutes, too.
[21:20] <wgrant> :(
[21:20] <wgrant> IE breaks all my plans.
[21:23]  * thumper gets coffee
[21:23] <thumper> I'm natty now
[21:23] <jcsackett> IE breaks everyone's plans.
[21:23] <thumper> and unity is being a PITA
[21:24] <wgrant> thumper: Oh?
[21:24] <wgrant> It's pretty stable for me once I've been running for an hour or two.
[21:24] <wgrant> But for the first hour just pressing Ctrl+Alt is enough to make it crash.
[21:25] <thumper> Ctrl+Alt is fine here :)
[21:38] <lifeless> wow, its conflict city atm
[21:38] <lifeless> -> hospital, bbiab
[21:38] <wgrant> *Another* one?
[21:38] <lifeless> garbo
[21:38]  * wgrant fixes.
[21:44] <wgrant> Fairly non-trivial :/
[21:44] <deryck> Later on, everyone.
[21:53]  * thumper stabs unity in the face
[21:53]  * thumper goes to a different shell
[21:54] <wgrant> thumper: Is it being buggy, or you just don't like it?
[21:54] <thumper> crashing on me all the time
[21:54] <thumper> can't work like that
[21:54] <thumper> it is different if it is my work
[21:54] <thumper> but it isn'tyet
[21:54] <wgrant> Heh
[21:55] <wgrant> Which driver?
[21:55] <thumper> intel
[21:55] <wgrant> :(
[22:02] <jcsackett> sinzui: got another few moments to mumble?
[22:17] <thumper> hi guys
[22:17] <thumper> I have to take caitlin to the dentist shorty
[22:17] <thumper> so I'll miss the standup
[22:57] <wgrant> james_w: Fixed now.
[22:58] <james_w> thanks
[23:02] <wallyworld> sinzui: are you guys having a standup now?
[23:03] <huwshimi> wallyworld: Technically
[23:03] <wgrant> I've seen no sinzui this morning, though.
[23:03] <wallyworld> huwshimi: i hope my mumble works today. it's been flakey of late :-(
[23:03] <huwshimi> wallyworld: It has been for a lot of people
[23:29] <poolie> hi all
[23:30] <wgrant> Morning poolie.
[23:37] <LPCIBot> Project windmill build #127: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill/127/
[23:38] <wgrant> wallyworld: Do you have a PyPI account? Might as well poke someone to give you or I upload access to lazr.restful.
[23:39] <wallyworld> wgrant: no, i don't have one. i'm lp-landing now. i want to package it all up and get it into download-cache so i can get a downstream branch going
[23:40] <wgrant> wallyworld: Great. You've fixed the date in NEWS.txt?
[23:40] <wgrant> I think that's all that's left to do.
[23:40] <wallyworld> wgrant: well, no :-) i guess i should
[23:41] <wgrant> wallyworld: Also, lazr.restful isn't PQM-managed, so you just merge directly.
[23:41] <wallyworld> ok
[23:45] <wgrant> huwshimi: You have no outstanding Loggerhead CSS updates?
[23:45] <huwshimi> wgrant: Nope. Should I?
[23:46] <wgrant> huwshimi: Just checking that I wasn't going to conflict with you if I attacked it to remove the double line spacing.
[23:46] <huwshimi> wgrant: Nah all good. Go for it
[23:46] <wgrant> Thanks.