[00:00] <mwhudson> what: http://paste.ubuntu.com/701996/
[00:02] <mwhudson> haha uh, why have i had an ec2 t1.micro running since march?
[00:02] <StevenK> Haha
[00:02] <StevenK> Aren't they effectively free now?
[00:10] <mwhudson> only for new signups i think?
[00:11] <mwhudson> anyway it hasn't been costing me very much or i'd have noticed within a month i guess :-)
[00:37] <mwhudson> sigh, 4 attempts to get ec2 test running :/
[00:37] <mwhudson> (merge failure, odd ssh failure, local net glitch)
[01:50] <StevenK_> wgrant: Didn't we remove polls?
[01:51] <wgrant> StevenK_: Yes, but they were revived.
[01:51] <lifeless> we tried
[01:51] <wgrant> Because Ubuntu use them.
[01:51] <StevenK_> Really? They haven't been used for the last few elections
[01:51] <nigelb> Morning
[01:51] <nigelb> wgrant: Ubuntu uses them for what?
[01:51] <lifeless> StevenK_: ubuntu womens
[01:52] <lifeless> IIRC
[01:52] <nigelb> Most elections are condorcet
[01:52] <nigelb> Ubuntu Women also used that, not LP polls
[01:58] <StevenK> So perhaps we should ask Ubuntu again?
[01:58]  * StevenK 
[01:58] <StevenK> Sigh
[01:58]  * StevenK searches for a single word that means 'person or team'
[01:59] <wgrant> person
[01:59] <wgrant> Or Person.
[01:59] <mwhudson> so, feature flags
[01:59] <StevenK> wgrant: IE, I want a class name for the refactored code.
[02:01] <mwhudson> err hm
[02:01] <mwhudson> why does LaunchpadTestRequest set .features to NullFeatureController?
[02:04] <mwhudson> i guess LaunchpadTestRequest is used in some tests that don't have a db connection, perhaps
[02:08] <lifeless> StevenK: Atom
[02:14] <wgrant> lifeless: Any idea what's going on with the lazr.restful OOPS fix?
[02:18] <lifeless> ECONTEXT
[02:20] <wgrant> lifeless: The one you mailed IIRC benji about a week or so ago.
[02:20] <wgrant> The __traceback___ one.
[02:20] <lifeless> I thought he fixed it already
[02:20] <lifeless> he acked it and made a branch immediately
[02:21] <wgrant> Yeah.
[02:21] <wgrant> But it apparently never landed.
[02:21]  * wgrant hunts.
[02:23] <wgrant> https://code.launchpad.net/~benji/launchpad/bug-854695/+merge/76285
[03:50] <stub> wallyworld_: I don't think you want the trigger to initialize transitively_private in the BEFORE trigger, as it will be overwritten in the AFTER trigger anyway. Just 'ALTER TABLE Branch ALTER COLUMN transitively_private SET DEFAULT TRUE;' should be fine?
[03:51] <wallyworld_> stub: sounds better. for some reason i thought we frowned upon default values for non null columns though?
[03:51] <wallyworld_> and i think the default needs to be false
[03:52] <wgrant> False is bad.
[03:52] <stub> We frown on adding a new column with a DEFAULT, as that causes all rows in the table to be rewritten with the new DEFAULT.
[03:52] <stub> Adding a DEFAULT to an existing column is fine
[03:52] <wallyworld_> stub: ok
[03:52] <wallyworld_> stub: if the trigger fails, will the row be rolled back?
[03:53] <stub> wallyworld_: I chose DEFAULT TRUE because if the trigger is broken (it isn't), we default to private. Either TRUE or FALSE should be fine as the DEFAULT>
[03:53] <stub> wallyworld_: Yes, if the trigger fails the whole transaction will be rolled back.
[03:53] <wallyworld_> stub: wgrant: the reason for me asking for default = false is that i need to check the short circuit rules in the trigger
[03:54] <stub> ok
[03:54] <wallyworld_> if transitively_private is true, then it may not bother doing anything
[03:54] <stub> short circuit checks private, not transitively_private
[03:54] <stub> But double checking is good :-)
[03:55] <stub> Tests are better...
[03:55] <wallyworld_> yes, agreed. i will write one now that we are taking this approach
[03:55] <stub> Hmm... the MP has gone
[03:56] <stub> lifeless did not realize the field is already maintained with the AFTER trigger
[03:56] <wallyworld_> stub: i renamed the branch
[03:56] <wallyworld_> in anticipation of landing it in two parts
[03:56] <stub> You can rename branches?
[03:56] <wallyworld_> i'll rename it back
[03:56] <wallyworld_> yes, apparently :-)
[03:57] <stub> I managed to misspell logintoken as lockfile in my branch name the other day...
[03:57] <wallyworld_> stub: renamed back now
[03:57] <wallyworld_> go to the branch details link
[03:58] <wallyworld_> and you can rename
[04:37] <StevenK> Can haz review? https://code.launchpad.net/~stevenk/launchpad/refactor-team-rename/+merge/78037
[04:56] <StevenK> Obviously, the answer to that question is "no".
[04:57] <wgrant> Indeed.
[04:57] <wgrant> So.
[04:57] <wgrant> You've moved it into the model, apparently.
[04:57] <wgrant> Which is probably where it should be.
[04:57] <wgrant> But...
[04:58] <wgrant> Person and Team don't need a model mixin, because they're both the same class.
[04:58] <StevenK> So make it a method in IPerson itself?
[04:58] <StevenK> reason = self.context.can_be_renamed() or so?
[04:59] <wgrant> Quick possibly. checkRename or something like that.
[05:00]  * StevenK refactors the refactor
[05:00] <wgrant> StevenK: Also, can you put the "has" in the template?
[05:00] <wgrant> Removes the has_ppa check under has_mailing_list.
[05:00] <StevenK> But I can't ...
[05:01] <wgrant> Why not?
[05:01] <StevenK> Because it changes the prose for the both check
[05:01] <wgrant> This %s has %s and may not be renamed.
[05:02] <StevenK> "has a PPA ... and has a mailing list" versus "has a PPA and a mailing list"
[05:02] <wgrant> %s is "an active PPA with packages published", "a mailing list", or "an active PPA with packages published and a mailing list"
[05:02] <StevenK> Oh
[05:02] <StevenK> Right
[05:02] <wgrant> Also, possibly s/user/person/
[05:02] <StevenK> Also fixed
[05:11] <lifeless> is there a reviewer in the house ?
[05:13] <lifeless> https://code.launchpad.net/~lifeless/python-oops-datedir-repo/hashing/+merge/78039
[05:21] <wgrant> lifeless: Why BSON? :(
[05:22] <wgrant> These are going to be even less readable than SSO OOPSes.
[05:24] <lifeless> wgrant: decoders exist; handles binary crud (which we get like it or not)
[05:24] <wgrant> And makes it just about impossible to view OOPSes unless oops-tools is agreeable and fast.
[05:24] <wgrant> neither of which is true.
[05:25] <lifeless> this is a component in fixing that
[05:25] <wgrant> And until then our error analysis capabilities are crippled.
[05:25] <lifeless> how so ?
[05:25] <wgrant> It becomes extremely difficult to respond in realtime to complaints involving OOPSes.
[05:26] <lifeless> details dude
[05:26] <lifeless> give me the details
[05:26] <wgrant> I don't speak BSON.
[05:26] <wgrant> text editors don't like BSON.
[05:26] <wgrant> oops-tools is slow to render, and even slower to pick up OOPSes, and often doesn't ever see them at all.
[05:26] <lifeless> import bson; bson.loads(open('foo', 'rb'))
[05:26] <wgrant> Mmm, perhaps.
[05:26] <wgrant> OK.
[05:27] <lifeless> slow to render is as yet undiagnosed. Slow to pick up is what I'm on an arc to fix.
[05:27] <lifeless> not seeing them is fixed as soon as that chroot comes around.
[05:28]  * StevenK gets spammed by wgrant
[05:28] <wgrant> StevenK: Oh?
[05:28] <wgrant> bugmail?
[05:28] <StevenK> Yeah
[05:28] <wgrant> lifeless: Also, what about eg. dev/DF OOPSes?
[05:28] <StevenK> Damn it, come on MPJ!
[05:28] <lifeless> wgrant: DF - install oops-tools.
[05:28] <wgrant> hahahaha
[05:28] <lifeless> wgrant: dev - oops-tools is about to be opened
[05:29] <lifeless> wgrant: tests can use the programmatic interface
[05:29] <wgrant> So everyone has to run their own Django app to see oopses?
[05:29] <lifeless> wgrant: or you can set the serializer to rfc822 - I kept compat for a reason.
[05:29] <wgrant> We need a sensible dev story for this before it becomes the default.
[05:29] <StevenK> +2,000,000
[05:29] <lifeless> no, we need to get this shit sorted
[05:30] <lifeless> that django app is easier to install than LP
[05:30] <wgrant> Yes, but sorting shit so it breaks other shit is not ideal.
[05:30] <lifeless> 2 branches + buildout and a postgresql cluster
[05:30] <lifeless> wgrant: its not breaking other stuff
[05:30] <StevenK> It's another barrier to contribution
[05:30] <StevenK> Which is already too high
[05:30] <StevenK> So, fail
[05:30] <wgrant> It's breaking the ability to debug a local Launchpad instance.
[05:30] <wgrant> And to see test failures.
[05:31] <lifeless> no, its not - to either.
[05:31] <lifeless> the test suite attachOopses uses rfc822 serializer - it receives the oops dicts.
[05:32] <wgrant> Ah
[05:32] <lifeless> oopses written by subprocesses will change format, yes. But they are *already* a PITA to get at - and trivially decoded using... bson
[05:32] <wgrant> It is trivial.
[05:32] <lifeless> StevenK: its a barrier to -some- forms of contribution, but I look at a local oops about once a month, if that.
[05:33] <StevenK> I tend to look at OOPS on carob using cat, now I won't be able to. :-(
[05:33] <lifeless> StevenK: pages will still show backtraces to local devs, the console backtrace will still be plain text
[05:33] <wgrant> But analysis of dev and prod OOPSes at the moment is now often done by means of cat, grep and cut
[05:33] <StevenK> I hate our oops-tools app
[05:33] <lifeless> so fix it
[05:33] <StevenK> Sure, in the oddles of free time I have?
[05:33] <wgrant> Right, we should fix it.
[05:33] <wgrant> But *before* we break everything that isn't it.
[05:33] <wgrant> I don't see why BSON has to happen at the same time as hashes.
[05:33] <lifeless> we are -stalled- on multiple important improvements to our data gathering - to whit, extra info on appserver resource usage, clearer metadata, evolving the damn thing.
[05:33] <wgrant> It seems unrelated.
[05:34] <lifeless> they are separate fields in the repository object, and we can configure them however we want.
[05:34] <lifeless> e.g. dev mode can use rfc822 if you don't mind extra data being dropped.
[05:35] <StevenK> wgrant: Can you have another look at my MP?
[05:35] <wgrant> StevenK: Was just doing so.
[05:35] <wgrant> lifeless: What is the benefit in moving to BSON at the same time?
[05:35] <lifeless> again, claiming this is breaking things is very exaggerated. Yes, the shell pipelines you used won't work. Are they intractably different with a new serializer? No.
[05:35] <StevenK> +71 -44 makes me a little sad. I prefer removing more code than I add.
[05:36] <lifeless> wgrant: A) I haven't moved anything to bson, B) see above.
[05:37] <wgrant> 87+ Defaults to using serializer_bson.
[05:37] <StevenK> Hm, this might be able to be refactored further.
[05:37] <lifeless> yes
[05:38] <lifeless> but our packages are version locked, except perhaps txlongpoll which I haven't looked into, so when bumping the version, if we want rfc822 explicitly we can do that. Its not coupled to *this* merge proposal.
[05:38] <lifeless> (Separately, yes, I plan to use bson when I update the dep in LP, I'm being pedandtic because of the hyperbole you're tossing at this)
[05:42] <lifeless> wgrant: so, what are you asking be written before we change to bson ?
[05:42] <wgrant> Well, ideally we would have OOPS analysis tools that didn't involve obscene shell pipelines.
[05:43] <wgrant> But that seems to not be practical.
[05:43] <lifeless> wgrant: (Note that 'do not break anything' is incompatible and I reject that out of hand) So it 'provide a full text index' - we have plenty of ability to search with os.walkdirs + bson in an adhoc manner, IF/when oops-tools fails to meet our needs.
[05:43] <lifeless> wgrant: I would *love* to run up solr etc and JFDI
[05:44] <lifeless> wgrant: but thats a long pipeline, and I'm tired of getting significantly better data from oopses being blocked - when the change needed to do it differently is not all /that/ big
[05:46] <lifeless> again though, policy vs requirements - this branch lets us choose
[05:46] <StevenK> Blah, too hard to refactor further. Mainly because browser/person.py is *obscene*
[05:47] <lifeless> wgrant: your smoketest branch - +1
[05:48] <wgrant> lifeless: Thanks, I'll propose it properly in a sec.
[05:49] <StevenK> wgrant: Can haz a vote?
[05:49] <wgrant> lifeless: A couple of questions, but yours is approved.
[05:51] <lifeless> wgrant: oops-pruner
[05:51] <lifeless> wgrant: thanks
[05:51] <wgrant> lifeless: But they're normally on disk as 1234.ABC1234
[05:51] <wgrant> Not OOPS-*
[05:52] <StevenK> wgrant: I've just pushed a change to make {Person,Team}EditView.setUpWidgets() identical, but it's very hard to refactor further.
[05:52] <wgrant> StevenK: REFACTOR FURTHER
[05:52] <wgrant> Always refactor further.
[05:52] <lifeless> wgrant: yes, but the *id* is normally OOPS-blah. And using the id directly is simpler than using the id minus OOPS-
[05:53] <lifeless> wgrant: also, the name on disk at the moment is all to do with sorting
[05:53] <wgrant> True.
[05:53] <wgrant> Go ahead, then.
[05:54] <StevenK> wgrant: I tried. TeamEditView can't use BasePersonEditView as a parent due to circular import hell.
[05:54] <wgrant> Oh?
[05:54] <wgrant> browser.person import browser.team?
[05:55] <StevenK> wgrant: http://pastebin.ubuntu.com/702084/
[05:57] <wgrant> StevenK: WTF, why does browser.person import from browser.team?
[05:58] <wgrant> Move Team*Menu into browser.team
[05:58] <StevenK> classImplements(TeamIndexView, ITeamIndexMenu)
[05:58] <StevenK> classImplements(TeamEditView, ITeamEditMenu)
[05:59] <StevenK> But yes, that's a little screwed.
[06:26] <lifeless> jamesh: hi
[07:07] <rvba> Morning.
[07:07] <rvba> wgrant: Hi William, thanks for QA'ing my +initseries branch ;).
[07:08] <wgrant> It turned out to not be so important, but it was easy enough :)
[07:09] <jamesh> lifeless: hi
[07:09] <rvba> Always nice to start my day with a qa-ok message from the other side of the planet ;)
[07:10] <lifeless> jamesh: ola~
[07:10] <lifeless> jamesh: so, two things; oops-datedir-repo can write bson reports now (and trunk oops-tools can read them)
[07:11] <lifeless> jamesh: this makes extension and handling a -lot- easier, I think you'll agree ;)
[07:11] <jamesh> yep.
[07:12] <lifeless> jamesh: secondly, I was wondering if you'd tried integrating stuff again? [I'd love to have an answer for getting oopses into the oops-tools django app itself, for instance]
[07:13] <jamesh> lifeless: I haven't done much since we last talked.  My test u1 branch does log reports with unmodified Django (by subclassing Django's WSGI handler)
[07:14] <lifeless> perhaps that subclass should be in oops-* somewhere? I don't know enough django to know if that makes sense
[07:15] <lifeless> jamesh: also, thats awesome - we're in business ;)
[07:15] <lifeless> wgrant: as promised (and as penalty you get the review :P) https://code.launchpad.net/~lifeless/python-oops/hostname/+merge/78053
[07:17] <jamesh> lifeless: http://paste.ubuntu.com/702108/ <- Using this instead of the standard WSGIHandler should be enough.
[07:18] <jamesh> actually, that plus oops_on_status=['500']
[07:18] <wgrant> lifeless: Approved.
[07:18] <jamesh> for the oops-wsgi middleware
[07:18] <wgrant> With missing apostrophe.
[07:18] <lifeless> wgrant: and aggregate->aggregation
[07:19] <lifeless> wgrant: do you mean 'machines''s' ?
[07:19] <wgrant> Right.
[07:21] <lifeless> wgrant: on thursday, can I pick your brain on wabbit ?
[07:22] <wgrant> lifeless: Of course.
[07:22] <lifeless> jamesh: is there a preferred way to receive rabbit events in django ?
[07:25] <jamesh> lifeless: I don't think so.  We've been handling them in a Twisted reactor running as a separate thread
[07:25] <lifeless> aieeee
[07:26] <lifeless> jamesh: how have you been handing off back to django code? or are you calling it from deferToThread sort of things?
[07:26] <lifeless> bbiab
[07:27] <jamesh> lifeless: I haven't poked too deeply in this area, but I think we're usually pushing out messages from Django views rather than receiving them
[07:28] <jamesh> Django is not that well suited to long-poll style request handling, which is the main type of request I'd expect to want to receive messages
[07:29] <lifeless> jamesh: I want to add oopses to the django db as they happen
[07:29] <lifeless> jamesh: and write them to disk likewise
[07:30] <wgrant> I smell a daemon...
[07:30] <wgrant> Doing that from the WSGI app seems, er, aaaaaaa
[07:30] <lifeless> wgrant: we have one
[07:31] <lifeless> wgrant: doing that from outside the django transaction is also aaaaaa
[07:31] <wgrant> Huh?
[07:31] <StevenK> OMG, there's so much Team stuff in browser/person.py :-(
[07:31] <jamesh> lifeless: okay.  So I probably wouldn't try to squeeze that into a Django web app.  You could certainly use the Django ORM from a separate daemon that receives the messages.
[07:31] <wgrant> That would seem like the least insane way to go about things.
[07:32] <wgrant> Unless we're using SQLite, running it in a separate process should really be less than a problem.
[07:32] <StevenK> wgrant: I've moved the classes that caused the circular import, shall I explode the size of this branch and move everything that they depend on too?
[07:32] <jamesh> wgrant: why would sqlite be a problem?
[07:32] <wgrant> jamesh: SQLite doesn't do multiple writers, does it?
[07:33] <jamesh> wgrant: pretty sure it does.
[07:33] <lifeless> it does
[07:33] <jamesh> I'm sure it is possible to configure the locking out of it, but I'm pretty sure it is in by default
[07:33] <lifeless> but you need latest shiny
[07:33] <lifeless> and its still got a large lock even tuned optimally
[07:34] <lifeless> we can do a separate daemon, though I have an aesthetic dislike - I'd rather have an API on the one app and not poke into its backend
[07:34] <jamesh> I don't think you're in any worse situation by having two processes accessing the database than a single process accessing the database from multiple threads with multiple connection objects
[07:34] <lifeless> OTOH I don't want to make this a pile of yak shaving
[07:34] <lifeless> jamesh: we're using pgsql anyhow
[07:35] <lifeless> 27M oops reports would give even sqlite a bit of a hernia
[07:35] <lifeless> without -very- careful tuning
[07:35] <jamesh> lifeless: well, you can use your Django ORM classes outside of a web app.
[07:35] <jamesh> I'm not suggesting that you duplicate all the application logic
[07:35]  * StevenK prods wgrant.
[07:35] <lifeless> jamesh: sure, I know :)
[07:36] <lifeless> jamesh: like I said, its an aesthetic. We'd avoid a lot of issues in LP if we did that there, for instance.
[07:36] <wgrant> StevenK: Sorry, missed that. Could you possibly move it in a prereq?
[07:36]  * lifeless shrugs, we can start with a daemon and db access and switch to daemon + web api later
[07:37] <StevenK> wgrant: BLEH
[07:38] <jamesh> you'll just have to make sure your separate daemon process sets $DJANGO_SETTINGS_MODULE to something sensible before importing django
[07:54] <StevenK> wgrant: This pipe is already 1885 lines and I'm not finished yet.
[07:54] <wgrant> :D
[07:56] <StevenK> wgrant: Right, every {I,}Team class moved is 2006 lines.
[07:56] <StevenK> Now to fix __all__ and imports
[07:56] <StevenK> And configure.zcml
[07:58] <nigelb> StevenK: Nice cleaning :)
[07:59] <StevenK> OH GOD, IT BURNS
[08:01] <StevenK> PersonNavigation needs TeamMembershipSelfRenewalView, PersonView needs TeamJoinMixin and TeamOverviewMenu.
[08:01] <StevenK> circular imports a-go-go
[08:01] <StevenK> wgrant: ^
[08:04] <StevenK> Oh damn, and the Mixin is a parent class.
[08:04] <wgrant> Hah.
[08:04] <StevenK>  /wrists
[08:04] <wgrant> But why would PersonView need TeamJoinMixin?
[08:05] <wgrant> Oh no.
[08:05] <wgrant> I think PersonView might be used for teams as well.
[08:05] <bigjools> StevenK: surely your wrists are used to the strain
[08:05] <StevenK> wgrant: Looks like it.
[08:06] <wgrant> Ah, TeamIndexView
[08:06] <wgrant> Hopefully you can export TeamIndexView to browser.team, and take TeamJoinMixin over there.
[08:06] <StevenK> I've already moved it.
[08:06] <StevenK> I moved every {I,}Team class.
[08:07] <StevenK> Now I'm trying to make pyflakes happy
[08:07] <wgrant> Change TeamIndexView to inherit TeamJoinMixin, instead of PersonView inheriting it.
[08:07] <wgrant> Hopefully only the team views need it.
[08:09] <bigjools> StevenK: I mean from playing WoW of course... :)
[08:10] <StevenK> bigjools: I quit WoW 3 months ago.
[08:10] <bigjools> StevenK: good grief, are you feeling ok?
[08:12] <StevenK> And that is why I didn't tell many people.
[08:13] <bigjools> online games are like a drug addiction - I've gone cold turkey twice now
[08:15] <jamesh> lifeless: fwiw, the Django bug report about fixing the WSGIHandler to not need that fix is no longer in the "design decision needed" black hole
[08:15] <lifeless> jamesh: did it win or lose ?
[08:16] <jamesh> lifeless: https://code.djangoproject.com/ticket/16674 <- they moved it to accepted, and wanted more verification that the change wouldn't cause problems.
[08:16] <lifeless> \o/
[08:29] <StevenK> wgrant: pyflakes clean, 2287 lines
[08:34] <wgrant> StevenK: But does it run? :)
[08:34] <StevenK> No, not yet.
[08:35] <StevenK> Fighting with ZCML
[08:44] <StevenK> wgrant: I have a small subset of tests passing, 2477 lines.
[08:44] <wgrant> Heh.
[08:45] <StevenK> Let me toss me it at ec2 to find the rest.
[11:11] <poolie> stub, hi?
[11:11] <stub> yo
[11:11] <poolie> stub, can you suggest what to do on bug 866160?
[11:11] <poolie> sorry bug 866100
[11:11] <_mup_> Bug #866100: bug search with affects_me=on times out <affectsmetoo> <bugs> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/866100 >
[11:13] <stub> poolie: Need the OOPS to sync
[11:14] <poolie> hm and now it's not timing out
[11:14] <poolie> how uncooperative
[11:14] <nigelb> poolie: I think it times out on first try
[11:14] <nigelb> (and then caches)
[11:14] <poolie> that's likely
[11:14] <poolie> well, the oops will sync later
[11:14] <nigelb> It timed out once for me, refreshed later.
[11:16] <nigelb> I'm looking forward to 2 days of lp hacking \o/ Holidays!
[11:17] <poolie> :)
[11:19]  * gmb -> lunch
[11:20] <poolie> stub, i put an example failing query there, in case that helps
[11:20] <poolie> good night now
[11:20] <nigelb> g'nite poolie
[11:22] <stub> poolie: We don't know if that is the slow query. All we know is that it is the query being run when the timeout was hit.
[11:23] <poolie> that is true, but that's similar to the query that was sometimes very slow when run on qas and by losas on prod
[11:23] <poolie> anyhow no rush
[11:24] <stub> If it is, things to try are to move the BugTask.id IN () subquery using BugAffectsPerson into a normal join, or to enforce it is actually run as a subquery rather than the planner turning it into a normal join by using a WITH clause.
[11:25] <stub> I can reproduce with a simpler query on production.
[11:26] <stub> I don't think either of those options I mentioned will help greatly here
[11:31] <stub> We are ordering results using a field on Bug, but all the selection is going on in bugtask.
[11:34] <stub> Not sure what we can do here. We can optimize for the case where we know we will not match many BugTask rows, but if we wanted to do 'All bugs targetted to Launchpad, order by date_last_updated' it would likely fail.
[12:29] <bac> hi gmb, can i get a review when you have time?  i apologize it is way over our agreed size limit
[12:29] <gmb> bac: Sure. I should be able to take a look at it within the next hour or so.
[12:29] <bac> thanks gmb
[14:19] <deryck> abentley, hey, hey.  Sorry the vet visit toook *much* longer than I expected.
[14:19] <abentley> deryck: that's okay.
[14:19] <abentley> deryck: lemme grab my coffee, and we can chat.
[14:19] <deryck> abentley, let me just get settled in and we can chat briefly for a standup.
[14:20] <deryck> abentley, yeah, give me 10 minutes.
[14:21]  * beuno hands gmb bug #867529
[14:21] <_mup_> Bug #867529: Dynamic loading comments load on top of page content <Launchpad itself:New> < https://launchpad.net/bugs/867529 >
[14:29] <deryck> abentley, heading into mumble now.
[14:30] <gmb> beuno: Thanks
[14:32] <rvba> gmb: Would you have time to mentor a review of mine?
[14:33] <gmb> rvba: I've got a large review to do for bac first, so you might be better served finding another reviewer to mentor you on this one.
[14:34] <rvba> gmb: Okay ;)
[14:59] <sinzui> gmb, do you have time to review https://code.launchpad.net/~sinzui/launchpad/dsp-historic-attributes/+merge/78106
[14:59] <gmb> sinzui: I'm currently reviewing a large branch for bac, but I'll try to get to it this afternoon if I have time.
[15:01]  * bac hangs head
[15:05] <sinzui> oh. damn. I should of claimed that this morning because I read half of it
[15:06] <sinzui> jcsackett, do you have time to mumble?
[16:11] <deryck> skaet, ping
[16:11] <skaet> deryck, pong
[16:11] <gmb> sinzui: I'm afraid I won't be able to get to your branch today as I have to get a few other things done before my rapidly-approaching EoD. I believe StevenK is next on the list of reviewers.
[16:11] <sinzui> thanks
[16:12] <deryck> skaet, I'm trying to QA bug 834082.  Can you try poking the issue you reported at our qastaging server and see if it's fixed for you?
[16:12] <_mup_> Bug #834082: Cannot target a bug to a series from an existing series task <critical-analysis> <qa-needstesting> <regression> <Launchpad itself:Fix Committed by deryck> <Ubuntu:New> < https://launchpad.net/bugs/834082 >
[16:12] <gmb> bac: r=me (with comments). Excellent work, thank you.
[16:12] <bac> thanks gmb
[16:12]  * bac didn't do most of it, of course
[16:13] <skaet> deryck, will try.
[16:13] <deryck> skaet, thanks!  Here's a starting point, if you're not familiar with qastaging:  https://bugs.qastaging.launchpad.net/ubuntu/oneiric/+bugs
[16:14] <deryck> skaet, qastaging can timeout so it's worth a reload or two if you hit a timeout.
[16:18]  * skaet gets the timeouts....
[16:19] <deryck> skaet, do you even get to a bug page?
[16:19] <skaet> deryck,  get the bugs in oneiric page from the link you gave just fine.   However not being able to get to 834082
[16:19] <deryck> ah, that sucks.
[16:21] <deryck> skaet, will another bug work?
[16:22] <skaet> deryck,  can you give me a link to that bug page directly?   May be faster than searching.
[16:23] <deryck> skaet, https://bugs.qastaging.launchpad.net/launchpad/+bug/834082
[16:23] <_mup_> Bug #834082: Cannot target a bug to a series from an existing series task <critical-analysis> <qa-needstesting> <regression> <Launchpad itself:Fix Committed by deryck> <Ubuntu:New> < https://launchpad.net/bugs/834082 >
[16:26] <skaet> deryck, that got it.    will poke around.
[16:26] <deryck> skaet, thanks!
[17:02] <jcsackett> sinzui: available to talk for a few?
[17:02] <sinzui> okay
[17:25] <gmb>  e
[17:26]  * gmb chuckles at rockstar's response to https://bugs.launchpad.net/launchpad/+bug/867661.
[17:26] <_mup_> Bug #867661: Useless Comments on Bug Reports <Launchpad itself:Opinion> < https://launchpad.net/bugs/867661 >
[17:26] <rockstar> gmb, he left it open.
[17:27] <gmb> rockstar: Oh, indeed. In fact, I was half tempted to reply in the same vein until I saw you'd beat me to the punch :)
[17:32] <sinzui> jcsackett, https://bugs.launchpad.net/launchpad/+bug/867718
[17:32] <_mup_> Bug #867718: DSP picker entries are redundant <target-picker> <ui> <Launchpad itself:Triaged by sinzui> < https://launchpad.net/bugs/867718 >
[17:33] <deryck> skaet, any luck checking that out?
[17:38] <sinzui>  I see txlongpoll is taking 8% of my CPU all the time. That does not bode well. Nothing should preform worse than xorg
[17:47] <skaet> deryck, got pulled into release issues while still trying,  will take a pass at it later this afternoon.
[17:48] <deryck> skaet, ok, no problem.  Thanks!
[19:42] <abentley> gary_poster: bzrlib.branch.Branch* is never security-proxied, but LoomBranch* is security-proxied.  I think they should be the same, but I've had trouble figuring out why bzrlib.branch.Branch isn't security-proxied.
[19:44] <gary_poster> abentley, mwhudson put in some code for that in lib/lp_sitecustomize.  I suspect that's what you are looking for.  Look for dont_wrap_class_and_subclasses in that module, and its uses.
[19:44] <abentley> gary_poster: thanks.
[19:44] <gary_poster> welcome
[19:50] <mwhudson> oh yes, that fun
[19:57] <mwhudson> oh dear, my ec2 failure mail is so large emacs crashes opening it
[20:05] <abentley> gary_poster, mwhudson: my fix: http://pastebin.ubuntu.com/702418/
[20:06] <gary_poster> abentley, interesting.  Comments make it good AFAI am concerned.
[20:06] <mwhudson> abentley: i wonder if moving the code that sets up BZR_PLUGIN_PATH to lp_sitecustomize might be better in some ways?
[20:06]  * gary_poster defers to mwhudson :-)
[20:06] <mwhudson> then there are a few random imports of lp.codehosting that can just go away
[20:06] <mwhudson> gary_poster: i haven't thought about it very hard!
[20:07] <gary_poster> :-)
[20:07] <abentley> mwhudson: I think I was on crack to make an import have side effects like enabling plugins.
[20:08] <mwhudson> abentley: i think this crack predates you on the lp team doesn't it?  but yes
[20:09] <mwhudson> there is a slight argument that say, the appservers, should not import lp.codehosting at all and so won't have plugins enabled
[20:09] <mwhudson> but if that's the way we want to go, they should be separate code bases (hi rob!)
[20:11] <abentley> mwhudson: No, it was basically the first thing I did on the team.
[20:11] <mwhudson> ah ok
[20:12] <abentley> mwhudson: as long as the appservers are the private xmlrpc servers, they need to support loom branches.
[20:13] <mwhudson> err how so?>
[20:14] <abentley> mwhudson: Oh, I guess they operate at a lower level, providing transports, so they don't actually need to know about branch formats.
[20:14] <mwhudson> yeah, just paths on disk
[20:15] <mwhudson> so my ec2 test run appears to have failed, basically because the db started erroring all the time about half way through
[20:17] <mwhudson> ah, it's hard_timeout checking
[20:27]  * jelmer waves to abentley, mwhudson
[20:27]  * abentley waves at jelmer
[20:27]  * mwhudson waves back
[20:27] <mwhudson> oh god everything is broken
[20:41] <mwhudson> # XXX Julian 2009-05-13, bug=376171
[20:41] <mwhudson> # Temporarily disabled because of intermittent failures.
[20:41] <mwhudson> 2.5 years of temporary
[20:42] <jelmer> mwhudson: 2.5 years is nothing compared to what the early Launchpad and Ubuntu specs planned to do in a single cycle
[20:42] <mwhudson> haha true
[20:43] <mwhudson> launchpad.canonical.com from about 2006 should be put online as a kind of massive example of how not to do project management
[20:46] <jelmer> heh
[20:46] <jelmer> http://web.archive.org/web/20060611133645/https://launchpad.net/
[20:48] <mwhudson> ploooooooooooooone!
[20:48] <mwhudson> or at least, it's css
[20:49] <jelmer> heh, indeed
[21:26] <lifeless> mwhudson: yeah there is a little bootstrap issue with hard timeouts
[21:27] <lifeless> mwhudson: will be if/when we make soft ones flagged too
[21:27] <lifeless> mwhudson: mmm, perhaps not. Anyhow, hard for sure
[21:27] <mwhudson> lifeless: yeah, the permit_timeout_from_features flag is now on the request too in my branch
[21:28] <mwhudson> lifeless: it's not reliably reset between tests in devel currently, so if it gets set (say by a test publication) and a test runs that sets up a feature controller before it gets reset... hilarity ensues
[21:29] <lifeless> mwhudson: win
[21:29] <mwhudson> (and one of the parts of my branch that i'm not 100% sure about is that a lot more tests set up a feature controller now)
[21:29] <lifeless> so you asked yesterday about null feature controller and ltr
[21:30] <lifeless> IIRC LTR is used in layers that don't have all the bits assembled, was the reason.
[21:32] <mwhudson> yeah, that makes some kind of sense
[21:32] <mwhudson> but i bet those tests don't actually access the feature controller
[21:32] <mwhudson> (bit fragile of course)
[21:32] <lifeless> you'll find out, or go mad trying.
[21:32] <lifeless> I'm betting on mad.
[21:33] <mwhudson> i'm hoping ec2 test will find out :-)
[21:33]  * mwhudson might actually claim for his ec2 expenses this month...
[21:34] <lifeless> if its more than the cost of doing expense claims ? :)
[23:37] <lifeless> flacoste: http://h30565.www3.hp.com/t5/Feature-Articles/Innovate-or-Suffer-Slow-Brain-Asphyxiation/ba-p/499 is good reading
[23:55] <mwhudson> haha, if you wiggle things around so that feature flags are active most of the time, a few sql effort tests fail