/srv/irclogs.ubuntu.com/2012/02/13/#launchpad-dev.txt

wallyworld_wgrant: i hadn't forgotten the qa - i needed to finish some stuff first. did you check that the branch badges displayed ok?00:26
wgrantwallyworld_: Yep, seems to work fine.00:27
wallyworld_ok. thanks.00:27
wgrantI had 12 QA items of my own, so it wasn't much extra work :)00:27
wallyworld_np. was just uploading a new oops-amqp to pypi for james_w00:28
wallyworld_wgrant: so now that oops-amqp is at 0.0.6 on pypi, what causes the ubuntu package to get updated?00:33
lifelesswallyworld_: nothing; they probably have a watch file tht will alert the package maintainer00:45
lifelesswallyworld_: we don' worry about that at the moment00:46
wallyworld_ok. thanks. just wanted to be sure i didn't stuff anything up00:46
lifelesswallyworld_: you did an sdist upload -s ?00:46
wallyworld_yes00:46
lifelesswallyworld_: close off any fix committed bugs in lp; and you're done AFAIK00:46
wallyworld_had to register my ssh key etc00:46
wallyworld_wgrant: StevenK: if i ask nicely, can one of you +1 rick's review so i can get this landed? https://code.launchpad.net/~wallyworld/launchpad/private-by-default-ui-885503/+merge/9227301:01
lifelessinteresting - https://www.ebayopensource.org/index.php/Turmeric/HomePage01:48
StevenKSorry, you lost me after Java.01:49
wgrantwallyworld_: Looking02:22
StevenKlifeless: But teams don't have gpg keys. You'd ask the owner the sign the CoC and be responsible for the PPA?02:28
lifelessStevenK: there are a number of ways it could be implemented02:30
lifelessStevenK: one; force every member to be a CoC signer02:30
lifelesstwo; reject uploads from non CoC signers02:31
lifelessthree; I'm not sure right now, but give me a few minutes :P02:32
StevenK1) Could result in "Damn it, I can't create a PPA because x, y and z haven't signed the CoC, and they're on holidays."02:33
lifelessindeed02:34
wgrant * 471 Exceptions02:35
wgrantYay02:35
lifelessnice02:37
* wgrant fixes 110 of them02:38
wgrantwallyworld_: Done02:41
wallyworld_wgrant: thank you02:41
wgrantwallyworld_: Also, you can't land this until the DB patch is deployed.02:41
wgrantOh, you won't be thanking me :)02:41
wallyworld_yeah, hopefully tomorrow02:41
wgrantI hate our hand-generated SQL.02:57
wallyworld_wgrant: thanks for review - i've responded03:18
wgrantwallyworld_: My premise was that the product argument to person.hasCurrentCommercialSubscription should not exist.03:20
wallyworld_why? i think it's fine to ask the question "does the user have a commercial subscription to this product". we also discussed this on the standup last week and curtis was ok with it03:21
StevenKDidn't we say that on the call on Friday too? :-)03:21
wgrantThat's not a sensible question.03:21
StevenKwallyworld_: Right, but both wgrant and I disagreed.03:21
wallyworld_2 vs 2 :-)03:21
wgrantA product has a commercial subscription.03:21
wgrantA person is not involved.03:21
wallyworld_the current api says that a person is involved - the one before i modified it i mean03:22
* StevenK stabs this branch, pulls the knife off and it stabs it again.03:22
wallyworld_since i can't land till db patch lands, let's discuss again tomorrow on the call?03:23
wgrantThat was written two weeks ago to see if a person has any projects which have subscriptions.03:25
wgrantIt's a suboptimal hack to make private teams more accessible.03:25
wgrantIt must not be perpetuated.03:25
wgrantReplied.03:25
wallyworld_why suboptimal hack? i think it's ok to have such a method03:25
james_wthanks wallyworld_!03:27
wallyworld_james_w: np. the 0.0.6 version is on pypi too fwiw03:27
wgrantIt's conflating two checks that your method should be performing03:28
wgrantAha03:28
wgrantNow freenode is alive.03:28
james_wwallyworld_, great, thanks03:28
StevenKwgrant: Can you please look at http://pastebin.ubuntu.com/839965/ which is the test failure I'm debugging, along with a current diff before I slam my head through my monitor and the wall behind it in frustration?03:30
wallyworld_wgrant: re: Unauthorised - that is used in many other places for similar semantics03:30
wgrantNAFAIK03:31
wgrantAll the 'raise Unauthorized's that I can see are cases of inadequate role membership.03:32
wgrantstatik: Was visibility formerly public?03:34
wgrantEr03:34
wgrantStevenK: ^^03:34
StevenKwgrant: The Unauthorized I'm not concerned with yet, it's the rest of the doctest failures03:35
wgrantStevenK: They are likely cascading failures.03:36
StevenKwgrant: What makes you think that?03:38
StevenKOh, that the team hasn't actually be turned private?03:38
wgrantRight.03:38
StevenKwgrant: visibility doesn't appear in configure.zcml, just IPersonCommAdminWriteRestricted03:39
StevenKIt has a require permission .Commercial, and it's allowed in IPerson's interface03:40
wgrant<allow /> == <require permission="zope.Public" />03:41
StevenKRight.03:41
StevenKIt was publically readable, and only settable for .Commercial03:41
StevenKNow, how do I fix that ...03:42
wallyworld_wgrant: inadequate role membership and not having the required previliges to turn on private bugs is pretty much the same thing, no? i don't thing bad request is a correct alternative regardless03:43
StevenKwgrant: So I guess IPersonEditRestricted is the wrong place for visibility03:46
wgrantwallyworld_: It's not really a lack of privilege of the person. It's a lack of privilege of the project.03:52
wgrantwallyworld_: So it's slightly different, and not really something we use Unauthorized for elsewhere right now.03:52
wallyworld_which still results in the person being authorised03:53
wallyworld_hmmm03:53
StevenKwgrant: Getting closer. First failure is now "- A private team cannot change visibility."03:53
wallyworld_if the person were in a different role eg ~registry then they would be authorised03:53
wgrantwallyworld_: Right, but that's not usually how people would solve it.03:54
wgrantIn order for Joe Random to solve the error, he has to change the project.03:54
wgrantNot become a member of ~registry.03:54
wallyworld_sure, but i used it to illustrate that it can be considered a limitation of what the person is allowed to do03:54
wgrantIt could go either way, but I think BadRequest is slightly better.03:54
wallyworld_but badrequest is for stuff like protocol issues etc03:55
wallyworld_afaiui03:55
wgrantWe use a derivative of BadRequest for most user errors.03:55
wallyworld_why?03:55
wgrantBecause in most cases they're bad requests.03:56
wallyworld_really? the syntax is bad?03:57
wgrantHm?03:57
wgrantBad Request doesn't meant the HTTP syntax is bad.03:57
wallyworld_i thought it was a request that could not be fulfilled because not all info was provided or whatever03:58
wallyworld_different to not being allowed to do something03:58
wallyworld_so like leaving out a mandatory parameter = bad syntax03:59
wallyworld_but here there is no such issue but there is an authorisation issue03:59
wgrantA 403 is possibly more appropriate, but the rest of the API uses 400 here.04:00
wgrant401 is not appropriate for normal users, as becoming a ~registry is not a way out for them.04:00
wallyworld_i wasn't suggesting becoming ~reg was a way out04:01
wallyworld_i think 403 is ok04:02
wallyworld_i'd like to know why the rest of the api uses 400 in these cases04:02
lifelessso 400 is definitely wrong per rfc2616 but04:03
lifelesshttpbis changes this04:04
lifelesshttp://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-18#section-7.4.104:04
wgrantThe RFC isn't relevant here.04:04
wgrantIt's 15 years behind the web.04:04
lifelessspecifically, it says "The server cannot or will not process the request, due to a client04:04
lifeless   error (e.g., malformed syntax)."04:04
lifelesswgrant: a little patience kemosabi04:04
lifelesswgrant: and you might find your local friendly http nazi supporting your case04:04
wgrantHeh04:05
lifeless400 has become the defacto 'go away and it is your fault'04:05
wgrantExactly.04:06
lifelessyou could return 401 if you want to trigger *http* authentication04:06
lifelessbut04:06
lifelesswe don't use http authentication anywhere04:06
lifelessso we should never use 401 or 403, more or less04:07
wgrant403 is fine04:07
wgrant401 is illegal, but we do it in the API anyway04:08
wallyworld_lifeless: isn't 'go away, it's your fault' different to 'you sent all the right info to do this but you are not allowed ie forbidden"04:08
wallyworld_so why should we never use 403?04:08
lifelesssame reason 40104:08
wgrantIIRC 401 says the response MUST include WWW-Authenticate04:08
lifeless401 and 403 are talking about the ability and limits of dealing with http authentication credentials04:08
wgrant403 doesn't say anything about HTTP auth04:08
wallyworld_what he said04:09
wallyworld_hence 403 is ok here i think?04:09
wgrantI still think 400 is more in line with the rest of the application, and indeed the rest of the modern world.04:09
wallyworld_well the world is wrong :-)04:09
lifelesshttp://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-18#section-7.4.4 if you want to read it04:10
wallyworld_i still don't get why the world would be using an incorrect code04:10
wallyworld_ok, i'll read it04:10
lifelessI see no value in spec lawyering without reference to the current spec04:10
wgrantCurrent *draft* spec that's already obsolete? :)04:10
lifelessfinal stage about to be ratified04:10
wallyworld_reading that link reinforces my view that 403 is ok here04:11
wallyworld_but i'll make it 400 if that's what i need to do04:11
StevenKHmmmmm.04:12
wallyworld_even though it's not a 400 ie all necessary info for the server to process the request was provided correctly04:12
StevenKI think hasCCS has a bug04:12
wgrantwallyworld_: "due to a client error" in the new spec.04:12
wallyworld_but it's not a client error04:12
wgrantIt is.04:13
wgrantIt's asking for something which can't be done.04:13
lifelesswallyworld_: so the sequence is - you start with nothing, you make a request, server says 401 (gotta be authenticated), so you auth and try again and it says 403( you picked the wrong usercode)04:13
wallyworld_agree so far04:13
wallyworld_or a user code that's not allowed04:13
lifelesswallyworld_: 401 (which references http://tools.ietf.org/html/draft-ietf-httpbis-p7-auth-18) makes no sense if you are not talking about HTTP auth04:14
wallyworld_yes, i should not have used a 401 in the mp. i should have used 40304:14
lifeless403, which layers on 401 - telling you to go back and reauthenticate - makes no sense unless 401 makes sense.04:14
lifeless403 is flat out wrong for us.04:14
wgrant403 doesn't layer on 40104:14
wgrantIn practice it did 15 years ago.04:14
wgrantBut even 1.1's 403 doesn't mention 401, or HTTP auth at all.04:14
lifeless403 is what you use to trigger a browser login window regardless of their current login status.04:14
wgrantNo, that's 40104:15
wgrant403 doesn't; the webapp uses it.04:15
StevenKMeh, let's just raise 40204:15
wgrant402 is actually almost appropriate here, for like the first time ever :)04:16
wallyworld_hah04:16
StevenKI know :-)04:16
StevenK(402 is Payment Required, for those playing at home.)04:16
StevenKAH! I get it!04:17
StevenKThe logged in user has a subscription, but the new team doesn't.04:17
wgrantAh, finally.04:28
wgranthttps://launchpad.net/launchpad renders in <1s now.04:28
wgrantNext stop <500ms.04:28
StevenKwgrant: If I change TeamEditView to have class schema(ITeam):\n visibility = copy_field(...  I get TypeError: ('Could not adapt', <Person at 0xfb05050 team-name-100028 (Team Name 100028)>, <InterfaceClass lp.registry.browser.team.schema>) in the tests.04:43
wgrantStevenK: That's inconvenient.04:44
StevenKBut it works for TeamAddView and ITeamCreation04:45
StevenKwgrant: Can I force Zope to give me a better error?04:47
wgrantStevenK: You may have to do it in setUpFields with copy_field. See BugTaskEditView04:47
StevenKwgrant: Down to one failure.05:12
wgrant:(05:13
StevenKHmm?05:14
wgrantfailplanner is fail05:17
* StevenK stabs longpoll05:48
StevenKwgrant, wallyworld_: Do either of you want to review https://code.launchpad.net/~stevenk/launchpad/make-person-visibility-mutate/+merge/92715 ?05:58
wallyworld_StevenK: i'll do it05:58
StevenKGrrr. Now I have to wait 7 hours to see if combo-url breaks qas.06:00
* StevenK glares at wallyworld_.06:01
wallyworld_what have i done this time?06:01
StevenKwallyworld_: I was expecting combo-url to be the first branch to land this morning, and it wasn't.06:02
wallyworld_the early nerd gets the worm06:02
StevenKI tossed it at ec2 at 7:40!06:02
wallyworld_mine was a small test fix which i lp-landed06:02
wallyworld_how long till gary makes bb run in 10 seconds?06:03
StevenKYears?06:04
wallyworld_StevenK: 41+ visibility = data.get('visibility')..... i think you will find you need to del data['visibility']06:09
wallyworld_if you have made visibility field readonly, unless you remove it from data, it should error06:09
wallyworld_if your tests pass as is, i'm not sure why06:10
StevenKwallyworld_: It was made readonly in the interface due to the mutator method. Like I said, I had to do magic to get it to NOT be readonly for the two views.06:10
wallyworld_StevenK: IPerson.visibility is readonly and doesn't updatecontextfromdata() attempt to do "context.visibility = data('visibility')"06:13
StevenKIt doesn't seem to.06:13
wgrantHm, I would expect it to.06:14
wallyworld_it does field.set(...)06:14
StevenKwallyworld_: I'm happy to delete it from data after I grab it06:14
wallyworld_i think you need to but i'm concerned no test failed06:14
wallyworld_there's several other places where a readonly field is set using a mutator and it has to be deleted from the data dict06:15
StevenKwallyworld_: I think what is perhaps going on is the mutator is setting it, and then it gets changed to the same value06:16
wallyworld_ah, that may explain it perhaps06:16
StevenKwallyworld_: http://pastebin.ubuntu.com/840063/06:18
wallyworld_StevenK: i think that is ok. it's more explicitly correct if that makes sense06:18
wallyworld_StevenK: i'm wondering if the new code in setupFields should be moved to conditionallyOmitVisibility() and the method renamed to setupVisibility(0 so that it all lives together?06:19
wgrantlifeless: Is it evil to have partial indices where distribution IS DISTINCT FROM 1? :)06:20
StevenKwallyworld_: wgrant didn't think it belongs in conditionallyOmitVisibility(), and I agree.06:20
wgrantStevenK: It might be OK if you rename it.06:20
wallyworld_not if it's not renamed06:20
wgrantBut I forget what it was.06:20
wallyworld_but it's code that's all to do with initing the view wrt the visibility field06:21
StevenKwallyworld_: The other thing is I only need to do setUpFields for the Edit view06:21
StevenKwallyworld_: The class schema is fine for the Add view, so it doesn't need to be done06:21
wallyworld_let me have a closer look06:22
wgrantStevenK: I'd use the same for both.06:22
wgrantNo point duplicating it.06:22
StevenKI was happy with class schema, but it gave the can not adapt error for Edit06:22
wgrantSure, so it's not useful.06:23
wgrantIf you have one solution that isn't vile and works for both, use it for both.06:23
StevenKwallyworld_: What do you think of http://pastebin.ubuntu.com/840071/ ?06:28
wallyworld_StevenK: i think that looks nicer thanks. maybe s/delete_visibility/omit_visibility to user consistent terminology?06:30
* wallyworld_ stabs unity. another crash, another set of duplicate icons on the launcher06:31
* StevenK wields s/delete\(_visibility\)/omit\1/g06:31
* wgrant curses the bug sort tiebreaker.06:31
wgrantHmm06:36
wgrantBy doing partial indices by openness I can get the main query on https://bugs.dogfood.launchpad.net/ubuntu down to 6ms06:36
wgrantWhich is possibly a good thing.06:36
wallyworld_StevenK: should the transitionVisibility method check that new visbility != old visibility before it complains?06:36
StevenKwallyworld_: Hmmmm.06:40
StevenKProbably06:40
* StevenK wishes for a Perl-ism06:40
wallyworld_StevenK: and there's no difference between turning it on vs off?06:41
StevenK#define it ?06:42
wallyworld_visibility06:42
wallyworld_in terms of permissions i mean06:42
StevenKSorry, I don't get it. Please be clearer.06:43
wallyworld_so for the private bugs setting, you need more privileges to turn private bugs on than to turn it off06:43
wallyworld_but i guess for visibility it's symetrical06:43
StevenKRight06:43
wallyworld_ok06:43
StevenKYou can either it change it, or you can't.06:43
wallyworld_np. sorry06:44
wgrantIt's probably not symmetrical.06:44
wgranteg. if my commercial subscription expires, surely I can unprivate my team?06:44
wallyworld_StevenK: i'm also wondering why we're not using validate() to setField error06:45
wallyworld_oh, atm, field is not shown if not permitted06:46
wallyworld_so no need06:46
wallyworld_this is turning out very much like the private bugs branch06:46
StevenKwallyworld_: Yes.06:48
StevenKwgrant: Mmmmm. I think I'd like to do that as a seperate branch, this one is already hairy enough.06:49
wallyworld_StevenK: what is nagging at me for this branch is that the rules for visibility allowed or not are in 2 places - the view to omit the field or not plus the model to do the save06:51
wgrantWell I think I'd like postgres to be smart and do a union over sorted index components, but it won't :)06:51
StevenKwallyworld_: Right. Perhaps I need to refactor it out.06:52
wallyworld_in my branch, i now have a checkPrivateBugsTransition() method which raises if not allowed. the validate() calls this and uses ex.message to set the field error06:52
wallyworld_and the model nutator also calls checkxxx() which raises if the api is used06:53
wallyworld_for example06:53
wallyworld_so it's trying to put all the permission checks in one place06:53
StevenKwallyworld_: So I can refactor out into IPerson.checkAllowVisibility if you think that's appropiate06:54
wallyworld_StevenK: i think the same technique is used in the team edit view for the team moderated/restricted etc radio buttons06:54
wallyworld_StevenK: i think that works06:54
wallyworld_StevenK: with those moderated/restricted radio buttons, i catch the exception and use the message to put in that little info line at the top of the widget06:55
StevenKwallyworld_: Anything else?07:00
wallyworld_StevenK: don't think so.you'll need to add different tests depending on what changes you make. there should probs be a -ve test for the test_person_with_cs_can_create_private_team test07:02
StevenKI'm so over this branch07:02
wallyworld_StevenK: that's how i feel about the private bugs one :-(07:03
StevenKwallyworld_: Er, but if the user has no CS, they don't see the field?07:03
StevenKThere are existing tests for that case, the branch adds an end-to-end test to make sure the team gets created.07:04
wallyworld_StevenK: yes, you are right. i was thinking about any future asymetric permission workflow07:06
StevenKWhich we haven't done yet. :-P07:06
wallyworld_StevenK: so i've got to run to the shops before it hails (sky is green and hail is expected). i'll +1 after dinner07:07
StevenKBleh07:07
wallyworld_or sooner if you want07:07
wallyworld_give me 20 minutes?07:07
StevenKwallyworld_: Yeah, sure.07:07
wallyworld_thanks. will do it as soon as i can07:08
wallyworld_StevenK: r=me with a suggestion for a test for the ImmutableVisibilityError07:47
wgrantstub: Do you have much idea how much DB IO we'd save by not reading large fields like Bug.description during searches?08:35
stubAre we scanning them, or looking at the fti indexes?08:36
wgrantFTI, so the description column isn't used at all.08:37
wgrantExcept Storm asks for it, even though it won't use it.08:37
stubI have no real metrics. It would certainly be faster to display a list of 70 odd bugs (a batch from a search results). I don't know how much.08:37
wgrantIt's hopefully the only large toasty field that Storm asks for08:37
wgrantSo it seems like we could save a lot of toast table reads.08:37
stubFor the actual search, the fti index is used - removing description would make it smaller but I don't think it would save that much.08:38
wgrantOh, blah, fti gets rechecked even after the GIN.08:38
wgrantSo I guess we can't skip toast reads for that, only description.08:39
wgrantstub: I'm going to experiment with using GIN for tag searches tomorrow.08:40
wgrantSince they're currently the slowest common search in my new schema.08:41
stubwgrant: So the trick with PG < 9.1 is that you need to determine if the query is going to do a full index scan and fail it, rather than generate an OOPS because the index gets asked to do something it doesn't support.08:42
stubWith 9.1, GIN is drop in - we just get slower writes and faster reads08:43
wgrantYeah, but I'm hoping we'll be on 9.1 soon enough :)08:43
wgrantSince it makes Ubuntu searches 5x faster.08:43
wgrants/it/GIN/08:43
stubYes. I'll be converting all our GIST indexes to GIN.08:43
wgrantstub: Could you please pastebin index usage numbers from bug and bugtask?08:50
stubk08:55
stubI should snapshot these like I do the disk space ones for generating deltas08:56
wgrantYeah, that sounds pretty easy and potentially very useful.08:56
wgrantBut not critical for my uses right now :)08:57
stubhttps://pastebin.canonical.com/60003/09:00
stubcouple of obvious dead ones there...09:00
wgrantI'll be deleting most of them in a month or so anyway :)09:02
StevenKbugtask__binarypackagename__idx seems utterly useless09:04
mrevellHello!09:04
wgrantStevenK: Considering the column should never have existed, and hasn't been used since at least 2005, yeah.09:04
wgrantIt's all part of The Plan.09:04
StevenKwgrant: But like you say, it's probably not worth just deleting the unused indices yet09:05
wgrantRight, considering I will be taking a chainsaw to those tables in the coming little while.09:05
StevenKI'm looking forward to it.09:06
StevenKstub: Is it easy to see if any indices aren't used at all, ignoring those on bug and bugtask?09:06
stubYes. There are false positives though, such as indexes rarely used but need to be there anyway to support that once-every-three-months operation09:07
StevenKIf they're used once-every-while, they should have some non-negative read and scan results, right?09:08
stubI also can't generate deltas, so the numbers are from whenever the stats were last reset, and I don't know when that was :)09:08
adeuringgood morning09:09
StevenKI can't imagine we reset the stats at all. Some of the those numbers look very large.09:09
stubhttps://pastebin.canonical.com/60004/09:10
stubThat needs to go in the database report really09:10
StevenKHoly crap, 20809:10
StevenKEr, 28009:10
StevenKbugnotificationarchive ? Really? Is that even used?09:11
stubThat really should be filtered by num tuples in the table or something too. There are a lot of indexes there to support deletions and such if the tables grow.09:11
StevenKstub: If you don't think the gardening is much of a help, that's fine, I'm effectively offering to grab a pair of shears.09:12
stubThe gardening will help. Just needs a little thought on each one though, which I'll double check on review.09:12
stubLeave all the indexes on person09:13
stubAnd libraryfilealias09:13
stubAnd the primary keys, and uniques...09:13
stubHmm... can I filter them out?09:14
StevenKHmm, like on the indexrelname?09:14
stub_key, _unq, _pk, _pkey are good hints, but we don't always follow conventions unfortunately.09:15
mrevellEveryone say hello to czajkowski, who joins the LP team at Canonical today :)09:21
stubStevenK: https://pastebin.canonical.com/60006/ is better to work from. It skips all the unique indexes, and shows the number of tuples in the table (for indexes that would be used if we had more data)09:21
stubHello czajkowski, who joins the LP team at Canonical today09:22
* czajkowski waves hi 09:22
wgrantMorning czajkowski.09:23
stubWhat timezone are you in czajkowski?09:23
czajkowskiUTC, I live in London09:23
stubIn the office or at home?09:24
czajkowskiat home, will pop in from time to time in the office though as I live nearby09:24
adeuringmorning czajkowski09:24
czajkowskiwgrant: adeuring ello :)09:24
stubI hated commuting on the tube for the few months I was there.09:25
czajkowskiit's about a 15-20 min walk from here09:25
StevenKstub: Haha, did you see tm__potmsgset__language__not_used__idx in that?09:29
nigelb3409:47
nigelbugh09:49
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
=== salgado is now known as salgado-afk
StevenKrick_h: O hai!12:24
rick_hStevenK: howdy12:24
rick_hhow went the whole thing? Saw your email, will probably get a reply going with some notes.12:24
StevenKrick_h: Sweet. Buildbot finished ~15 minutes ago, I was hoping that either qas would be a burning ball of fail or working fine before I went to bed.12:25
rick_hStevenK: heh ok. So it's not hit qas yet then?12:25
StevenKrick_h: qas takes ~40 minutes to update.12:25
rick_hok12:25
StevenKNext cron for qas kicks off at :4812:25
StevenKI doubt it hit the :18 run12:26
* rick_h crosses fingers12:26
jelmermogguh StevenK, rick_h12:26
StevenKjelmer: G'tag (if you remember that one :-)12:26
* rick_h looks up mogguh12:26
jelmerStevenK: yeah :)12:26
StevenKrick_h: Did you get a chance to look at the AJAX log thing?12:30
rick_hStevenK: not yet, created a ticket for it and it's on the board12:30
StevenKs/ticket/card/12:30
StevenKTicket makes think of RT.12:30
rick_hsorry, created a bug and a card and the card is on the board :)12:30
rick_hticket == bug sorry12:30
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: benji | Firefighting: - | Critical bugtasks: 4*10^2
=== almaisan-away is now known as al-maisan
deryckMorning, all.14:01
deryckOh happy uninterrupted-duty day!14:01
rick_hlol14:03
flacostemorning deryck!14:13
deryckabentley, adeuring, rick_h - https://plus.google.com/hangouts/extras/talk.google.com/orange-standup14:31
deryckmrevell, my wife's van died at her shop where I'm working. And a tow truck is coming to get it. I'll have to go out when he arrives (in 10 mins likely).14:53
deryckmrevell, should we push back our call with czajkowski or schedule for tomorrow?14:53
=== mbarnett` is now known as mbarnett
czajkowskideryck: ello14:54
deryckhi czajkowski!  You have no idea how happy the Orange Squad is that you have joined Launchpad! :)14:54
czajkowskiI'm going to hope this is a good thing :)14:54
deryckczajkowski, it is! :)14:55
deryckflacoste, look at my luck with this stupid van ^^ :)14:55
mrevellczajkowski, deryck: Tomorrow is fine if you're not sure when you'll be done with the tow truck. If not, how about 16utc? I won't be available then but you and czajkowski can talk.14:55
deryckmrevell, either way is fine with me.  Shouldn't take but about 10-20 minutes to get him a key and on his way.  but unfortunately, it just hits during our call.14:56
deryckmrevell, I called when I got in this morning, but he's only now able to come here.14:56
mrevellNo prob :) Let's say 16utc, if that suits you czajkowski.14:56
flacostederyck: is it again your wife's doing this time? her general delicacy in handling mechanical/technology device?14:57
deryckha!14:57
czajkowskimrevell: deryck sounds good to me14:57
deryckflacoste, one can never know for sure. :)14:57
deryckmrevell, czajkowski -- sounds good to me too.14:57
mrevellgreat :)14:57
deryckflacoste, I think it's just an alternator though, which is just unfortunate timing.14:58
flacosteah right14:58
flacostethat sucks14:58
sinzuijcsackett, are you back yet. I shot myself in the foot. I want to talk about invalidating a cache to apply more than one commercial subscription to a projects15:38
jcsackettsinzui: i'm back now. my apologies, my timing estimates didn't account for a traffic accident on the way home.16:09
rick_hjcsackett: quit running into people. It's not good for you16:11
jcsackettrick_h: thankfully, i wasn't *in* the accident. i was just blocked by it. :-P16:11
sinzuiThat accident was a MiB conspiracy. Your domicile is bugged16:11
* jcsackett laughs16:12
sinzuimumble?16:12
sinzuijcsackett, or hangout16:13
jcsackettlet's go mumble. google+ was crashing my computer yesterday and i don't yet trust it again.16:14
rick_hderyck: so finally changed my last .html file for a bit hopefully! https://code.launchpad.net/~rharding/launchpad/combo_yui_tests5/+merge/9209216:37
derycknice!16:37
rick_hderyck: if you get a few ^ first one is on ec2 and once that goes can land these other 4 side by side16:37
deryckrick_h, is that a review request? :)16:38
rick_hderyck: yes please :)16:38
deryckrick_h, will do :)16:38
rick_hI htink benji would hunt me down if I hit up ocr16:38
deryckmeh. what's 4200 lines among friends.16:38
rick_hheh, across 34 files16:39
=== al-maisan is now known as almaisan-away
sinzuijcsackett, bzr+ssh://bazaar.launchpad.net/~launchpad-purple-squad/%2Bjunk/disclosure_mockups/16:42
* benji prepares the specially-trained rick_h hunting dogs.16:46
czajkowskideryck: nice to put the face to the nick btw16:58
deryckczajkowski, thanks!  Likewise.16:59
abentleyderyck: With further optimization, I completed the branch scan in 3 minutes!17:20
deryckabentley, woah!  nice!17:21
abentleyderyck: I had to use store._connection.build_raw_cursor().executemany to do it, so there's some work required to de-hackify it, but at least we know it's possible.17:23
deryckabentley, nice that it's possible, and yuck that it's so non-obvious to do multiple inserts.17:24
lifelessmornin17:38
sinzuiczajkowski, https://dev.launchpad.net/MaintenanceRotationSchedule17:38
=== deryck is now known as deryck[lunch]
abentleylifeless: mornin.18:21
abentleylifeless: I'd like to chat with you about task queues.  Are you up for that sometime today?18:22
=== deryck[lunch] is now known as deryck
lifelesssure18:23
lifelesshow many hours till your EOD ?18:23
danilobenji, heya, I've put a few merge proposals up for pygettextpo (https://code.launchpad.net/pygettextpo/+activereviews): it's used only by LP but I want to make it more complete and usable (and perhaps able to replace gettext_po_parser.py in Launchpad as well)18:36
benjidanilo: ok, I'll take a look18:37
danilolifeless, flacoste: I wonder if we should create a separate maintainer team for pygettextpo: I do want to contribute quite a bit of code to it, and I am guessing I might be the one with the biggest interest in driving that :)18:38
danilobenji, thanks!18:40
lifelessdanilo: we can, but you should be in lp-canonical-emeritus anyway, which should give landing rights18:41
danilolifeless, right, cool, I am (in canonical-launchpad-emeritus)18:42
danilolifeless, (and actually, I was still in ~launchpad, so I left that team)18:44
lifeless:P18:44
lifelessSo, while that remains true I wouldn't expect any unusual friction; you still count as a reviewer, the policies don't seem onerous or irrelevant, ...18:44
lifelessbut like I say, we certainly can give it separate governance if thats useful18:45
abentleylifeless: EOD in 3+ hours.18:47
lifelessabentley: ok, cool. I have 2 other calls (one with the UK) but we should be able to find a timeslot.18:48
danilolifeless, sure, I don't have a particular need for it, as long as this works18:48
lifelessdanilo: if it doesn't, lets try to fix it first (its a new thing after all) and then iterate from there18:48
abentleylifeless: cool.18:48
danilolifeless, agreed, thanks18:48
abentleylifeless: I can't find a non-hacky way of using cursor.executemany via Storm, but my tests show a significant performance win for branch scanning.  Do you know why it's not provided?18:54
rick_hbenji: if you have a sec to review: https://code.launchpad.net/~rharding/launchpad/ajax_log_930141/+merge/9282719:10
benjirick_h: sure19:10
rick_hStevenK: ^^ for you since I know you were asking about it19:11
rick_hbenji: ty19:11
flacostelifeless: i wouldn't speaking a little later today, that could make it convenient to talk to abentley19:53
lifelesscool, thanks19:55
=== aalex-sat is now known as aalex
sinzuiSweet, bringing thunderbird to focus also kills X.20:24
lifelessabentley: lets try for a chat now?20:25
abentleylifeless: sure.  Preferred chat tech?20:25
lifelessabentley: I have a call with elmo but not sure just when; uhm skype is le trivial for me20:25
=== matsubara is now known as matsubara-afk
flacostelifeless: let me know when you are available21:40
sinzuiwgrant, I cannot hear you22:04
lifelessflacoste: in 5 ?22:08
flacostelifeless: might be best to reschedule22:08
StevenKrick_h: Yay!22:08
StevenKrick_h: That looks awesome.22:08
flacostelifeless: unless your agenda is short22:09
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugtasks: 4*10^2
lifelessflacoste: we could time box to 15m and see? If you're past EOD lets just adhoc it tomorrow22:13
flacostelifeless: timeboxing to 15 minutes suits me22:13
wgrantsinzui, wallyworld_: https://launchpad.net/ubuntu/precise/+localpackagediffs22:37
wgrantSee the column headers.22:37
lifelesswgrant: ok, you have mail23:03
lifelessI am popping out for a little bit, back soon23:03
sinzuiwgrant, StevenK, jcsackett, wallyworld_: I published part one of the terminology http://blog.launchpad.net/23:03
wgrantlifeless: Thanks.23:12
wgrantjelmer: Do you know what caused the performance regressions in your revision_history() branch last time?23:47
=== wgrant changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: wgrant | Firefighting: - | Critical bugtasks: 4*10^2
StevenKwgrant: Do I need to drop all indices first, or will dropping the table take care of everything?23:53
wgrantStevenK: You can't drop the table directly. Change its schema to todrop instead.23:55
wgrantupgrade.py does the special slony dance to drop them from there.23:55
StevenKwgrant: Ah yes. But will the indices disappear as well?23:55
wgrantStevenK: This is Entitlement?23:56
StevenKwgrant: Yes.23:57
wgrantStevenK: So, yes, indices go with the table automatically.23:59

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!