[00:00] <mwhudson> i guess i should file a bug
[00:00] <thumper> please
[00:00] <wgrant> That test probably also deserves a bug.
[00:00] <wgrant> Although it will be less important with the new zope.testing, I guess.
[00:01] <mwhudson> wgrant: yeah, i guess so
[00:01] <mwhudson> i'm surprised and a bit scared if "browser.open('http://launchpad/dev')" commits to the db though
[00:02] <thumper> mwhudson: bonus points for making a glob function that provides a launchpadlib object
[00:02] <thumper> mwhudson: and if there is no user passed in, make one
[00:03] <mwhudson> thumper: that sounds a little bit difficult because you have to create an oauth token
[00:03] <thumper> mwhudson: there is a function for that
[00:03]  * thumper looks for it
[00:04] <wgrant> mwhudson: It will at least commit to update the session time.
[00:04] <wgrant> Although I guess that's on a different DB.
[00:04] <wgrant> And maybe it doesn't go through the real session machinery anyway.
[00:04] <mwhudson> wgrant: if it's that sort of thing then i'm going to be even more angry i guess
[00:06] <thumper> mwhudson:  webservice_for_person has most of what you need
[00:07]  * thumper remembers writing that
[00:07] <mwhudson> ah
[00:07] <mwhudson> a not-surprising coincidence
[00:07] <wgrant> mwhudson: What was the diff you used to get the pagetests to fail?
[00:09] <mwhudson> wgrant: i think i pasted the diff didn't it?
[00:09] <mwhudson> i'd have to read my logs to find it now...
[00:09] <wgrant> Oh, just a browser.open?
[00:10] <mwhudson> yep
[00:11] <thumper> oh FFS
[00:11] <thumper> make fails
[00:11] <thumper> ImportError: No module named collection
[00:11] <thumper> I have updated everything and did a make clean
[00:11] <thumper> any ideas?
[00:11] <wgrant> collection isn't in 2.5!
[00:12] <mwhudson> wgrant: yes it is?
[00:12] <wgrant> Who's trying to import it?
[00:12] <thumper> /lib/lp/bugs/configure.zcml", line 935.4
[00:12] <wgrant> Oh, right, collections.
[00:13] <mwhudson> oh
[00:13] <mwhudson> "collection" sounds wrong
[00:13] <wgrant> mwhudson: So, yeah, that browser.open() commits a couple of times across each database.
[00:13] <mwhudson> wgrant: AWESOME
[00:13] <wgrant> So that is indeed the problem.
[00:13] <wgrant> If that test commits at all, the second testTearDown attempts to destroy the non-existent DB.
[00:14] <mwhudson> thumper:    <class class="lp.bugs.model.bugheat.CalculateBugHeatJob"> ?
[00:14] <thumper> i'm looking
[00:14] <mwhudson> wgrant: do you want to follow up to my mail saying as much
[00:14] <thumper> can't find the import yet
[00:15] <wgrant> mwhudson: Will do.
[00:15] <thumper> hahah
[00:15] <thumper> pebkac
[00:18] <thumper> 'twas me
[00:18] <thumper> from collection import defaultdict
[00:18] <mwhudson> ah good
[00:22] <wgrant> (I think I was probably thinking of collections.defaultdict, which wasn't in *2.4*.)
[00:26] <thumper> wgrant: correct
[00:45] <thumper> mwhudson: want to review a branch that renames thumper -> dumper?
[00:46] <thumper> mwhudson: I'm sick of not having make-lp-user work for me
[00:46] <mwhudson> thumper: :-)
[00:46] <mwhudson> thumper: ok
[00:48]  * thumper waits for the scanner
[00:58]  * mwhudson lunches
[01:19] <james_w> ok, there is now https://code.edge.launchpad.net/~james-w/launchpad/new-code-import-method-on-branchtarget/+merge/22190
[01:19] <james_w> and https://code.edge.launchpad.net/~james-w/launchpad/code-imports-for-source-packages/+merge/22191
[02:14] <thumper> mwhudson: can you go 'make run_codehosting' and push a branch to lp://dev/ using devel?
[02:14] <thumper> mwhudson: I can't
[02:14] <thumper> bzr: ERROR: Connection error: while sending POST /bazaar/: [Errno 111] Connection refused
[02:15] <mwhudson> thumper: err, usually yes
[02:15] <mwhudson> i usually use the key in the sample data, so i may not have done it in a while
[02:15] <mwhudson> thumper: is the app server actually running?
[02:18] <thumper> mwhudson: as far as I can tell
[02:18] <thumper> ah, I bet I need to make install and apache isn't working
[02:18]  * thumper looks a bit
[02:19] <thumper> I've not tried it in lucid yet
[02:20] <mwhudson> that might do it, i guess
[02:20] <wgrant> How's the EC2 run looking?
[02:21] <thumper> yep, sudo make install fixed it
[02:25] <mwhudson> wgrant: lib/lp/registry/tests/../stories/product/xx-product-add.txt failed
[02:25] <mwhudson> that's it so far though
[02:25] <wgrant> OK.
[02:31] <thumper> ah fuck
[02:31] <thumper> I thought I had broken something
[02:32] <thumper> but it is just the make-dummy-branches
[02:32] <thumper> if you have pushed code, and restart codehosting, it blows away your pushed branches
[02:32] <thumper> but of a fubar there
[02:38] <wgrant> thumper: Oh, I thought that was a feature.
[02:38] <thumper> wgrant: nope
[02:38] <wgrant> It pisses me off immensely when testing recipe builds.
[02:38] <spm> argh. ok. who broke pygpgme. <== grumpy losa venting and hence ignorable
[02:39] <wgrant> spm: Lucid?
[02:39] <spm> looks like a branch upgrade actually
[02:39] <mwhudson> spm: or jelmer
[02:39]  * spm hunts for the bug we raised on jelmer hisself ;-)
[02:42] <thumper> mwhudson: do you remember what to import in scripts to get around the circurlar import madness?
[02:43] <mwhudson> thumper: uh, i think there's more than once source of the madness
[02:43] <thumper> it is mildly insane, but import canonical.launchpad.interfaces before anything else makes it run :(
[02:45] <thumper> is there a way I can just reapply database/schema/security.cfg without make schema?
[02:46] <wgrant> database/schema/security.py
[02:46] <wgrant> Will apply to launchpad_dev by default.
[02:48] <thumper> ta
[02:52]  * mwhudson gives some consideration to warsaw's law
[02:52] <spm> :-)
[02:54] <wgrant> The second law?
[02:55] <mwhudson> the one about fridays
[02:55] <wgrant> Yeah, the second.
[02:56] <mwhudson> yes, then
[02:58]  * thumper is having a WTF moment
[03:06]  * thumper is confused
[03:06]  * thumper uses pdb
[03:07] <thumper> huh?!?!?
[03:07]  * thumper can only guess at stale pyc files
[03:07] <thumper> doesn't make clean clear pyc files?
[03:09] <thumper> ARGH!!!!
[03:09] <thumper> PEBKAC again!
[03:09] <thumper> it must be friday
[03:09]  * sidnei hands some band-aid over for thumper's forehead
[03:10] <thumper> must be time for a cocktail
[03:10] <thumper> why isn't the email being delivered I wonder...
[03:15] <thumper> ah crap
[03:15] <spm> thumper: time for a cocktail? it's after 9am over there eh?
[03:15] <thumper> somewhere there is a setting saying that scripts don't send email
[03:15] <thumper> spm: it has been one of those days (or weeks) where things take longer than expected, and you don't get as much done as you expect
[03:16] <spm> thumper: ahhh! so you've become a losa eh? sweet!
[03:17] <wgrant> thumper: Zopeless emails do not go anywhere in devmode. config.zopeless.send_email
[03:17] <thumper> wgrant: so how am I supposed to test this damn script eh?
[03:17] <thumper> arse
[03:17] <thumper> also, why don't they go anywhere?
[03:18] <wgrant> thumper: Because there's no mail utility, so it uses raw SMTP.
[03:18] <thumper> they should go the same place that the app server emails go
[03:18] <wgrant> Which is very dangerous, since it can send email to ANYWHERE IN THE WORLD.
[03:18] <thumper> wgrant: there is a mail utility in the scripts
[03:18] <thumper> has been for ages
[03:18] <wgrant> Although it could just override the destination address to root@localhost anyway, i guess.
[03:18] <wgrant> Not the full Zope queued delivery mail utility.
[03:18] <thumper> wgrant: yes, the same as the app server
[03:19] <thumper> well, that is a problem for another day
[03:22]  * thumper tries something
[03:27] <thumper> wgrant: http://pastebin.ubuntu.com/401551/ works
[03:27] <thumper> wgrant: sends email to root@localhost
[03:27] <thumper> wgrant: please excuse the commenting out :)
[03:28] <thumper> wgrant: actually this is easier to read http://pastebin.ubuntu.com/401552/
[03:29] <wgrant> thumper: So raw_sendmail obeys the destination override?
[03:30] <thumper> yes
[03:30]  * thumper commits that into his branch
[03:30] <wgrant> Convenient.
[03:30] <thumper> bzr commit -m "Zopeless is no longer really zopeless, and to test the local email sending, we want this.  Scripts now send email in the dev environment to root@localhost just like the app server" lib/lp/services/mail/sendmail.py
[03:30] <thumper> that's what it says
[03:46] <mwhudson> wgrant: yay that was the only failure
[03:47] <wgrant> mwhudson: Excellent!
[03:49] <thumper> mwhudson, wgrant: how long does canonical.testing.layers.ZopelessAppServerLayer take to start up for you?
[03:49] <thumper> it seems to be taking ages for me
[03:49] <thumper> perhaps blocking completely
[03:49] <thumper> bin/test.py -vvt TestCodeHandler
[03:50] <wgrant> Took 12 seconds here.
[03:51] <thumper> hmm. not starting here
[03:51] <mwhudson> ~same here
[03:51] <thumper> I noticed that my make run didn't kie
[03:51] <thumper> die
[03:51] <thumper> killed it
[03:51] <thumper> trying again
[03:52] <thumper> ha ha 11 seconds
[03:52] <thumper> going now
[03:52] <thumper> thanks anyway
[04:06] <mwhudson> thumper: still here?
[04:06] <thumper> mwhudson: just
[04:07] <thumper> whazzup?
[04:07] <mwhudson> thumper: https://code.edge.launchpad.net/~mwhudson/launchpad/aiee-everything-is-broken/+merge/22185 will update in a couple of ticks, can you take a look?
[04:07] <thumper> yep
[04:10]  * thumper waits for the diff
[04:10] <mwhudson> grr still not updated
[04:10] <lifeless> perhaps its broken
[04:10] <lifeless> :P
[04:10] <mwhudson> thumper: http://pastebin.ubuntu.com/401568/
[04:11] <mwhudson> or someone's prosed merge mysql 5 into mysql 6 or something
[04:13] <thumper> mwhudson: done
[04:13] <thumper> mwhudson: I'm heading out now
[04:13]  * thumper EODs
[04:13] <mwhudson> thumper: thanks
[04:16]  * mwhudson shoves the branch in the direction of ec2
[04:53] <NCommander> WHat's the correct way to get the db username and password when working with Storm to access LP's database?
[04:53]  * NCommander wants to start work on the converter
[04:56] <wgrant> NCommander: You don't do that manually. You should probably use the normal script infrastructure which sets Zope and Storm up for you.
[04:56] <NCommander> wgrant: oh, which script is good for an example?
[04:57] <wgrant> NCommander: utilities/soyuz-sampledata-setup.py is one I know well.
[04:57] <wgrant>     execute_zcml_for_scripts()
[04:57] <wgrant>     txn = initZopeless(dbuser='launchpad')
[04:57] <wgrant> Those are the critical lines.
[04:58] <wgrant> You can then use the IStoreSelector utility to get your store.
[04:58] <NCommander> wgrant: cool, thanks. I'm probably going to have a ton more questions in the future
[04:58] <wgrant> s/questions/sleep/
[07:29] <maxb> eww. A javascript alert box on ajax-changing ubuntu bug status?!
[07:29] <wgrant> Yes :(
[07:29] <wgrant> For anybody who is not a bug supervisor or owner.
[07:29] <wgrant> It is crack.
[07:29] <wgrant> Both because of the rules and because it's AN ALERT()!
[07:30] <maxb> eww
[07:30] <maxb> That needs an opt-out
[07:31] <maxb> Or I shall have to learn greasemonkey
[07:31] <wgrant> It does.
[07:31]  * maxb wonders who signed off a UI review on an alert() :-)
[07:32] <wgrant> The excuse was that there wasn't time.
[07:32] <wgrant> The excuse for that was also that there wasn't enough time.
[08:48] <wgrant> noodles775: Is there any timeline for the work to extract application information from PPA builds?
[08:50] <noodles775> wgrant: I'm not sure what you mean by "extract application information"?
[08:51] <wgrant> noodles775: soyuz is meant to eventually extract .desktop files and icons, and publish them for Software Centre to use.
[08:51] <wgrant> It seems like it would make the PPA binary listing a lot less problematic.
[08:52] <noodles775> wgrant: yeah, totally (long-term goal). No, I'm not certain what the timeline is for doing that, but I expect we'll find out at UDS.
[09:04] <BjornT> gmb, allenap: if you have some time, i think it would be a good exercise rewriting TestBugWatchScheduler not do do any commits. also, why is LaunchpadFunctionalLayer used?
[09:08] <stub> wgrant, NCommander: IStore(Account), IMasterStore(Account) or ISlaveStore(Account) is the preferred spelling now over using IStoreSelector directly. This will give you the store where the Account objects are stored, and will keep working if things get moved around (probably YAGNI, but the spelling is nicer anyway).
[09:09] <wgrant> stub: I keep forgetting about that, since it's used in so few places.
[09:09] <wgrant> But it is much nicer.
[09:10] <gmb> BjornT: Sure, we'll do that if we get time; LPFL is a copy-paste error, so we'll fix that too.
[09:11] <stub> So launchpad-dependencies no longer installs for me. It seems to want python2.5-apt and I can't find that. Any clues?
[09:11] <BjornT> gmb: cool. another question. in what way does this fit into the "Database garbage collector"? it doesn't seem to collect any garbage?
[09:11] <wgrant> stub: the PPA needs updating.
[09:12] <wgrant> stub: Force the installation of python-apt IFORGETTHISBITubuntu2launchpad1
[09:12] <gmb> BjornT: It doesn't. However, basic advice in the past has been to include things like this (and BugHeatUpdater, which doesn't garbage collect either) as part of garbo because we get the benefits of some built in testing (with test_garbo.py). Also, managing DB permissions is slightly less troublesome.
[09:14] <BjornT> gmb: it sounds a bit dangerous, unless we redefine what garbo is supposed to do. in the past garbo has been broken, and not been running for a while. this is acceptable for garbage collection, but is it acceptable for bug watch updating?
[09:14] <gmb> BjornT: Hmm. Good point. No, it isn't; if it breaks then bug watches stop getting updated.
[09:14] <gmb> BjornT: I'll prepare a branch to put the scheduler in a separate cronscript.
[09:14] <stub> I thought I fixed garbo so if one task fails it keeps going?
[09:15] <gmb> Oh.
[09:15] <stub> Even has timeouts so if one task takes too long it is aborted and the others allowed to continue.
[09:16] <mrevell> Morning
[09:16] <gmb> stub, BjornT: Ah. So in that case I'd say it *is* an acceptible place to put it, though it doesn't fit under the garbage-collecting umbrella.
[09:16] <BjornT> stub: could be, i don't know. it still seems a bit dangerous to do a bunch of important things in one script. especially from a scalability point of view.
[09:17] <stub> Its more than garbage.
[09:17] <stub> The goal with garbo was to stop the proliferation of all those little cronscripts.
[09:20] <stub> I personally would rather see scalability type fixes made if/when they become a problem than worry about the deployment issues
[09:20] <BjornT> stub: i wonder, could this somehow be combined with the job system? they seem quite similar.
[09:21] <stub> (more cron emails to monitor, more crontab entries, more script monitoring, more database users + permissions)
[09:21] <stub> BjornT: You could replace garbo-daily.py and garbo-hourly.py with garbo.py which runs regularly, pulling scheduled jobs.
[09:22] <allenap> stub, BjornT: But then we'd need a garbo job to put jobs into the job system to be run.
[09:22] <stub> At the moment, that is probably overkill. We also don't have to deal with long running nightly jobs blocking hourly jobs.
[09:23] <stub> allenap: And some turtles for it to stand on
[09:23] <allenap> :)
[09:26] <BjornT> stub: ok. we'll see what we'll do. you've just volunteered to document what garbo does and is supposed to be used for, since you might be the only one that knows enough about it :) (more on that later)
[09:26] <stub> The other gain we get with garbo is jobs are serialized. We end up with unnecessary load spikes whenever hourly or nightly jobs fire off at the same time - with -hourly and -daily we get a very primative scheduler, which so far has been 'good enough'
[09:26] <stub> BjornT: Stick it on my kanban board if you want :)
[09:51] <wgrant> bigjools: Did that firewall fix end up happening?
[09:57] <bigjools> wgrant: yes, gonna test it RSN
[09:57] <wgrant> bigjools: Excellent.
[09:57] <wgrant> We might finally get it done... 2 months after the plan.
[09:58] <bigjools> well the UI work is still in progress
[09:58] <bigjools> that's the last piece of the puzzle
[09:58] <gmb> Does anyone know where mwh got to with his branch to combat the test-suite horrorshow?
[09:58] <wgrant> gmb: The one where 7000 tests dropped off the face of the earth?
[09:59] <wgrant> It was shoved into EC2 around 5 hours ago.
[09:59] <wgrant> With the known failures fixed.
[09:59] <wgrant> Er, nearly 6 hours ago, now.
[09:59] <gmb> wgrant: Ah. Just long enough for me to start to worry that it's failed...
[09:59] <wgrant> Yes...
[10:00] <wgrant> Although it had just one failure when it was run a couple of hours earlier, and that failure is fixed.
[10:00] <gmb> Hrm.
 So launchpad-dependencies no longer installs for me. It seems to want python2.5-apt and I can't find that. Any clues?
