[11:07] <rick_h> morning
[11:25] <bac> hi rick_h
[11:25] <bac> i suspect it may be very quiet here today
[11:30] <rick_h> bac: yea, probably.
[11:30] <rick_h> it was pretty darn quiet friday
[11:30] <rick_h> almost eerily so
[11:43] <rick_h> bac: are you running on precise? I'm still trying to figure out the way around my rabbitmq setup issues I replied to the -dev list about on friday
[11:51] <nigelb> Morning rick_h & bac :)
[11:51] <bac> good evening nigelb
[11:52] <bac> rick_h: i am.  didn't see your email.  but i haven't run the test suite locally in a while
[11:52] <rick_h> bac: I'm working on getting rocketfuel setup past this point
[12:31] <StevenK> bac: O hai. You can remove the EC2 image with id 521.
[12:31] <bac> StevenK: okay, thanks
[13:42] <rick_h> wgrant: any word on the rabbitmq dep stuff that breaks in precise? Stupid me did a fresh install and can't get rf-setup past that
[13:43] <wgrant> rick_h: Ah, indeed, I should fix that. For now I'd just suggest manually installing the old rabbitmq-server and rabbitmq-erlang-client, which will let the other plugins install.
[13:43] <rick_h> wgrant: ok, thanks
[18:05] <jcsackett> sinzui, you around?
[19:24] <lifeless> sinzui: how does registry admins end up assigned? Is it person deletions ?
[19:24] <sinzui> lifeless, yes
[19:25] <sinzui> We I think some linaro teams got deleted
[19:26]  * sinzui needs to see if ~registry now owns linaro projects
[19:28] <lifeless> sinzui: would it be reasonable for the delete code to unassign and unsubscribe?
[19:28] <sinzui> yes. I already reported that bug suggesting that as the solution to the problem
[19:29] <sinzui> bug #613603
[19:29] <_mup_> Bug #613603: team merge subscribes/assigns bugs to ~registry <lp-registry> <merge-deactivate> <Launchpad itself:Triaged> < https://launchpad.net/bugs/613603 >
[19:30] <lifeless> cool cool
[19:31] <lifeless> btw those bug numbers are -old-, way before linaro
[19:31] <lifeless> hwenablement or something
[19:32] <sinzui> yes, but the bugs and branches I unsubscribed ~registry mentioned linaro from the maverick period
[19:32] <lifeless> interesting
[19:32] <lifeless> shrug, no matter; I'm glad you cleaned it up
[19:32] <lifeless> thank you
[19:33] <sinzui> I am always happy to stop email arriving to my inbox
[19:33] <sinzui> particularly this week. I am using my backup computer and I think some mail and calendar settings are 6 months too old
[19:36] <timrc> Speaking of registry, I'm imbued with its magical powers,  but have yet to receive my wizard's hat
[19:39] <sinzui> timrc, I think ~registry conveys more responsibility than power. You have some extra moderation powers to work with projects and teams, but it means you are on call to fix data that stop other users from serving themselves
[19:53] <timrc> more responsibility than power sounds a lot like parenting... bummer :)
[20:05] <abentley> deryck: Could you please review https://code.launchpad.net/~abentley/launchpad/celery-everywhere-2/+merge/101284 ?
[20:05] <deryck> abentley, sure
[20:18] <lifeless> abentley: I have a new job in a local branch; do I need to change anything in it to work with celery ?
[20:18] <lifeless> abentley: s/do I/is it likely that I/
[20:19] <abentley> lifeless: Yes, you need to provide a "config" member that points to the config section for that job type, so that we can determine the dbuser.
[20:19] <abentley> lifeless: does the job access branches?
[20:19] <lifeless> abentley: no
[20:20] <lifeless> abentley: its a stub implementation of the notification API, I wanted a low-key way to check that the API is completish
[20:22] <abentley> lifeless: If it's not derived from BranchJobDerived, there's extra work needed so that LP can look its class up by Job.id
[20:22] <abentley> lifeless: I'm working on supporting BranchMergeProposalJobDerived right now, actually.
[20:23] <lifeless> abentley: ok. the job I have is super simple; its just got a single job type in its table
[20:24] <lifeless> abentley: I wouldn't care if it has to be run non-celery in fact, as it should only exist long enough to validate stuff and bring up the external service.
[20:24] <lifeless> abentley: but OTOH I don't want to hold back the cleanup of dead code
[20:26] <abentley> lifeless: Okay, I wouldn't worry about it, then.
[20:26] <lifeless> cool, thanhks.
[20:30] <kirkland> is anyone around who can help me with a private/commercial launchpad project?
[20:31] <lifeless> perhaps
[20:31] <lifeless> !ask :P
[20:33] <deryck> abentley, r=me. nice work.
[20:33] <kirkland> lifeless: I have registered a new private/commercial project last week and I'm trying to get the bit flipped to make the code hosting private
[20:33] <abentley> deryck: cool, thanks.
[20:33] <kirkland> lifeless: normally, I ask flacoste to do that, but I think he must be away on holiday or something
[20:34] <lifeless> did you do the entitlement registration thingy?
[20:34] <kirkland> lifeless: yepper
[20:35] <kirkland> lifeless: but my trunk is publicly visible
[20:35] <lifeless> ok, let me hook you up with a -ops
[20:35] <kirkland> lifeless: okey
[20:36] <lifeless> kirkland: you should be pm'd in a sec by thedac
[20:36] <kirkland> lifeless: kthx
[20:41] <abentley> deryck: I'd like to retrieve the BranchMergeProposalJob where BranchMergeProposalJob.job = x OR the BranchJob where BranchJob.job = x.  Do you know how to do that with a single SQL statement?
[20:42] <lifeless> abentley: they are different tables?
[20:42] <abentley> lifeless: Yes.
[20:43] <lifeless> abentley: if so you need to find (BranchMergeProposalJob, BranchJob) where BranchMergeProposalJob.job = x and BranchJob.job is NULL or BranchJob.job = x and BranchMergeProposalJob.job is NULL
[20:43] <lifeless> (because its a cross join by default)
[20:43] <lifeless> abentley: and then in your code check for which object is NULL
[20:44] <lifeless> abentley: (this won't scale all that gracefully to many job types)
[20:44] <abentley> lifeless: Cool, thanks.
[20:45] <lifeless> hmm, you might be able to say BranchMergeProposalJob.job is not distinct from x OR BranchJob.job is not distinct from x
[20:45] <abentley> lifeless: but I guess I can generate it programmatically from a list of job types?
[20:45] <lifeless> you'd want to test that
[20:45] <lifeless> abentley: possibly; I'd worry a little that it will slow down as you start getting hundreds of columns returned
[20:45] <lifeless> s/little/lot/
[20:46] <abentley> Why hundreds?
[20:46] <lifeless> most sql queries bring back a few dozen columns at most
[20:47] <lifeless> but each type in the storm query will be at least 2 columns (id, metadata), and more depending on the job's FK's.
[20:48] <lifeless> things outside the common case are often slower, so I'd be worrying because we'd be doing something rather unusual.
[20:48] <abentley> lifeless: I doubt there are more than 10 job types.
[20:49] <abentley> lifeless: Most of our "types" are actually BranchJob + a distinguishing job_type attribute, rather than distinct tables.
[20:49] <abentley> lifeless: Or similar for merge proposal jobs, etc.
[20:49] <lifeless> yah
[20:49] <lifeless> well, its something to note I think
[20:50] <lifeless> we're reconstructing data other parts of the system had, with a lookup pattern its not tuned for; thats something to at minimum put on the known defects pile
[20:51] <lifeless> address it is obviously not urgent, nor even necessary at this stage
[20:52] <abentley> lifeless: Fair enough.  I had assumed that such a lookup pattern would not be a problem.
[20:55] <abentley> lifeless: ISTM that since Job.id is a common field in all our job types, it would be elegant to be able to look things up by Job.id.
[20:56] <abentley> lifeless: if that actually is a problem, we could use a tuple of table and id to look up Jobs.
[20:56] <lifeless> the problem is the schema; consider bugtask, which acts as an intermediary between bug and product/productseries/distro/distroseries
[20:56] <lifeless> we have the FK of the related object in bugtask
[20:57] <lifeless> so only ever have to do one index walk to find the other object for a given bugtask
[20:57] <lifeless> abentley: if you could do that, it would be better I think
[20:57] <lifeless> (that == tuple of table+id)
[21:02] <abentley> lifeless: We were going to go with a design inspired by your earlier suggestions, in that the job-running code was not even aware that the jobs were coming from a database.
[21:03] <abentley> lifeless: Including the table name as a parameter is going to mar that a bit, but maybe not too much.
[21:04] <abentley> lifeless: I'll chat with adeuring about how to adjust our approach.
[21:04] <lifeless> ah, I see
[21:05] <lifeless> I think if the job running code gets something opaque and hands it to a factory, and gets back a job, it shouldn't expose the db'ness of of it all
[21:06] <abentley> lifeless: We've been printing the ID, and assuming it is short and integery.
[22:43] <lifeless> pop quiz, does simple sendmail handle unicode values in headers (E.g. from, subject) appropriately ?
[22:53] <maxb> I'd be surprised if it did, it seems like it ought to be the submitting program's job to produce a valid MIME message
[22:54] <lifeless> maxb: simple_sendmail is an internal API in the lp source tree
[22:54] <maxb> ah. The _ clarifies much