/srv/irclogs.ubuntu.com/2012/05/30/#launchpad-dev.txt

wgrantStevenK: It depends how you use setUpFields() to fiddle with the schema.00:02
StevenKwgrant: http://pastebin.ubuntu.com/1013974/00:29
wgrantStevenK: Myes?00:30
StevenKwgrant: I was having breakfast -- that diff is in relation to the question I asked you earlier.00:38
wgrantStevenK: If it works, great. If it doesn't work, that doesn't tell me why it doesn't work :)00:40
lifelesscjwatson: have you not been exposed to my 'imperative bug reports considered harmful' meme ?00:42
cjwatsonI don't think I used imperative "should" anywhere in that00:43
cjwatsonOh, the title.  Whatever.  Rephrase as you see fit; I must say I entirely fail to see the point in that meme.00:43
lifelesscjwatson: the title is imperative;) - its an imperative I agree with :)00:43
cjwatsonAnd I generally have trouble figuring out what you think I'm supposed to write instad.00:43
cjwatson*instead00:43
lifelessin this case, I'd have said something like 'queue tool requires direct DB access'00:45
cjwatsonOK.  I don't really see the benefit in spending time on consolidating the grammatical voice of bug titles, though; it seems like a very minor point at best.00:45
cjwatsonPerhaps this is the natural result of developers needing to file bugs for work they already have in progress in order to provide a place for QA tags to go.00:47
StevenKwgrant: http://pastebin.ubuntu.com/1013992/00:47
cjwatsonThat'll tend to result in people describing what they're doing rather than describing the original problem.00:48
cjwatsonAnyway, rephrased the title, but I can't promise to remember in future.00:48
lifelesscjwatson: I think the QA story is indeed part of the situation00:49
lifelesscjwatson: I find imperative bugs from devs or non-devs are equally likely to age terribly; yours wouldn't because the description is comprehensive00:50
wgrantStevenK: Sounds like you have information_type in field_names.00:50
lifelesscjwatson: also you're about to land a change, which makes the aging aspect less of a concern00:51
StevenKwgrant: I'm supposed to?00:51
wgrantStevenK: The default LaunchpadForm.setUpFields sets up fields that you specify.00:52
cjwatsonlifeless: Well, hoping that I actually get all the way through the several incremental changes in this series ;-)00:53
wgrantStevenK: Unless information_type is in the schema that setUpFields is using, putting it in field_names isn't a very good idea.00:53
wgrantStevenK: The fact that you override setUpFields to add in information_type manually suggests that it doesn't belong in field_names.00:53
StevenKwgrant: If I drop it from field_names then it doesn't show up at all00:56
wgrantStevenK: Ah, perhaps the default form template uses field_names to determine the order.00:58
wgrantStevenK: Why did you move information_type_field into setUpFields anyway?00:58
wgrantIt doesn't depend on anything there,00:58
wgrantStevenK: Normally you'd tweak field_names at some point, not just overriding the schema field because you can.00:59
StevenKwgrant: I need to override the schema field for the vocab00:59
wgrantAlso, super()00:59
wgrantThis isn't Python 2.1.01:00
StevenKSame error with super()01:02
wgrantsuper() is unrelated here, it's just that your code was looking like it belonged in 2002.01:02
wgrantStevenK: Grep for form_fields.omit01:04
wgrantTo see the usual pattern.01:04
StevenKwgrant: I can put it in BranchEditSchema, but the vocab doesn't respect the flags01:05
wgrantStevenK: If you really can't put it in the schema, you'll probably have to use the super/omit/+= approach.01:06
StevenKwgrant: Right, so it stays in field_names, but then I omit and re-add it01:07
wgrantStevenK: Except that this whole thing wants to be feature-flagged.01:07
wgrantObserve BugSecrecyEditView01:08
cjwatsonlifeless: I don't mean to be awkward, by the way.  Just found it hard to see the importance of it.  If you think it makes a measurable difference to how useful bugs are a while after they've been filed, fair enough.01:19
lifelesscjwatson: The prototypical poor bug looks like this01:20
lifeless"Do X"01:20
lifeless"Something detailed about the change"01:20
lifelessusually, when I ask the filer 6 months or a year later, they have no detailed recollection for what prompted them to file the bug01:21
lifelessthat is, the symptoms are long forgotten01:21
cjwatsonYeah, I can see that being troublesome01:21
lifelessso my actual thing is that we should always record the symptoms01:22
lifelessand that as a mind-hack, avoiding imperatives seems to encourage capturing the symptoms vs the fix01:22
cjwatsonAh, see, I would have found "record the symptoms" a much clearer way to put it than "no imperatives".01:22
cjwatsonYour mind-hack bounced off me :)01:22
lifelessindeed01:23
lifelessthe other, *much weaker* aspect is that in bug listings, having symptoms visible helps figure out if you're looking at the right bug01:24
cjwatson(Because, I think, "no imperatives" reminded me too much of pseudogrammatical nonsense like "passive voice is naughty".)01:24
lifelessI say weaker because you can click through and if the description is maintained or just good, its only time01:24
lifelesscjwatson: yes, martin pool also fell down that path01:24
lifelessI need to evolve how I present this, I think.01:25
mwhudsonhello, i'm michael i work for a software company called 'pedantical'01:25
lifelessMPT has filed dozens, if not hundreds of these poor bugs btw01:25
lifelesswith pages of exposition01:25
lifelessbut missing the actual symptoms.01:25
lifelessHe changed some years in and started recording symptoms too01:25
lifelessits quite dramatic when you scan through a couple K bugs, what patterns the brain finds :)01:26
StevenKwgrant: Right, so I was attempting to do the same, but there's an adapter in BranchEditView01:26
wgrantStevenK: An adapter?01:26
StevenK    def adapters(self):01:27
StevenK        """See `LaunchpadFormView`"""01:27
StevenK        return {BranchEditSchema: self.context}01:27
StevenKWith a @property01:27
wgrantStevenK: Um01:28
wgrantStevenK: BranchEditView already has a tonne of logic for this sort of thing.01:28
wgrantSometimes showing the private field, sometimes not01:28
wgrantUsing custom widgets01:28
wgrantin setUpFields.01:28
StevenKwgrant: Yes, have you seen my diff?01:28
wgrantStevenK: Yes, and it doesn't make much sense.01:29
wgrantBecause it's defining a setUpFields when there already is one.01:29
wgrantUnless you're defining it on a superclass -- hard to tell from that diff.01:29
StevenKwgrant: Sorry, I meant the total diff. http://pastebin.ubuntu.com/1014035/01:30
wgrantAh, BranchEditFormView01:30
StevenKYes.01:30
* StevenK stabs it01:30
wgrantStevenK: Line 25801:30
StevenKAh, so the setupFields in BranchEditFormView will never get called01:31
wgrantCorrect.01:31
wgrantTHis is why we shouldn't write code like it's 2002.01:31
wgrantBecause it's not 2002.01:32
StevenKwgrant: But the adapter I pasted above is why I can't do what BugEditSecrecyView does01:32
wgrantIn fact, maybe I should grep for anything calling a method on a CamelCase identifier and kill it :)01:32
wgrantStevenK: Why can't you put it in BranchEditSchema? Does the vocab evaluate the flag at instantiation time?01:34
StevenKwgrant: It was there originally, but it looks like the flag doesn't take effect01:38
wgrantI'd perhaps work out why it's not taking effect.01:39
StevenKwgrant: The class is at the top level, and the vocab has a () at the end so it happens at file read time?01:42
wgrantStevenK: If you instantiate it there, it will be insantiated there, indeed.01:43
StevenKwgrant: So I was trying to work around that like BugEditSecrecyView but that adapters thing uses the schema01:43
wgrantStevenK: Are you sure you can't override it?01:44
wgrantI mean, you may be able to do the usual thing in setUpFields.01:45
wgrantOr define the interface in a method somewhere.01:45
wgrantOr not instantiate the vocab at that point (I'm not sure if you have to)01:45
wgrantOr not use adapters.01:45
wgrantetc01:45
wgrantone of those ways will work01:45
StevenKwgrant: Why is the adapter even there?01:46
wgrantStevenK: Probably to adapt the data into the form required by the interface.01:47
wgrantNow01:47
wgrantI'm not sure it's entirely useful here, given that the adapter does nothing.01:47
StevenKIt gives a fail to adapt if I remove it01:48
wgrantWell, yes, clearly removing the adapter is going to not work very well.01:50
StevenKwgrant: But you said it does nothing! :-)01:51
wgrantThe adapter internally does nothing.01:51
wgrantIts presence does something, but it's probably not useful.01:51
wgrantThat doesn't mean you can just delete its definition without consequence.01:51
StevenKIf I change it from using BranchEditSchema to self.schema it also gives fail to adapt01:51
wgrantThat's not really surprising, since self.schema is BranchEditSchema.01:52
wgrantSo01:52
wgrantWhat I would try is the usual approach.01:52
StevenKBut they should be equal :-(01:52
wgrantDefine the class at view instantiation time.01:52
wgrantTHey aren't just equal -- they are the same object.01:53
wgrantSo changing from one to the other isn't going to change anything -- object identity holds between them.01:53
StevenKwgrant: I was doing that with def schema: class schema...01:53
wgrantStevenK: Right, that's probably the least invasive approach here.01:53
wgrantTry something that works.01:53
wgrantIf it works, it's possibly a good idea.01:54
wgrantIf it doesn't work, it's probably a good idea to try something else :)01:54
StevenKTypeError: ('Could not adapt', <Branch u'~person-name-100039/product-name-100042/branch-100046' (77)>, <InterfaceClass lp.code.browser.branch.BranchEditSchema>)01:57
wgrantStevenK: You're probably creating multiple instances of the class.01:58
wgrantErm, wait, that's not a class defined inside the class01:58
wgrantYou're still using the module-level one.01:58
StevenKwgrant: http://pastebin.ubuntu.com/1014057/01:59
wgrantStevenK: That has the obvious problem that the interface will be recreated each time self.schema is evaluated.02:00
wgrantWhich is less than ideal, as the that means self.adapters will be returning a new interface each time, so it's entirely useless.02:01
StevenKI thought that was BugEditSecrecyView was doing?02:01
wgrantIt's not adapting.02:01
StevenKAh, true.02:02
wgrantIt probably only evaluates self.schema once, and even if it does it multiple times it doesn't care about their identity.02:02
wgrantJust their content.02:02
wgrantAdaption cares about identity.02:02
StevenK:-(02:03
lifelesshmm02:03
lifelessanyhone happen to know, will the PPR consider e.g. memcache time as 'SQL' time ?02:03
wgrantlifeless: I believe so.02:03
lifelesswgrant: +login02:03
wgrantlifeless: AFAIK its logic predates non-SQL timedactions02:03
lifeless1.4s 99th percentil, 0.2s 99th percentil of SQL02:04
lifelessso 1.2 seconds doing <what>02:04
wgrantHm, maybe it's smarter than I thought02:04
lifelessWe track at least one of our calls to SSO02:04
lifelesspossibly the nested calls thing is it02:04
lifelessah yes, that will be showing 0ms times02:04
StevenKLaunchpad Production Errors02:04
StevenKOOPS Tools Production Errors02:05
StevenKProduction Errors02:05
StevenKFAIL02:05
wgrant        sql_statements = da.get_request_statements()02:05
wgrant        sql_milliseconds = sum(02:05
wgrant            endtime - starttime02:05
wgrant                for starttime, endtime, id, statement, tb in sql_statements)02:05
lifelessStevenK: if thats mail, great success02:05
wgrantlifeless: Oh, prod OOPSes are going to oops.c.c now?02:05
lifelessyes02:06
lifelesseasing over02:06
StevenKlifeless: Oh, excellent. So now developers have to skip six useless mails a day rather than four02:06
wgrant:/02:06
wgrantWell02:06
wgrantMore notably, it's now impossible to analyse OOPSes usefully.02:06
lifelessStevenK: we'll disable the other one shortly; then update the linkification logic02:06
wgrantWe can't get the actual files or grep around to get trends etc.02:06
lifelesswe haven't finish the setup02:06
lifelessits on a dedicated machine for scaling, and we should be able to get shell access02:07
StevenKSo Oops gets a machine and LP Jenkins doesn't?02:07
lifelessI don't know where to even start02:12
lifelessbigjools: does maas use package django? just python-django ?02:14
bigjoolslifeless: yeah pulls in the package02:15
StevenKwgrant: I wonder if I can have the schema out in the class and then override the field02:34
wgrantStevenK: Define it in the top level of the class body? That'll be a single interface for all instances of that class, so mutating it is not a good idea.02:47
hbt272hello03:07
StevenKwgrant: Mutating the field is a bad idea?03:08
hbt272anybody know vala langueges?03:08
wgrantStevenK: If the class is shared between all instances, yes.03:08
StevenKwgrant: It's used for BranchEditWhiteboardView BranchEditStatusView BranchEditView BranchReviewerEditView03:10
StevenKSo it's probably safe to rip out and replace information_type in BranchEditView.setUpFields()03:10
wgrantStevenK: I mean the single interface class will be shared between BranchEditView etc. instances.03:11
wgrantSo you'll be mutating semi-global state03:11
wgrantJust like if you had class Foo:03:11
wgrant   bar = []03:11
wgrantAnd started poking in bar, all instances would see it.03:11
StevenKwgrant: Right, I was going to leave information_type in BranchEditSchema withouth the vocab and then replace the field in BranchEditView.setUpFields()03:12
wgrantStevenK: But you can't modify BranchEditSchema if you do it like that.03:12
lifelessStevenK: wgrant: what are you guys cooking up?03:12
wgrantWell, you can, but it's evil and I'll reject it :)03:12
StevenKwgrant: I wasn't going to -- I was going to self.form_fields.omit() and so on03:13
wgrantStevenK: If you're going to do that, you needn't move BranchEditSchema at all.03:13
wgrantI thought you had a reason for not doing this.03:13
wgrantthe adapter broke it or something.03:13
StevenKwgrant: Right, I have moved BranchEditSchema back03:15
StevenKTypeError: unsupported operand type(s) for +=: 'FormFields' and 'Choice'03:16
StevenK:-(03:16
wgrant+= Fields(foo_field)03:17
StevenKfrom zope.formlib import form03:19
StevenKRARGH03:19
StevenKI hate that, and then form. is scattered all over the file03:19
wgrantHope you never have to work on bzr :)03:20
wgrantThey do it a bit.03:20
wgrantI'm not really a huge fan.03:20
StevenKI'm tempted to fix it in this file, but this branch is already 460 lines.03:20
StevenK% bzr grep 'from zope.formlib import form' | wc -l03:21
StevenK2803:21
StevenKMaybe I will fix them03:21
StevenK(In a seperate branch)03:21
wgrantStevenK: It's a matter of opinion whether it's something that should be "fixed".03:27
StevenKwgrant: It annoys me... It may annoy me enough to bend the codebase to my will.03:28
hbt272how can to change gtk window background in vala langueges? Please help03:30
StevenKwgrant, wallyworld_: https://code.launchpad.net/~stevenk/launchpad/branch-information_type-ui/+merge/107909 would appreciate a review.03:34
wallyworld_ /me looks03:34
wgrantStevenK: Does that actually work?03:36
wgrantYou aren't hiding explicitly_private when the flag is set.03:37
lifelesshbt272: this channel has nothing to do with gtk03:37
lifelesshbt272: I think you are not getting answers because people don't know. You would be better off asking in a desktop development channel.03:37
wgrantStevenK: Oh, you do that separately down the bottom. That's a bit odd. I'd just customise field_names based on the flag and have everything else depend on the contents of field_names.03:37
hbt272lifeless: thank you!03:38
StevenKwgrant: My reasoning behind that was two-fold: 1) The current rules look complex, and 2) We are going to revisit this anyway due to self-service, so thought it could stay put until then.03:39
wgrantStevenK: Does omit break if the field isn't there?03:40
wgrantStevenK: I'd replace the stuff in "if not show_private_field" with "self.form_fields = self.form_fields.omit('explicitly_private', 'information_type')"03:43
wgrantAnd the thing which replaces the field on line 257 of the diff with "if self.form_fields.get('information_type') is not None"03:44
wgrantThat encapsulates the field selection logic in field_names.03:45
wallyworld_StevenK: sorry, got pinger by thumper, looks like wgrant is doing the review03:48
wgrantYup03:49
StevenKwgrant: But information_type will always be not None?04:04
wgrantStevenK: Not if it's not there.04:05
StevenKwgrant: information_type is always in the schema04:06
wgrantStevenK: if 'information_type' in self.field_names, then.04:08
StevenKwgrant: Right, that sounds sensible04:09
StevenKwgrant: Are those your only two comments?04:11
wgrantStevenK: http://pastebin.ubuntu.com/1014176/04:12
wgrantUm, can revert the move of show_information_type_in_ui; that isn't necessary any more.04:12
StevenKWhy moving the schema?04:13
wgrantSo we don't have to override the field.04:13
wgrantWe instead create the class when self.schema is evaluated.04:13
wgrantAt which time the feature flag is already in place.04:13
StevenKBut doesn't that end up with beng unable to adapt?04:14
wgrantSame thing as BugSecrecyEditView, except with @cachedproperty to preserve identity for adaption.04:14
StevenK*being04:14
StevenKAh.04:14
StevenKwgrant: That looks excellent.04:22
StevenKwgrant: So you approve, or now I should get wallyworld_ to review it? :-)04:30
wgrantStevenK: Was waiting for the diff to update.04:30
StevenKIt should be done04:30
wgrantIndeed.04:30
* wallyworld_ laments that getPrecachedPersonsFromIDs doesn't seed the ValidPersonCache :-(04:36
StevenKwgrant: Did you see cjwatson's MP about CustomUpload?04:36
wgrantwallyworld_: ValidPersonCache is the most horrible thing in the world.04:36
StevenK... aside from my indenting.04:36
wgrantwallyworld_: But there should be an option to getPrecachedPersonsFromIDs that cached it, I thought.04:37
wgrantStevenK: I veeeeery nearly said that.04:37
StevenKHahahaha04:37
wgrantBut decided it could be mean.04:37
wallyworld_wgrant: the api seems to indicate that but it doesn't work04:37
wgrantwallyworld_: How're you accessing it that it doesn't appear to be cached?04:38
* StevenK wonders why LP pages are taking ~ 3 minutes to refresh04:38
wgrantStevenK: Because you have too many MPs open.04:38
wallyworld_wgrant: person.is_valid_person does a ValidPersonCahce query even after calling getUtility(IPersonSet).getPrecachedPersonsFromIDs(grantees, need_icon=True, need_validity=True)04:39
StevenKSIGH04:39
StevenKLONGPOLL!04:39
wgrantwallyworld_: Did you evaluate the resultset?04:39
StevenKwgrant: Can I have a +1 now?04:39
wgrantwallyworld_: getPrecachedPersonsFromIDs doesn't actually get precached persons from IDs.04:39
wgrantwallyworld_: It gets a resultset which gets precached persons from IDs.04:40
wgrantTry listifying it.04:40
wgrantStevenK: Working on it.04:40
wgrantA few more comments.04:40
wallyworld_wgrant: i didn't evaluate it. that may be what i'm missing. will try that, thanks04:40
StevenKWe can't just delete ValidPersonCache?04:40
wgrantStevenK: I plan to achieve its demise within the year.04:40
StevenKFor crimes against humanity04:40
wgrantFor it is an abomination whose reign of terror must be stopped.04:41
wallyworld_wgrant: yes, that was the problem, thanks04:43
wgrantwallyworld_: Great.04:43
wgrantwallyworld_: I've fixed a few views that were doing the same thing.04:44
wgrantOver time04:44
wgrantAttempting to precache, but not actually doing anything of value.04:44
wallyworld_i can imagine04:44
wgrantStevenK: You have my +1 but with various comments.04:44
* wallyworld_ is glad there was a query count test04:44
wallyworld_which failed so it did its job04:44
wgrantYup04:45
StevenKwallyworld_: You can add lists together, you know, right?04:46
StevenKRather than .insert(0, ...04:46
wallyworld_StevenK: the order is preserved?04:47
wgrantStevenK: ... says he who just used [2] :P04:47
wgrantBut yes, I wouldn't use insert() as wallyworld has.04:47
wgrantMostly because it's confusing doing it twice to get opposite order.04:47
wallyworld_StevenK: feel free to do a drive by in your branch so long as the ordering remains as expected04:47
wgrantStevenK: Are you looking at Colin's branch?04:48
wgrantIf not, I will.04:48
StevenKwgrant: I have done, I'm happy with it, but given it's wide-reaching I wanted a second opinion.04:48
wgrantI don't see a review.04:49
StevenKhttps://code.launchpad.net/~cjwatson/launchpad/custom-upload-parsing/+merge/10765604:49
wgrantThere's an MP, but no comments.04:50
wgrantDid it get eaten by longpoll?04:50
StevenKI haven't commented yet04:50
StevenKI can if you wish04:50
wgrantI shall fetch a drink and look over it.04:51
* StevenK stabs longpoll more04:51
wgrantHm04:51
wgrantMP diffs are a bit more readable with the excessive line-height disabled.04:51
StevenKwgrant: The portlet is not used for the edit form class, but BugView and BranchView, and they *don't* implement show_information_type_in_ui04:52
wgrantStevenK: Ah, indeed, I am stupid.04:52
wgrantStevenK: But they should implement that.04:52
wgrantIt's only temporary, and it's going to be shorter to have it in the view classes.04:52
wgrantAnd less hideous.04:52
StevenKJust so it doesn't look utterly bonkers04:52
StevenKwgrant: The portlet is tested elsewhere in a doctest04:57
wgrantStevenK: Ah. That's what I would have expected if it was eg. Bugs, but I thought Code had a bit more sense than that.04:58
StevenKClearly not04:59
wgrant /win 305:00
wgrantBah05:00
StevenKwgrant: http://pastebin.ubuntu.com/1014208/05:01
wgrantStevenK: hat was that nbsp doing there? A leftover from the link that isn't there yet?05:03
StevenKwgrant: It was copied from the bugs template, so likely.05:04
wgrantRight. LGTM, then.05:04
wgrantThanks.05:04
wallyworld_hurry up launchpad, scan my @!@$!% branch already05:10
StevenKwallyworld_: You used to be on the code team, fix the scanner.05:11
* StevenK hides.05:11
* wallyworld_ gets out flamethrower05:11
* wallyworld_ blames thumper05:11
StevenKwallyworld_: Do you recall what AMI your ec2 runs this morning used?05:16
wallyworld_StevenK: 529 i am pretty sure05:16
StevenKThat is excellent news.05:16
wallyworld_hmmm. i think this branch is stuck. 15 minutes and counting05:17
wallyworld_StevenK: yes, glad you fixed it05:17
wallyworld_ah, just completed05:18
StevenKwallyworld_: I'm still a bit unhappy that it took me until 1:10am to do so.05:18
wallyworld_StevenK: take the last hour or so of today off. have a beer :-)05:19
StevenKENOBEER05:19
wallyworld_wine then :-)05:19
StevenKENOWINE05:20
StevenKENOALCOHOL05:20
* StevenK gets tempted to fix ec2 images to not use $EMAIL05:22
StevenKActually how does even *work*05:22
wallyworld_you have no alcohol in the house? shame05:23
wallyworld_what, is that a whip i can hear?05:23
* StevenK stabs buildbot05:32
wgrantUsual bzr thing?05:36
StevenKNo, my fault05:36
wgrantNo05:36
wgrantThis looks legit.05:36
wgrantYeah05:36
StevenKI have a small fix05:37
StevenKwgrant: https://code.launchpad.net/~stevenk/launchpad/testfix-no-builder-description/+merge/10791305:42
wgrantStevenK: If it works, ship it.05:44
StevenKwgrant: Did you look at cjwatson's MP?05:44
wgrantStevenK: Most of the way there. It's the sort of thing I'd tend to self-review just to avoid subjecting a reviewer to it.05:47
StevenKYah, self-reviewed and landed05:49
wgrantNo, I mean cjwatson's thing.05:49
wgrantBut yes, yours was obviously self-reviewable :)05:49
StevenKAh05:50
wgrantStevenK: It has my +105:53
StevenKwgrant: Excellent06:08
adeuringgood morning06:51
=== almaisan-away is now known as al-maisan
adeuringhi al-maisan06:51
al-maisanmoin adeuring06:51
al-maisanhow are things?06:51
=== al-maisan is now known as almaisan-away
cjwatsonwgrant: Hmm.  I did initially try a classmethod for this custom upload rearrangement and it didn't seem to come out shaped very nicely; in particular I definitely found moving the target directory stuff out of __init__ to be a win (Jeroen suggested consolidating *AlreadyExists on the bug, and I never liked the way that it sometimes failed in the constructor and sometimes in process anyway)07:00
cjwatsonBut I can try again if you like, maybe with just the classmethod change but leaving __init__ as I currently have it?07:00
wgrantcjwatson: Mm, that's true, it could fail in setTargetDirectory if it's badly formatted. So maybe.07:01
wgrantAnyway, it's just a suggestion.07:02
=== frankban changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: frankban* (rvba) | Firefighting: - | Critical bugs: 3.47*10^2
cjwatsonCould I have "Status: Approve" on https://code.launchpad.net/~cjwatson/launchpad/queue-api-accept-reject/+merge/107894 so I can land it?  It has a +1 review already.08:18
StevenKcjwatson: Sorry about that.08:19
StevenKcjwatson: Done.08:19
cjwatsonNP, thanks08:19
StevenKIs scripts/ftpmaster-tools/queue dead yet? :-)08:19
cjwatson... a bit of work left for that08:20
StevenKI know :-)08:21
wgrantcjwatson: You probably want to make QueueInconsistentStateError a 400 rather than an OOPS08:32
wgrantcjwatson: The browser code catches it and turns it into a non-OOPS error, but the API will default to OOPSing.08:32
cjwatsonwgrant: Hm.  I've already started landing this.  Should I abort?08:34
cjwatson(I agree)08:34
wgrantcjwatson: No, the OOPS reports are shit enough already that nobody will notice.08:35
wgrantBut a quick followup would be nice.08:35
cjwatsonThat said I didn't start ec2 land that long ago.  Probably more economical to kill it.08:35
wgrantPotentially.08:35
* cjwatson does so.08:36
cjwatsonwgrant: So http://bazaar.launchpad.net/~cjwatson/launchpad/queue-api-accept-reject/revision/15326 ?08:54
jmlcan someone please land this approved branch for me?09:02
jmlhttps://code.launchpad.net/~jml/launchpad/archive-commercial-rename-support/+merge/10781909:02
jmlhmm, wait, ec2 land works for me, I think.09:02
jmlnever mind.09:02
wgrantcjwatson: Looks good.09:04
cjwatsonwgrant: Thanks.  Landing for real now.09:07
wgrantGreat.09:09
wgrantOh09:10
wgrantECHAN09:10
mgzwgrant: from #launchpad, so what would be the steps if we couldn't get a branch owner to poke things themselves?10:08
mgzthe same but a l-osa?10:08
jmlmgz: there used to be a team that had write privs to all branches. I guess any administrator could still do that.10:10
wgrantmgz: Right, webops have write access to all branches.10:12
wgrantSo they can carry out the same actions, and it's sometimes easier to do that than walk the user through it.10:12
wgrantIt looks like the relevant commit was directly to trunk, so hopefully none of the stacked-on branches have a copy of the corruption.10:16
StevenKjml: That team (bazaar-experts) is long dead.10:20
cjwatsonwgrant: I tweaked https://code.launchpad.net/~cjwatson/launchpad/custom-upload-parsing/+merge/107656 a bit; if that looks OK to you now, could I have "Status: Approved"?10:41
wgrantcjwatson: Thanks. Done.10:43
wgrantmgz: The example invocation in the script is out of date.11:30
wgrantmgz: The statement in the bug is correct.11:30
wgrantPPA stats have not been updating since the 21st.11:30
mgzwanted the guy the clarify the report11:34
mgzbut if it's something you can just poke someone to fix, that's fine.11:34
wgrantA quick look at the crontabs shows that the script was disabled on the 21st due to germanium load issues.11:34
wgrantgermanium is still insanely loaded, so it's possibly not a good idea to reenable it.11:34
mgzso... convert to question, say we know about the problem but it's not something being fixed right now?11:39
czajkowskior triage it high still and adda note about the scripts?11:41
wgrantOr bug IS to give germanium some minions.11:41
mgzstill need to find a diagram of what box does what with launchpad11:42
mgzgermanium is in charge of what exactly?11:42
wgrantcarob:~stevenk/name-to-service is probably the best we have right now.11:43
wgrantgermanium is ppa.launchpad.net11:43
wgrantIt does everything relating to PPAs, except builds.11:43
wgrant(including serving PPA downloads to every PPA-using machine in the world)11:44
elmothere's a ticket about germanium frontends FWIW11:46
wgrantStevenK: Your list is missing bilimbi, btw.11:47
wgrantelmo: Yeah, but...11:47
wgrantStevenK: Also mcmurdo11:48
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
noodles775Hi! I've just setup an LP dev environment, but get the error "String or Integer object expected for key, unicode found" when trying to run a test - http://paste.ubuntu.com/1014687/12:44
noodles775Any pointers as to what I've missed?12:44
jmlHmm.12:44
jmlThat looks very familiar.12:44
jmlnoodles775: that's a testr bug.12:45
jmlnoodles775: the failure is related to the dirdbm (or whatever) db that itt uses.12:45
=== almaisan-away is now known as al-maisan
noodles775Thanks jml - I'll just run the tests old-skool then :)12:45
jmlnoodles775: np.12:46
=== al-maisan is now known as almaisan-away
noodles775jml, achuni: an alternative for large htpasswd files: http://stackoverflow.com/questions/6590789/linux-htpasswd-file-too-big-more-than-2000-users12:54
noodles775(again, may or may not be relevant depending on the measurements, but looks likely that it will be :) ).12:55
jmlthat would be a GET-time issue rather than a .htaccess-generation-time issue. still relevant though.12:56
mgzgmb: on subunit and avoiding stream breakage from other things mixing in13:12
mgzwhat bzr does is use a dedicated pipe, avoiding most of that pain13:12
mgzmight not be simple with indirection through zope.testing but is much safer than messing with the process std streams13:12
gmbmgz: Ah, thanks for the heads-up. That might make more sense, assuming we can untangle how that interacts with the parallelisation story.13:13
mgzright, in bzr it's simple because we do the fork ourselves,13:14
mgzmultiple packages make that a bit more of a juggling act though13:14
=== abentley changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: frankban* (rvba), abentley | Firefighting: - | Critical bugs: 3.47*10^2
cjwatsonjml: I think I'm going to plagiarise your foul column renaming hack.13:40
jmlcjwatson: best of luck.13:40
jmlthat reminds me13:45
jmlthe example I cribbed from has a bug, I think.13:45
cjwatsonoh?13:46
jmlnothing relevant for us, I don't think13:47
jmlcjwatson: SourcePackageRelease sets 'copyright' to the default Python copyright even if it's not provided13:51
cjwatsonThat's only due to copyright being a builtin, yes?13:53
jmlyeaah13:53
jmlotherwise it would be a NameError13:53
cjwatsonAlthough I thought we used -S13:53
jmloh, we do.13:54
cjwatsonSo NameError13:54
jmlRight.13:54
cjwatsonThough do we?  If you run bin/py on its own, you get a copyright builtin.13:55
cjwatsonBecause even though its #! line has -S, it re-execs python.13:55
cjwatsonBut I guess bin/run uses -S in #! too.13:55
jmlit's also difficult to grep for code that creates one14:00
tedgHey, with the new privacy work going on will that allow blueprints to be private?14:26
=== mbarnett` is now known as mbarnett
jmlwhat invalidates a token?14:43
flacostemrevell: are we having the work items checkpoint?15:07
noodles775jml: a setting the date-deactivated, let me check the details.15:08
jmlnoodles775: I think it's unsubscribing someone who has an active token15:08
noodles775abentley: time for a review? https://code.launchpad.net/~michael.nelson/launchpad/982938-dont-load-all-tokens-for-all-ppas-into-memory/+merge/10798015:09
abentleynoodles775: Be with you in a minute.15:09
noodles775jml: setting ArchiveAuthToken.date_deactivated (see soyuz/model/archiveauthtoken.py:58 for the helper method, but it can also be done via the API with the right privs).15:14
abentleynoodles775: looking...15:22
noodles775Thanks abentley :)15:22
abentleynoodles775: It looks like you are not certain this change will help.15:23
abentleynoodles775: Why not do it all in a single query?15:24
noodles775abentley: some private PPAs have *lots* of tokens...15:24
noodles775abentley: normally in any 5minute period, there will be only a number of PPAs affected, so doing one extra query per PPA seems reasonable to loading those tokens into memory (in a dict)15:26
abentleyRight.  I'm asking about 1 query vs many queries, not about many queries vs dict.15:27
noodles775abentley: Ah, I see. So one query to get a resultset of all the tokens, and if it was ordered by PPA id, we could potentially iterate that...15:28
abentleynoodles775: right.15:29
noodles775abentley: let me try.15:29
abentleynoodles775: One way would be nested generators.15:29
abentleynoodles775: Though it's probably easier to handle it in the final loop.15:32
abentleynoodles775: Something like this for the query? http://pastebin.ubuntu.com/1014950/15:36
noodles775abentley: ah, getting a tuple of (archive, tokens) will be much simpler than iterating based on an ordered result set... thanks!15:38
abentleynoodles775: np15:41
abentleynoodles775: If it works out, you could also test the query count.15:41
=== salgado is now known as salgado-lunch
noodles775abentley: I don't see a way I can do that without needing to create an in-memory list of tokens for a PPA (ie. it's no longer a result-set of tokens).16:07
abentleynoodles775: Fair enough.16:08
noodles775abentley: but I also fonud another spot where the result-set of tokens will be used in memory (it's sorted in another function...)16:09
noodles775abentley: I'm just seeing if I can fix that.16:09
abentleynoodles775: r=me16:09
noodles775abentley: Thanks, but can you hold off on approving until I check this other spot where it'll turn the result set into an in-memory list?16:10
abentleynoodles775: okay.16:10
=== frankban changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: abentley | Firefighting: - | Critical bugs: 3.47*10^2
noodles775abentley: I've pushed up some extra revs (15331..15333) which remove one place where the tokens were sorted in memory, instead sorting them in storm.16:35
abentleynoodles775: Looks good.  r=me16:38
abentleynoodles775: I wonder whether you could get the behaviour you want (loop by ppa, then tokens) using itertools.groupby16:39
noodles775Thanks abentley. re. itertools.groupby, I think it would be possible, but would require quite a refactor as htpasswd_credentials_for_archive() currently assumes it'll be passed just the tokens for the one archive.16:53
=== salgado-lunch is now known as salgado
noodles775abentley: and (really sorry) I've just noticed that after the last refactor you just checked, I can remove _getValidTokensForPPAs completely now, afaics... checking.16:54
noodles775abentley: so, r15334 removes the now unecessary _getValidTokensForPPAs.17:05
* noodles775 updates the test instructions.17:05
noodles775abentley: sorry for the incremental realisations there, but I believe that's it :) I need to run, but will check back later in case you've any issues with the recent revisions. Thanks for all your help!17:11
noodles775abentley: and if you are happy with it as is, can you please set the status to approved? Thanks.17:11
jmlwhy does getNewPrivatePPAs work from the date_completed of the last successful script run, rather than date_started?17:13
jmlgetNewTokensSinceLastRun works from date_started17:13
abentleynoodles775: r=me17:14
noodles775jml: I could only assume that one of them was updated due to a bug, and teh other was missed.17:14
noodles775Thanks abentley - do you send it off to test and land? I've got tests running on my dev instance anyway to be sure myself.17:15
jmlcorrect code is so much easier to understand17:15
abentleynoodles775: I can do that.17:15
noodles775Great, thanks again.17:15
jmlnoodles775: oh hey, it was you that fixed that bug :)17:18
* jml discovers https://bugs.launchpad.net/launchpad/+bug/628711 17:18
_mup_Bug #628711: generate-ppa-htaccess is too slow <lp-soyuz> <p3a> <ppa> <qa-ok> <software-center> <Launchpad itself:Fix Released by michael.nelson> < https://launchpad.net/bugs/628711 >17:18
czajkowskisinzui: are you about ?18:13
sinzuiI am18:13
czajkowskisinzui: having some issues when I renamed a project stuff hasn't followed through18:14
czajkowskisinzui: https://answers.launchpad.net/launchpad/+question/19832018:14
sinzuiczajkowski, Looks like you did rename it? What has not happened?18:15
czajkowskibugs from old project name have not been migrated over18:16
czajkowskiit;s old name is still being displayed on parent project page18:16
sinzuithat is memcached18:16
czajkowskisinzui: and on top of bugs/blueprints its still referred to as old name18:16
sinzuiThe project listing is expensive. It takes 1-3 hours to clear I think18:16
czajkowskiit was done on the 28th18:17
sinzuiczajkowski, the other displaynames you mention can only be changed by the project maintainer18:17
sinzuionly jonobacon can change the display name that the pages show. You can change the Launchpad Id.18:18
sinzuiczajkowski, tell jono to visit https://launchpad.net/ubuntu-accomplishments-web/+edit update his project18:19
czajkowskisinzui: thanks18:19
czajkowskisinzui: and the bugs issue? will resolve18:20
czajkowski?18:20
sinzuithat is right. bugs and blueprints are doing exactly what jono said he wanted18:20
sinzuiczajkowski, but remember that the projects listed on the project group page are cached for a few hours18:21
czajkowskisinzui: thanks thought I was going crazy18:21
sinzuiczajkowski, we have a very old bug asking us to change name => launchpad_id and displayname => name so it is clear about what is changing18:22
=== abentley changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugs: 3.47*10^2
jambigjools, deryck, flacoste, gary_poster, jam, lifeless, mrevell, sinzui team lead meeting in 5 minutes, hopefully I set it up correctly: https://plus.google.com/hangouts/_/495930018d0f18610dd093d77c49542be643d0e5#19:26
jelmerjam: it's a good thing you reminded jam about it ;)19:27
jamjelmer: I didn't want to forget19:27
jamits a copy paste, I didn't feel like editing anything19:27
jelmerI suspected it was something like that, just teasing :)19:27
* jelmer gets back to reviewing19:27
noodles775Hrm, while running all LP tests on a precise instance, I get lots of errors like "TypeError: getresponse() got an unexpected keyword argument 'buffering'" (http://paste.ubuntu.com/1015322/). Is this something I can fix on my instance, or does it need to be a certain python version/distroseries?19:47
* noodles775 checks dev.launchpad.net again...19:47
lifelessnoodles775: LP *should* run in precise, but is only *validated* to run on Lucid.19:49
lifelessnoodles775: https://dev.launchpad.net/Running/LXC19:49
noodles775Thanks lifeless19:50
lifelesswe're still running python2.6 in production19:51
sinzuiwallyworld_, ping21:41
wallyworld_sinzui: hi21:41
sinzuiwallyworld_, I thought the widget required an element with editicon as a class. I suppose not since you tested it in two browsers to verify it renderered21:42
james_wdoes someone have a few minutes to review https://code.launchpad.net/~james-w/launchpad/drop-filecmp/+merge/108021 please?21:43
wallyworld_sinzui: yes, it appears to work fine. but i do recall the editicon requirement. i will check the choiceesource code to see what it's doing21:43
* sinzui is looking too21:43
sinzuiwallyworld_, isn't it needed by the spinner..which might not be an issue with enums21:44
wallyworld_could be, still looking21:44
jmljames_w: lgtm :)21:45
james_w:-)21:46
wallyworld_sinzui: the editing works because clickable_content is true21:46
wallyworld_sinzui: yes, because no patch plugin is used since it's not going to the server etc, the editicon is not required21:49
wallyworld_but i could add that class to the anchor is suppose21:50
sinzuiokay, thank you. r=me21:51
sinzuiwallyworld_, I don't like the editicon since it is not ever clear what the element has to be and when it is used21:51
wallyworld_yeah21:52
sinzuiwallyworld_, wgrant, StevenK, jcsackett, Should we do something about this bug? https://bugs.launchpad.net/launchpad/+bug/24696422:02
_mup_Bug #246964: The new privacy/security portlet should use lock icons <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/246964 >22:02
lifelesswallyworld_: whasts the status with rev 1532522:02
wallyworld_lifeless: rollback branch landed22:03
lifelesswallyworld_: in  buildbot at the moment ?22:03
wallyworld_lifeless: no, bb still has 4 hours to run before it picks up my landing22:03
lifelessok22:03
lifelesswe have a near-critical situation with software centre22:03
wallyworld_lifeless: when will the new work make bb run faster? soon i hope :-)22:03
lifelesshardware has been requested for that22:04
lifelesswe're expecting 30m runtimes22:04
wallyworld_yay22:04
lifelessso we may end up fiddling with the landing pipeline over the next 15-24 hours22:04
lifelessjust a headsup, for details see -ops22:04
lifelesswho has access to qa http://bazaar.launchpad.net/~launchpad-pqm/launchpad/stable/revision/15323 ? I'm guessing web ops and soyuzy folk only?22:06
lifelesswallyworld_: could I impose o you to qa 15327 - information_type in the branch UI if a feature flag is set.22:09
wallyworld_lifeless: no problem. we're in a standup now, can it wait till after that?22:10
jmlmeetings!22:10
lifelesswallyworld_: sure thing22:10
wallyworld_ok22:10
lifelessjust smoothing the path for this mini-crisis22:10
wallyworld_lifeless: so, i didn't grok fully from scanning -ops how lp landings are connected to a software centre issue22:11
lifelessoh foo23:02
lifelessmy landing setup is bong23:02
lifelesswallyworld_: can you lp-land a branch for me ?23:02
lifelesshttps://code.launchpad.net/~lifeless/launchpad/generate-htaccess-speed/+merge/10807423:03
wallyworld_lifeless: sure23:03
lifelessmy lp-land setup is still broken and this is time sensitive23:03
lifelessneed it in the buildbot run23:03
wallyworld_lifeless: justing finishing the standup  now. will do it in 3 minutes and 23 seconds23:03
jcsackett the 23 seconds tells you he's serious.23:04
lifelesswallyworld_: thank23:06
lifelesswallyworld_: I have to go for my monthly allergy shot now23:06
wallyworld_lifeless: np. being done was we speak23:06
lifelesswallyworld_: I probably won't be back until the buildbot run has started, so I'm going to hand off the entire 'get it landed' bit to you :) - if it doesn't work *and* you need my input to correct it please ring my nz mobile (in the directory)23:07
wallyworld_will do. enjoy you alergy shot :-)23:08
lifelessthanks23:08
mwhudsonlifeless: i presume you've seen http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed already?23:54

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