[10:01] <maxb> I uploaded the new source 10 hours ago, the amd64 build is still pending, "Start in 8 hours"
[10:01] <maxb> A buildd admin could make it jump the queue O:-)
[10:01] <wgrant> maxb: Better than the 30 hour queue yesterday..
[10:03] <maxb> I wonder if it's worth someone liasing with the owners of the hugest daily build PPAs to get them to skip a few days when the buildfarm is borrowed
[10:04] <wgrant> The problem should go away once builder pools appear.
[10:04] <wgrant> Which is probably RSN.
[10:10] <maxb> how is that going to help the current problem, which is just a shortage of builders across all architectures?
[10:10] <wgrant> maxb: Not architecture pooling Daily builds will be restricted to a set of dedicated builders.
[10:11] <maxb> ah
[10:18] <bigjools> I'm working on designing builder pools right now :)
[10:18] <bigjools> will put it out for comment in due course
[10:35] <bigjools> wgrant: 2010-03-26 10:34:38 DEBUG   hello: (source) NEW
[10:35] <bigjools> \o/
[10:36] <wgrant> bigjools: Nice!
[10:36] <bigjools> wgrant: one bug is that the builds were created with a score of 0
[10:36] <wgrant> bigjools: 'Builds' being the SPRBs?
[10:37] <bigjools> buildqueue to be more specific
[10:37] <bigjools> but yes
[10:37] <wgrant> Right, scoring is not yet implemented for SPRBs
[10:37] <bigjools> https://dogfood.launchpad.net/builders/ferraz
[10:37] <wgrant> Also, the version on that recipe is screwed. I should really fix that.
[10:37] <bigjools> it's even building the source now
[10:37] <wgrant> Excellent.
[10:38] <wgrant> So it does actually work.
[10:38]  * bigjools does a little dance
[10:39] <wgrant> If you fix the recipe, the binary builds should work, too.
[10:40] <wgrant> (I threw a $ in front of the variable in the version, where it didn't want one)
[10:41] <wgrant> bigjools: Wouldn't it be nice if we had complete integration tests for all build types?
[10:43] <bigjools> wgrant: there's a shedload of nice things that could be done :/
[10:43] <wgrant> Indeed, indeed.
[11:55] <gmb> How would I go about switching DB user when I'm in the DatabaseFunctionalLayer? switchDbUser is on LaunchpadZopelessLayer and refers speficially to Zopeless stuff.
[12:11] <gmb> Ignore previous question. I have since hit myself with the clue-bat.
[12:26] <Ursinha> bigjools: hey, are you still getting emails?
[12:27] <bigjools> Ursinha: no
[12:27] <bigjools> does that make it your fault? :)
[12:31] <Ursinha> oh ffs
[12:32] <Ursinha> bigjools: yeah, it seems :/ weird thing is that the script seems to be doing what it should, I'll have to dig deeper
[12:35] <bigjools> Ursinha: also, how can we make that script not do anything to the bug if I so desire?
[12:35] <bigjools> (as per my email to you earlier)
[12:35] <Ursinha> bigjools: I haven't seen it yet
[12:35] <Ursinha> a moment
[12:37] <Ursinha> bigjools: did you send it directly to me or through some list?
[12:37] <bigjools> to you
[12:37] <bigjools> Ursinha: subject "Fwd: [Bug 392887] Re: Cannot delete a PPA"
[12:37] <mup> Bug #392887: Cannot delete a PPA <feature> <oem-services> <ppa> <Soyuz:In Progress by cody-somerville> <https://launchpad.net/bugs/392887>
[12:37] <bigjools> sod off mup
[12:37] <Ursinha> hm
[12:37] <Ursinha> lol
[12:38] <Ursinha> bigjools: checking
[12:39] <Ursinha> slow... internet......zzzzzzzz......
[12:42] <Ursinha> bigjools: what do you mean? what exactly you don't want to happen with the bug? to be targetted? assigned? marked fix commit?
[12:43] <bigjools> Ursinha: no action at all
[12:43] <bigjools> in this case it marked it fixed, but there's still loads of outstanding branches
[12:43] <Ursinha> bigjools: so the problem would be the mark as fix committed/tagging
[12:43] <Ursinha> ?
[12:44] <bigjools> Ursinha: yes, but preferably I want it to do nothing at all
[12:44] <Ursinha> bigjools: we need to keep track of branches being landed to fix that
[12:44] <bigjools> targeting and assigning are potentially wrong as well
[12:44] <Ursinha> so at least a comment pointing that would be nice to have
[12:45] <bigjools> yeah you could do that
[12:45] <Ursinha> bigjools: problem is that fits most use cases
[12:45] <bigjools> but the branch linked on the page shows that too, LP could do that itself
[12:45] <Ursinha> people forget do assign/target their bugs
[12:45] <Ursinha> and that ruins how we use the tagging schema
[12:45] <Ursinha> *forget to
[12:46] <bigjools> those people should be slapped :)
[12:49] <Ursinha> bigjools: how hard is to you to unmark it as fix committed? :)
[12:49] <bigjools> Ursinha: that's not the point - on a popular bug it generates a lot of email spam
[12:50] <Ursinha> bigjools: what do you suggest?
[12:51] <bigjools> Ursinha: first thing I guess is to not do anything to the bug if it has multiple branches listed
[12:51] <Ursinha> anything I don't agree :)
[12:51] <Ursinha> at least a bug comment
[12:51] <bigjools> Ursinha: that should not be done by your bot
[12:52] <bigjools> it should be done by LP
[12:52] <Ursinha> bigjools: is there a bug for that?
[12:52] <bigjools> Ursinha: since we're only just talking about it, I guess not :)
[12:53] <Ursinha> bigjools: I don't know if all projects would like to have comments added to their bugs, but that's not up to me to decide :)
[12:53] <Ursinha> bigjools: could you open a bug for that, please?
[12:54] <Ursinha> bigjools: script works now basically with how lp works today, if lp adds new features maybe we could add changes to the current qa tagging process
[12:56] <bigjools> Ursinha: what triggers the script?
[12:57] <Ursinha> bigjools: cron
[12:57] <Ursinha> :P
[12:57] <Ursinha> bigjools: it checks all the new commits since last run, and if they're on edge or staging
[12:57] <bigjools> Ursinha: what triggers the changes to bugs I mean
[12:57] <jpds> http://pastebin.ubuntu.com/401769/ - anyone know why that's happening?
[12:57] <bigjools> Ursinha: brb
[13:00] <Ursinha> bigjools: if the commit is already on edge or staging, then the script does his dance with the bug
[13:00] <Ursinha> *its
[13:04] <bigjools> Ursinha: how does it know which bug?  does it use the bug= in the commit msg?
[13:04] <bigjools> or does it inspect the --fixes bzr stuff?
[13:07] <Ursinha> bigjools: not just that, if the bug# is in the commit message
[13:07] <Ursinha> bigjools: again, not all people use to remember adding the bug= tag :)
[13:08] <bigjools> Ursinha: ok
[13:08] <Ursinha> with ec2 that changed because ec2test/12
[13:08] <Ursinha> argh
[13:08] <bigjools> Ursinha: so I can avoid it by not mentioning the bug number
[13:08] <Ursinha> wait
[13:09] <bigjools> Ursinha: however, the codehosting code can do something like I suggested earlier and add a comment to the bug if it sees a linked branch merged
[13:13] <Ursinha> argh
[13:39] <sinzui> EdwinGrubbs: bac: stand up in two minutes
[13:39] <deryck> adeuring, if you have time, could you look at the OOPS for Bug #548575?  more ShortListTooBigErrors.
[13:39] <adeuring> deryck: sure
[13:39] <deryck> adeuring, thanks!
[13:40] <mup> Bug #548575: Not able to unsubscribe from a bug <Launchpad Bugs:New> <https://launchpad.net/bugs/548575>
[13:43] <adeuring> deryck: did we really CP the fix?
[13:44] <EdwinGrubbs> sinzui: standup?
[13:44] <deryck> adeuring, I thought we did.  Maybe we didn't.  Did you submit it to production-devel?
[13:44] <adeuring> deryck: can't remember...
[13:44] <adeuring> let me check...
[13:51] <sinzui> EdwinGrubbs: https://code.launchpad.net/~bac/launchpad/bug-524302/+merge/22180
[14:15] <deryck> adeuring, I assume we didn't CP that fix then?
[14:16] <adeuring> deryck: no, we didn't cherrypick that branch. Sorry, needed some time to figure out which branch fixed the bug...
[14:18] <deryck> adeuring, no worries.  Can you mark the bug a dupe of the bug that does fix this, please?
[14:18] <adeuring> sure
[15:27] <james_w> gary_poster: here's what I was talking about yesterday: https://code.edge.launchpad.net/~james-w/lazr.restful/object-unmarshal/+merge/22182
[15:28]  * gary_poster looks
[15:29] <gary_poster> james_w: do you want a review?
[15:29] <gary_poster> rephrase:
[15:29] <gary_poster> do you want me to review
[15:29] <james_w> yes please
[15:30] <gary_poster> ok
[15:30] <james_w> I'd like leonard to look as well
[15:30] <james_w> I'm not entirely convinced by the approach as it isn't a great example of elegance, and prevents you doing some odd but legal things.
[15:30] <james_w> but I can't find a better way
[15:32] <gary_poster> james_w: leonard will not be able to before this release (not around today).  I agree that he should review.  Because he is not around today, this won't make it into the cycle unless we push it as release-critical.  My gut feeling so far is that this is more important for developing (that is, future work) that for production (that is, this release).  Do you agree?
[15:33] <gary_poster> (IOW, the fact that this will not make the release does not seem like a release-critical problem; but we should get it into the devel branch asap)
[15:33] <james_w> gary_poster: yes, sinzui landed the branch that fixes the problems yesterday, this is to stop any more from creeping in.
[15:34] <gary_poster> james_w: cool.  I'll look now to see if I have anything to add, and make sure that reviewing this branch is in leonardr's to-do list.
[15:34] <james_w> thanks
[15:35] <james_w> there's a long line in the doctest that I don't know how to wrap
[15:37] <gary_poster> james_w: you can use #doctest: +ELLIPSIS and elide the text with an ellipsis. #doctest: +NORMALIZE_WHITESPACE might let you wrap the line, but IME sometimes tracebacks are "exceptions" to the rule.  A-ha-ha.  But you could try that first.
[15:37] <gary_poster> james_w: >>> reference_marshaller.unmarshall(None, cookbook) # doctest: +NORMALIZE_WHITESPACE
[15:37] <james_w> that goes on the test line, or on the response line?
[15:38] <james_w> ah, thanks
[15:38] <gary_poster> or
[15:38] <gary_poster> >>> reference_marshaller.unmarshall(None, cookbook)
[15:38] <gary_poster> ... # doctest: +NORMALIZE_WHITESPACE
[15:40] <james_w> fixed, thanks
[15:40] <gary_poster> cool, np
[15:57] <gary_poster> james_w: yeah, that
[15:57] <gary_poster> 's not fun.  Can you tell me where the adapter is that you mention in the cover notes?
[15:58] <gary_poster> That uses an Object marshaller for a Choice?
[15:58] <gary_poster> (with the certain kind of vocab)
[15:58] <james_w> some webservice zcml
[15:58] <james_w> lib/canonical/launchpad/zcml/webservice.zcml
[15:58] <gary_poster> ack thanks
[15:59] <james_w> I thought the most elegant way to solve it would be for tales.py to just add _link if it would just an ObjectMarshaller for that field, but there's already a comment there saying it can't do that
[16:00] <gary_poster> james_w: My thought would have been that using an ObjectMarshaller is an abuse.  We should write our own marshaller for this case that does the right thing.
[16:01] <gary_poster> Does the tales comment (which I have not yet looked up) contradict that?  Going to hunt down tales comment...
[16:01] <james_w> search for Marshaller in src/lazr/restful/tales.py
[16:02] <james_w> I'm not sure what "the right thing" for the new marshaller to do would be
[16:04] <james_w> so, the root cause is that there are two different things, using two different criteria, deciding what the field name should be in the API. When they disagree you get problems.
[16:05] <gary_poster> james_w: a minimal "right thing" would be to puke, as you are doing here.  Puking where you have it now (in lazr.restful) doesn't make sense because, looking at the code, why would an ObjectMarshaller ever be called with anything other than an IObject?  It shouldn't.
[16:05] <james_w> A secondary concern is that we want exported objects to be serialised to links, and when that is done for the field name to have _link appended.
[16:05] <gary_poster> root cause: that sounds valid, but it's been too long since I looked at the code for me to have an informed opinion without staring for awhile more.
[16:06] <james_w> gary_poster: right, it never is. The issue is when that Marshaller isn't bound to an "object" field type, the name is already wrong in the wadl.
[16:06] <james_w> so I'm fixing the wrong end in effect, as the problem is already past, but this barfs at you and tells you something is wrong at least, rather than silently doing the wrong thing.
[16:07] <james_w> I couldn't see how to fix it at the "other end", which would be the field declaration and tales.py, as we need the developer to indicate whether it is a field that references another exported object or not.
[16:07] <james_w> which they do by using ReferenceChoice instead of Choice
[16:09] <james_w> perhaps the right thing to do is change the adapter declaration so that it only affects IReferenceChoices?
[16:09] <gary_poster> james_w: right, which is why I called it an abuse.  We can't protect ourselves from all abuses in lazr.restful.  Here's my proposal for your current motivations.  Since I have this alternative, I would not approve your approach.  Leonard may have an even better answer.
[16:10] <gary_poster> - we make our own adapter for
[16:10] <gary_poster>        for="zope.schema.interfaces.IChoice
[16:10] <gary_poster>             zope.publisher.interfaces.http.IHTTPRequest
[16:10] <gary_poster>             canonical.launchpad.webapp.vocabulary.SQLObjectVocabularyBase"
[16:11] <gary_poster> that says "this is broken!" or some other pukage
[16:12] <gary_poster> - we change the current registration to
[16:12] <gary_poster>        for="lazr.restful.interfaces.IReferenceChoice
[16:12] <gary_poster>             zope.publisher.interfaces.http.IHTTPRequest
[16:12] <gary_poster>             canonical.launchpad.webapp.vocabulary.SQLObjectVocabularyBase"
[16:12] <gary_poster> Done.
[16:12] <gary_poster> Actually, the first step could be to return None
[16:12] <james_w> and zope knows to pick the more specific adapter?
[16:13] <gary_poster> but then we could provide a helpful error ("Use IReferenceChoice, silly person!")
[16:13] <gary_poster> I mean, couldn't
[16:13] <gary_poster> yes
[16:13] <james_w> right, that makes sense
[16:14] <gary_poster> james_w: I'll copy some edited version of this over to the MP for leonardr, and move on.  s'ok?
[16:14] <james_w> yep
[16:14] <gary_poster> cool.  thank you for doing this.
[16:14] <james_w> I'll work on that after lunch
[16:14] <gary_poster> great
[16:15] <james_w> I think that Leonard may still want to consider a change to lazr.restful, as the discrepancy could still bite people using it.
[16:15] <james_w> but this is the right fix for LP as the bad registration is what is causing the problem.
[16:16] <gary_poster> lazr.restful change: OK.  I argue against it because of the "can't stop every abuse" argument, but if you convince me I'll go placidly along. :-)
[16:16] <gary_poster> I mean, convince him
[16:17] <james_w> sure, it's not so much about abuse. I wasn't the one that put the comment identifying the issue in tales.py after all :-)
[16:21] <gary_poster> :-)
[18:01] <mrevell> Night all
[18:33] <elmo> wgrant: around?
[18:42] <gary_poster> james_w: fwiw, I echo Leonard's question to you in https://bugs.edge.launchpad.net/launchpad-foundations/+bug/547216
[18:42] <mup> Bug #547216: WADL file doesn't work in NetBeans <Launchpad Foundations:Triaged> <https://launchpad.net/bugs/547216>
[18:44] <james_w> gary_poster: replied
[18:44] <gary_poster> thanks james_w
[18:46] <james_w> gary_poster: and https://code.edge.launchpad.net/~james-w/launchpad/export-code-import/+merge/22251 is done
[18:46] <james_w> just generating the diff
[18:47] <gary_poster> james_w: ack, claimed the review.
[18:47] <james_w> thanks
[18:47] <james_w> it's there now
[18:47] <gary_poster> yup, got it
[18:47] <james_w> the main concern was what to call the class and what file to put it in
[18:47] <gary_poster> lol, ack
[22:09] <wgrant> elmo: Hi.
[22:10] <elmo> 18:39 < elmo> so https://bugs.launchpad.net/soyuz/+bug/549041 appears to be either massive lulzwtfomghfs or hilarious PEBKAC
[22:10] <mup> Bug #549041: source <-> binary reference counting appears to be broken <Soyuz:New> <https://launchpad.net/bugs/549041>
[22:10] <elmo> wgrant: ^-- was looking for a sanity check on that bug
[22:11] <wgrant> Let's see.
[22:12] <wgrant> Eeeeep.
[22:12] <elmo> quite
[22:13] <wgrant> Grngh.
[22:13] <wgrant> Stupid timeouts.
[22:14] <wgrant> elmo: So, LP says it is still there.
[22:15] <wgrant> (no "Removal requested" or "Removed from disk" on https://edge.launchpad.net/ubuntu/hardy/+source/linux/2.6.24-26.64)
[22:15] <wgrant> Are they not in the pre-split cocoplum archive?
[22:16] <elmo> aha
[22:16] <elmo> god damn it
[22:16] <elmo> this is going to be my fault
[22:16] <wgrant> Your script is dodgy?
[22:16] <wgrant> Yeah.
[22:17] <elmo> gack
[22:17] <elmo> they are indeed on cocoplum
[22:17] <elmo> damn it all
[22:17] <elmo> well, yay, I guess that makes it hilarious PEBKAC
[22:18] <wgrant> I've often wondered how you make the split cope with this.
[22:18] <wgrant> I guess you don't?
[22:18] <elmo> apparently not
[22:18] <elmo> we'll have to change the source syncing to just be unconditional and not based on indices
[22:18] <wgrant> Yes...
[22:19] <wgrant> Although is there a good reason that we can't keep the old sources in the indices? dak does that a bit now, and most tools have been taught to deal with it.
[22:20] <wgrant> But yes, syncing everything is a good quick (but large) fix.
[22:20] <elmo> I'm fine with keeping sources in indices, but the more I can lobotomize the magic mirror script the better
[22:23] <wgrant> I guess ports just does dumb matching of arch tags, so it isn't affected?
[22:24] <elmo> the magic mirror script runs on all 3 (archive, ports and old-releases), it can't do simple arch tag matching because we had different arches supported in different releases
[22:25] <elmo> so it has to do arch taggging based on Packages files
[22:25] <wgrant> Oh, crap, yes.
[22:25] <elmo> but that's fine, I don't mind losing unreferenced binary files so much and we implement a local S-O-E
[22:25] <elmo> to minimize the pain
[22:25] <elmo> I just can't believe it took us (or anyone else) this long to notice
[22:25] <wgrant> It's presumably been around... forever?
[22:25] <elmo> (it was, unsurprisingly, the gnewsense guys)
[22:26] <wgrant> Hah.
[22:26] <elmo> wgrant: not forever, basically since we first had an arch migrate off archive, I think
[22:26] <elmo> until then, it was just dumb rsync rules
[22:28] <wgrant> Ah.
[22:48] <elmo> hmm
[22:48] <elmo> this does make old-releases near impossible to get right in a non-GPL violating way
[22:48] <elmo> maybe I should re-open that bug as "please don't de-indices Source till it's got no binaries left"
[22:49] <wgrant> That's easy to do.
[22:49] <wgrant> It might just break older tools.
[22:49] <elmo> ah, that's a bit sucky
[22:49] <wgrant> Like, say, gina.
[22:49] <elmo> haha
[22:49] <elmo> feature
[22:50] <elmo> which would affect, e.g. dapper-updates
[22:50] <elmo> ho hum
[22:50] <wgrant> Yes.
[22:50] <wgrant> That is my concern.
[22:51] <elmo> do you know how long Debian's been doing this?
[22:51] <wgrant> Only a few months.
[22:51] <elmo> ah, bother
[22:51] <wgrant> Yes.
[22:52] <elmo> so this becomes less easy since I really want it to be "please don't de-indices source packages - in DS >> lucid - till it's got no published binaries left"
[22:53] <elmo> oh well; GPL compliance, much like the tank in halo, beats everything.  I'll reopen the bug and leave it for someone else to figure out how/when/if to do it
[22:56] <wgrant> Heh.
[22:56] <wgrant> If only we could sanely do the split in Soyuz.
[22:56] <wgrant> It has all the knowledge.
[22:56] <wgrant> It's just... hard.
[22:59] <elmo> why?
[23:02] <wgrant> Well, we'd either have to maintain four separate archives and move publications between them, or give the publisher enough intelligence to work over multiple on-disk archives and filter its activities.
[23:03] <elmo> yeah, more the latter
[23:03] <elmo> I guess that is hard.  I was going more for messy and involved
[23:03] <elmo> but I'm probably a little too removed to accurately estimate
[23:04] <wgrant> The latter is probably hard mostly because of the "when is this source unused in this filter set?" policy.
[23:04] <elmo> I wouldn't even bother trying
[23:04] <elmo> for source specifically
[23:05] <wgrant> Hm.
[23:07] <elmo> just source reference count as before and de-index + de-publish when your last child binary is removed; across any filter set
[23:07] <elmo> hmm
[23:07] <wgrant> elmo: That fails utterly for old-releases.
[23:08] <elmo> yes, I just realised
[23:08] <elmo> and so does what I said in the bug
[23:08] <wgrant> It's actually not that hard, though.
[23:08] <elmo> mock conkeys
[23:08] <wgrant> We just need to filter the publications using the same queries we started with.
[23:08] <wgrant> So it's doable.
[23:08] <elmo> hmm?
[23:08] <elmo> how do you mean same queries
[23:10] <wgrant> Well, the unused source check performs a query to find any binaries for that source in the same archive.
[23:10] <wgrant> It would just have to also have the same restriction applied that we used to find the source in the first place. So it's not as hard as I first thought.
[23:10] <elmo> oh, right, binaries aren't floating
[23:10] <elmo> wow
[23:10] <wgrant> Hm?
[23:10] <elmo> I am *so* rusty at this stuff
[23:11] <wgrant> "floating"?
[23:11] <elmo> I had it in my head that we might have binaries not attached to DSes
[23:11] <wgrant> Ah.
[23:11] <wgrant> No, we're not dak.
[23:11] <elmo> haha
[23:11] <elmo> :-P