/srv/irclogs.ubuntu.com/2011/10/13/#launchpad-dev.txt

pooliewallyworld: bug 1342, whoa :)00:34
_mup_Bug #1342: Can't delete spurious "Affects" lines (bugtasks) from bug reports <canonical-losa-lp> <lp-bugs> <Launchpad itself:In Progress by wallyworld> < https://launchpad.net/bugs/1342 >00:34
wallyworldpoolie: are you happy or sad?00:34
pooliehappy and impressed00:34
wallyworldhappy yes, there's nothing to be impressed about00:35
pooliei would like if you qa http://launchpad.net/bugs/861979 some time so my oops fix can have a go at production00:35
_mup_Bug #861979: utf-8 encode diffs attached to outgoing email <qa-needstesting> <Launchpad itself:Fix Committed by wallyworld> < https://launchpad.net/bugs/861979 >00:35
wallyworldpoolie: doing it now but it's being difficult00:35
pooliebecause not enough of that stuff works easily on qas?00:35
wallyworldbranch scan job oopsed00:35
StevenKpoolie: We can't deploy until Monday at least.00:35
lifelesswallyworld: hey01:02
lifelesswallyworld: whats the implementation strategy you guys are planning for bug 1342 ?01:03
wallyworldlifeless: hello01:03
_mup_Bug #1342: Can't delete spurious "Affects" lines (bugtasks) from bug reports <canonical-losa-lp> <lp-bugs> <Launchpad itself:In Progress by wallyworld> < https://launchpad.net/bugs/1342 >01:03
StevenKlifeless: Magic01:03
lifelessStevenK: sadly, I'm too jaded to consider that a great answer ;)01:03
wallyworldlifeless: log activity and delete unless it is the last task on a bug01:03
wallyworlddo it via api initially01:04
StevenKThat isn't what lifeless meant.01:04
StevenKAnd blocked via flag01:04
wallyworldyes01:04
StevenKPersonally, I'm picturing IBugTask.remove()01:04
lifelessprobably wants to be on Bug, but I'll let you guys figure that out01:05
wallyworldi haven't looked yet. doing qa and other administrivia01:05
lifelesswallyworld: things to watch out for - conjoined masters will make 'last task on a bug' hard to determine01:05
wallyworldhmmm01:05
StevenKConjoinness rises its ugly head to bite us in the ass again01:06
wallyworlddumb question - what exactly is a conjoined master?01:06
lifelesswallyworld: will notifications be sent to the context the task is removed from ?01:06
wallyworldlifeless: i expect so01:06
lifelesswallyworld: your team can help you on the conjoined master thing :) - I mention it because its not obvious until you're in the trenches.01:06
StevenKwallyworld: BugTask for Ubuntu, and then it's nominated for natty01:06
* wallyworld needs to buy some gum boots01:07
lifelesswallyworld: I think they should; as there isn't a LEP, I'm using this forum here to toss some constraints your way :)01:07
lifelessStevenK: uhm, no. :) thats not a conjoined master01:07
StevenKOh01:07
StevenKlifeless: I don't like it on IBug -- I prefer the idea of grabbing IBug.tasks, grabbing the one you want and calling .remove() or .delete() on it01:07
lifelessStevenK: wallyworld: when you create a task for a *pillar directly* one task is made. If you also create a task for that pillars *development focus*, then those two tasks are shown as one in the Web UI, and are together a 'conjoined master'01:08
lifelessStevenK: sometimes that will delete two tasks.01:08
wgrantWhy would it delete two tasks?01:08
lifelessStevenK: so while you like the idea, I think it will be harder to code and harder to get right, if you put it on BugTask. Just saying.01:08
lifelesswgrant: again, conjoined masters.01:08
wgrantWe don't have to continue treating them as conjoined for deletion.01:08
lifelesswgrant: I will wait for a second while you headdesk.01:08
lifelesswgrant: we have to show the difference in the UI then...01:09
wgrantDelete one of the two, and it is magically not conjoined any more.01:09
wgrantMagical!01:09
lifelesswgrant: unless you delete the non-series task.01:09
wgrantAnd?01:09
wgrantThere's no longer a conjoined slave.01:09
wgrantNo problem.01:09
lifelessits not a valid state to have a series task with no non-series master01:09
wgrantIsn't it?01:10
wgrantI thought you argued a couple of months ago that it was.01:10
wgrantWhen I was attempting to restrict it during my retargeting work.01:10
wgrantI'm pretty sure we permit it now.01:10
wallyworlddoes the BugTaskSearch code have explicit code for dealing with conjoined masters?01:11
wgrantEven if we want to forbid it, it's not directly related to conjoinment.01:11
wgrant*Any* series task is affected.01:11
wgrantConjoinment is unspecial.01:11
lifelessI argued that we have such states already, and that the conjoined thing messy, and that we shouldn't make it worse by breaking existing things01:11
lifelesswgrant: thats true01:11
lifelesswgrant: So let me phrase this differently: delete shouldn't let users create a state that they cannot already create.01:11
wgrantCertainly.01:12
lifelessIts my understanding that you cannot create a series task w/o a non-series same-pillar task, today.01:12
lifeless(via web UI)01:12
lifelessanyhow, long story short: beware the jabberwocky; send notifications to the folk the task was removed from; log enough that someone can undo brain damage; think about who can delete (the person who added it, the owner of the context, who else?) carefully. Have fun!01:13
wallyworldif the two tasks are shown as one in the web ui, if someone changes the assignee etc, which task gets updated?01:13
lifelesswallyworld: both01:14
wgrantlifeless: https://bugs.qastaging.launchpad.net/ubuntu/+bug/123401:14
_mup_Bug #1234: Gina is an unmaintainable mess of command line options, environment variables and shell scripts <lp-foundations> <Launchpad itself:Fix Released by debonzi> < https://launchpad.net/bugs/1234 >01:14
wallyworldwhy do we need two task then?01:14
lifelesswallyworld: the idea is that when a task nominated for the development focus is closed, its closed for the project as a whole too (in the absence of older series tasks)01:15
lifelesswallyworld: the current implementation is just that, an implementation.01:15
lifelesswallyworld: I would like to get rid of non-series tasks01:15
wgrantlifeless: As for permissions, we agreed that bug supervisor + task creator is probably sensible.01:15
lifelesswgrant: I'd suggest owner of the original task context, but that way lies madness01:16
wgrantlifeless: Never let me hear you use the phrase "original task" again :)01:16
=== StevenK changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 269
lifelesssinzui: ping01:22
lifelessfeeling better?01:27
stubme? mostly.01:37
StevenKlifeless: You are a BAD MAN01:37
StevenKBAD!01:37
stubBeen crook a few days. Yesterday it had mutated into a head cold but that seems to have cleared up now.01:38
lifelessstub: ugh. Glad you're better :)01:41
stubJust in time to be flooded tomorrow :-)01:41
lifelessStevenK: getting things done in a tolerable fashion isn't bad. Cody can do that work unless it actually has holes in it.01:41
StevenKlifeless: I don't think it's tolarable, I think it's a terrble hack01:42
StevenKIPerson is already too fricken big01:42
StevenKAnd advocating a celebrity?01:42
lifelessStevenK: what are the consequences of it that make it intolerable ?01:42
StevenKWe want LESS celebrites, not more.01:42
StevenKlifeless: That we are stuck maintaining it01:43
lifelessuntil someone creates a launchpad-itself model object that such policy objects can link to, we need celebs01:43
StevenKCody or Tim drive it by and say "Excellent, the LP security model is out of our way, thanks" and we're stuck with the baby01:43
wgrantThere is also the issue of non-virt builders.01:43
StevenKSo, I object.01:43
wgrantIdeally this would only grant them access to their own little world of fake-virt armel.01:44
lifelessStevenK: you're rather they web scraped ?01:44
wgrantlifeless: Web scraping is always better, because it's not an interface that we have to support.01:44
lifelesswgrant: I'm not sure how to do that without deeper plumbing work; I was aiming to limit the scope of the permissions rather than rework01:44
wgrant:)01:44
StevenKlifeless: I'd rather we give them a restricted account with the privs they want, rather than other madness01:45
StevenKBut no one listens to me anyway, so meh01:45
lifelessStevenK: this gives them a restricted account with the privs they want01:45
lifelessStevenK: *I* listen to you - do you have a proposal on how that would work, and how does it compare in dev + maintenance effort to the other proposals ?01:45
wgrantI wonder how close the secure panda cluster is.01:46
lifelessstub: bug indices at 98% bloat :)01:46
wgrantThat would make this easier.01:46
stubawesome01:46
elmotime to try pg_reorg? :)01:46
elmooh, it's an index01:46
elmoI'll shutup now01:46
lifelesselmo: :)01:47
lifelesselmo: aieeeeeeeeeee01:47
elmohaha01:47
stubhttps://code.launchpad.net/~stub/launchpad/replication/+merge/78914 has landed, but the scanner hasn't flagged it as merged.01:47
elmohahaha01:47
elmolifeless just googled pg_reorg01:47
wgrantstub: db-devel vs devel01:47
stubpg_reorg is for wimps.01:48
StevenKI just did, that's *insane*01:48
wgrantOh, it landed on devel.01:48
stubwgrant: nah...01:48
wgrantNevermind me then, something's just screwed.01:48
wgrantAh.01:48
stubWill it have been logged somewhere? I'm not fussed but not sure if it should be raised somewhere.01:48
wgranthttps://code.launchpad.net/~stub/launchpad/replication01:48
wgrantAncient branch.01:48
wgrantThe scan probably timed out.01:48
mwhudsonpg_reorg is that thing you use when you write to your database too much for vacuum to work right?01:49
wgrantBecause our branch scanner is fast and awesome and reliable and perfect.01:49
mwhudson(and want to die in a fire)01:49
stubAll my branches are ancient ;)01:49
wgrantstub: Well, crucially, this one is missing 18 months of revisions.01:49
StevenKHah01:49
wgrantAhh01:50
wgrantAnd the old scan is based on db-devel01:50
wgrantThe new one is probably devel.01:50
wgrantSo it has to rewrite tonnes.01:50
stubI just crapped on https://code.launchpad.net/~allenap/launchpad/oneiric-librarian-bug-871596/+merge/79175 . Anyone disagree that this is a Storm bug and better to address there?01:50
wgrantstub: Agreed.01:51
wgrantThat seems to pretty clearly be a DisconnectionError.01:51
lifeless+101:51
StevenKlifeless: Oh, I noticed this yesterday:01:53
StevenKsteven@liquified:~/launchpad/lp-branches/devel% head -n 1 LICENSE01:53
StevenKLaunchpad is Copyright 2004-2009 Canonical Ltd.01:53
lifelessyes, copyright overheads are a PITA01:53
StevenKlifeless: Should I JFDI the fix?01:53
lifelessyeah01:54
lifelesscron it for the 1/1/*01:54
StevenKOn my desktop? Not likely :-P01:54
StevenK"But Robert tells us that the problematic team membership records are harder to clean up than regular old requests."03:05
StevenKClearly, both jtv and I are missing something.03:05
lifelessECONTEXT03:07
lifelesswallyworld: \o/ at ajax batching03:09
wallyworldlifeless: seems to work well. if we get sorting solved, we can add it to the bug and blueprints tables on the milestones page03:10
wallyworldthere's already a half done branch for that03:10
lifelesswhats the sorting issue?03:11
wallyworldwhen sortable.js is used for client side sorting, it doesn;t make sense if only a batch of results is rendered03:11
lifelesswell, thats what we do today right ?03:11
wallyworldthe sorting doesn;t break, but it only sorts the current batch03:12
lifelesshow does avoiding page-loads make it worse?03:12
wallyworldyes but today for those tables there's no batching03:12
lifelessoh, I see.03:12
wallyworldso the sort works on the entire results set03:12
lifelessyes03:12
wallyworldso we need to catch the table header click and send a new query to the back end03:12
lifelesscan I make two suggestions03:12
wallyworldsure03:13
lifelessrather than replacing the batch, consider - at least as an option - *appending* to it.03:13
lifeless(and scroll down to the new bits)03:13
wallyworldlifeless: otp just a sec03:14
lifelessI suspect, much of the time, that that would be closer to what users want03:14
lifelesswallyworld: np03:14
lifeless-> picking up lynne03:18
wallyworldlifeless: will ping you later03:19
StevenKwgrant: Hai03:56
nigelb*yawn* Morning03:56
wgrantStevenK: Hello.03:57
StevenKwgrant: I have a test, but I want to see that it creates an OOPS.03:57
wgrantgetLastOopsReport?03:57
wgrantOr self.oopses perhaps.03:58
wgrantDepending on how you do it.03:58
StevenKTraceback (most recent call last):\nMixedVisibilityError\n04:02
StevenKI am disappoint.04:02
StevenKSo I guess I need to inject a traceback into my raising() call04:03
lifelessStevenK: no, if you do thats a bug somewhere else04:12
lifelessStevenK: is it in a subprocess?04:12
lifelessStevenK: if not, self.oopses is the thing to use.04:12
StevenKlifeless: self.oopses looks good, but I want the full traceback04:13
lifelessStevenK: it should be there04:14
lifelessStevenK: if its not, something is mangling it04:14
lifelessStevenK: report['tb_text'] should have it04:14
StevenK'tb_text': 'Traceback (most recent call last):\nMixedVisibilityError\n'04:15
lifelessStevenK: as I said, something is mangling it04:15
StevenKgetUtility(IErrorReportingUtility).raising(04:15
StevenK                (MixedVisibilityError, MixedVisibilityError(), None),04:15
StevenK                request)04:15
StevenKThat's how I'm raising it, perhaps that is wrong04:16
lifelessuhm, lets start over. What are you trying to do ?04:16
StevenKlifeless: https://code.launchpad.net/~stevenk/launchpad/soft-oops-on-private-team-disclosure/+merge/7906604:16
lifelessthere are no soft oopses04:16
wgrantThere are no *informational* OOPSes.04:16
wgrantThere can certainly be soft ones.04:16
lifelessthis has the potential to cause thousands of oopses04:18
lifelessare you sure you want to do it ?04:18
lifeless(for instance, an api collection with 75 members in it will be trimmed by lazr, and that one web API call will generate 75 oopses)04:18
lifelessoh, and I see that you won't log from the API, which is good on one hand, but means you won't see it on the other04:18
lifeless.04:18
lifelessbloody ISP04:18
StevenKlifeless: So, we want to turn this on for an hour or so and then see what happened04:18
StevenKThis is not a feature flag to leave enabled for too long04:19
StevenKAnd it is purely for data gathering04:19
StevenKSo we can nail down the prime suspects, as it were04:19
lifelessok04:19
lifelessso you actually need an *exception*:04:19
lifelesstry:04:19
lifeless raise MixedVisibilityError('some text here')04:19
StevenKI don't want to stop it04:19
lifelessexcept MixedVisibilityError:04:20
StevenKI just want to log it04:20
lifeless ...raising()04:20
lifelessStevenK: have faith that I understand your use case :)04:20
StevenKtry raise except results in 'tb_text': 'Traceback (most recent call last):\nMixedVisibilityError\n'04:21
lifelesspaste the updated code ?04:23
StevenKlifeless: http://pastebin.ubuntu.com/707156/04:23
lifelessStevenK: nono, don't make the tuple by hand04:24
lifelesssys.exc_info()04:24
StevenKlifeless: Which tuple, sorry?04:27
StevenKOh, just toss sys.exc_info() rather than (MixedVi ...04:27
lifelesshttp://paste.ubuntu.com/707159/04:27
jtvCan someone who knows code imports help with this question?  https://answers.launchpad.net/launchpad/+question/17407104:28
StevenKlifeless: Modulo the left bracket, I just did that myself, so great minds04:28
lifelessStevenK: that should work better for you04:29
StevenK'tb_text': 'Traceback (most recent call last):\n  Module lp.app.browser.tales, line 1327, in _report\n    raise MixedVisibilityError()\nMixedVisibilityError\n'04:29
StevenKAlthough I'm calling into the formatting API myself, so that should be okay.04:30
StevenKlifeless: Thanks for the help.04:31
lifelessStevenK: anytime04:31
StevenKI was expecting more frames, but I shouldn't in this case.04:32
* wgrant yearns for IArchiveCollection and IPublicationCollection04:41
=== wgrant changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 267
wallyworldlifeless: batching - you want to append the next batch to the current batch? to create a table with twice as many rows (and a scroll bar)? doesn't sound quite right to me04:45
wgrantWhy not?04:46
wgrantThat's how most modern batchers work.04:46
wgrantStart scrolling down, it automatically loads the next bit and extends the page.04:46
wallyworldthat would be a significant rewrite of the current batcher though04:48
wallyworldwell, the js etc04:48
wallyworldi was just wanting to do something backwards compatible and in line with the current implementation04:49
wallyworldat least for now04:49
nigelbWIth launchpad's move to SOA, this might be an interesting read, if you folks haven't read it already - https://plus.google.com/112678702228711889851/posts/eVeouesvaVX04:50
wgrantYeah, that's been circulating around a bit. A rather impressive work.04:50
StevenKIndeed04:51
StevenKlifeless: Hai, Mr. OCR.05:02
wallyworldstub: has the branch transitively_private not null patch been applied to prod?05:03
StevenKwgrant, wallyworld: Do either of you want to review my logging branch?05:13
wallyworldStevenK: i'll have a look05:13
wgrantwallyworld: The NOT NULL patch is next in the DB queue.05:17
wgrantwallyworld: Will probably be deployed on Monday, unless oneiric breaks stuff.05:17
wallyworldok05:17
wallyworldjust curious05:17
wgrantThe last few windows have been used for oneiric-critical cocoplum deployments, unfortunately.05:18
wallyworldStevenK: the method _report() - could it have a better name, like _report_visibility_leak() or something05:18
StevenKwallyworld: I like the _ since it is internal, and I doubt it will remain there for long05:19
wallyworldStevenK: it's not the _, but the name05:19
wallyworldreport05:19
wallyworldvs report_visibility_leak05:19
StevenKYes, alright05:19
wallyworldsorry05:19
StevenK:%s/\(_report\)/\1_visibility_leak/05:20
StevenKFixed05:20
wallyworldStevenK: i also think the test should ensure the ooops content is related to the mixed visbility error raised05:21
wallyworldat the moment, there's nothing to test that the oops is informational or is related to the error we are raising05:21
wallyworldit could be any oops05:21
wallyworldand we wouldn't know05:22
StevenK            self.assertTrue(05:22
StevenK                'MixedVisibilityError' in self.oops[0]['tb_text'])05:22
StevenKRather than what is there, okay?05:22
wallyworldi think that works. is there a way to tell that it's a soft oops?05:22
StevenKThat the call returns u'<hidden>', which I already test.05:23
wallyworldah ok, since a hard oops would not return a result05:23
wallyworldit would just error out05:23
StevenKExactly.05:23
wallyworldcool. thanks for making the changes. r=me05:24
lifelesswallyworld: its a desired feature, even though it is different to the non-js batch05:30
lifelesswallyworld: non-js batch being the same as js-batch isn't a goal in and of itself :)05:30
lifelesswallyworld: if you don't have time, thats fine. Consider though that the bugtask comment js batch works this way ;)05:30
wallyworldlifeless: sure. i'm just doing a bit at a time - small chunks of improvement05:30
wallyworldit was just a coding spike rather than a proper part of disclosure05:31
lifelessah cool05:31
lifelessI think its great.05:31
lifelessjust tossing out nice to haves ;)05:32
wallyworldfor what it is it works. backwrads compatible with non-js etc05:32
wallyworldi agree with the nice to haves05:32
wallyworldlifeless: while i have you - i wanted to put the deleteBugTask() on IBugTaskSet. it makes sense to me that the xyzSet interfaces be used to manage the lifecycle of the items they create etc05:33
wgrantAny method on a Set that isn't set-based is a bug.05:33
wgrantdeleteBugTasks(), perhaps.05:33
lifelessopinions are mixed about the *Set interfaces/instances05:33
lifelessthey are misnamed for much of what they do05:34
wgrantwallyworld: Also, that doesn't work too well for the API.05:34
wgrantAs the Sets can't really be exported sensibly.05:34
wallyworldagreed. that was the issue i was going to aks about05:34
wgrantThis is most inconvenient.05:34
lifelessputting it on there would be fine by me; I agree that it should take an interable of tasks, as future proofing. The API side of it is interesting though, as (IIRC) we haven't exposed the Sets on the PAI05:34
wallyworldwe export IBranchSet05:34
wallyworldbut it needs a url and default collectio method05:34
wgrantWe can't use a Set here.05:35
=== almaisan-away is now known as al-maisan
wgrantAs we need permission checking.05:35
wallyworldwe pass in the user as part of the request05:35
lifelesswgrant: that seems like a non-sequitur05:35
wallyworlddeleteBugTask(bugtask, deleted_by)05:35
wgrantlifeless: Until it's not awkward as hell, it's very relevant.05:35
lifelesswgrant: its not awkward as hell ...05:36
wgrantYou have to manually work out the security stuff.05:36
wallyworldand we use call_with(who_deleted=REQUEST_USER)05:36
wgrantSure, we can get the user in there.05:36
lifelessdo you mean 'you'd have to check the security by probing rather than security adapters' ?05:36
wallyworldthat seems to be the pattern used everywhere else05:36
wgrantBut then you have to manually determine and invoke security adapters.05:36
=== al-maisan is now known as almaisan-away
wallyworldi like the idea of a separate manager type interface to control the lifecycle of objects05:38
wallyworldit fits more with a service based design where domain objects encapsulate state and services manage the workflow etc05:39
* StevenK attempts to stop his eyes glazing over05:39
wallyworldso we need to stick the deleteBugTask() method somewhere other than on IBugTask itself or even IBug05:40
wallyworldStevenK: you know you love this stuff05:40
lifelesswallyworld: the current pattern in LP, for good or ill, is destroySelf()05:40
StevenKLove to see it burn, sure.05:40
wallyworldyuk!05:40
wgrantwallyworld: I would introduce BugTaskSet.delete(sequence_of_tasks)05:40
StevenKIBugTask.destroySelf()05:40
wgrantThen BugTask.destroySelf calls that.05:40
wallyworldnooooooo05:40
wallyworlddomain objects do not call services05:41
wgrantIn our current architecture they do.05:41
lifelesswallyworld: we don't have a domain/service split today05:41
wallyworlddomain objects should just encapulate state and nothing more05:41
wgrantYes, it is bloody awful.05:41
wgrantBut this is Launchpad.05:41
wallyworldlifeless: yes, but do we want to propogate bad edesign?05:41
wgrantWe have no choice here.05:41
lifelesswallyworld: introducing one incrementally is fine, but I would like to have some confidence we won't get lots of stubby attempts that don't flow together05:41
wallyworldsure05:42
wgrantThe current API and security design mandates that the method be on the object.05:42
wallyworldso given we have an addTask method on IBug, i could put a deleteTask method there too05:42
wallyworldand then it can update the heat etc05:42
nigelbwgrant: Did you see the new design github deployed? It reminds me of old Launchpad :P05:42
lifelessI don't think destroySelf is 'bad design' - its the logical consequence of the design of the zope stack.05:42
wallyworldjust like addTask does05:42
lifelesswallyworld: -the entire stack-05:42
wgrantnigelb: Indeed, with the tabs along the top.05:42
wallyworldlifeless: destroySelf is ok, but that should not be exposed via the service layer05:43
wgrantwallyworld: What service layer?05:44
StevenKThe API, I guess05:44
wallyworldwgrant: i'm generising05:44
wgrantLP has no layers.05:44
lifelesswallyworld: consider the interactions between ORM-objects-are-content-objects, security adapters and highly delegate-to-content-object design05:44
lifelesswallyworld: if you grok that, and still want to add a service layer as part of this work, you have my blessing.05:44
lifelesswallyworld: few folk do grok all those interactions though :( [because its bloody vicious]05:45
wallyworldlifeless: i'd like to move to a different design which separates out content from behaviour from workflow modelling from business process modeliing from orm etc05:45
wallyworldbut that's in an idea lworld05:45
wallyworldi realise we have something different05:46
wallyworldlargely dictated by the design of the zope stack i guess05:46
wallyworldlifeless: wgrant: so you happy if i add a deleteBugTask method to IBug?05:46
wallyworldand if so,i would raise an exception if a bug task were passed in that didn;t belong to the bug?05:47
wgrantwallyworld: I don't think it should be on the bug.05:47
=== jtv is now known as jtv-eat
wgrantaddTask is there because it's adding a task to the bug.05:47
wallyworldbut the bug needs to be involved because it needs to update bug heat05:47
StevenKI think it should be on the task05:47
wgrantFucking bug heat.05:47
wgrantKill it.05:48
wallyworldso if it is on the bug task, i would need to update bugg heat still05:48
wallyworldand call back to the parent bug05:48
wallyworldsigh05:48
wgrantWell, ideally the *Set method would do that.05:48
wgrantIn a batch fashion.05:48
wallyworldyes, but to expose the IBugSet method - it needs a url and a default collection method05:49
wallyworldand there isn;t one at the moment05:49
wgrantSure, which is why you put a trivial method on BugTask to delegate to it.05:49
wgrantMatching the rest of LP's deletable objects.05:49
wallyworldok, but i will have to have a shower afterwards. that is just sooooo wrong05:49
pooliei was thinking the other day about bug 678090 - i'd like to see how many people are actually affected by bugs, across dupes05:49
_mup_Bug #678090: Affected people from duplicates aren't included in the master bug's affected count <affectsmetoo> <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/678090 >05:50
pooliestub, or someone, could you comment on my db performance question on the bug05:50
pooliebasically, is counting them at run time going to be fast enough, or should we maintain a count?05:50
wallyworldwgrant: StevenK: to do it on bugtask seems the best option, but it just gets the layering *completely* wrong :-(05:50
wgrantwallyworld: It's as good as it can get now.05:50
wgrantwallyworld: Until we end up with a sensible architecture.05:51
StevenK"lol"05:51
wgrantWhich may happen in 10 years when we're out of criticals :)05:51
wallyworldyeah :-(05:51
wgrantBut don't worry, there's nothing wrong :)05:51
wallyworldwgrant: i have to run away and pick up the kid from school. i doubt we'll see any qastaging email today :-(05:52
nigelbHow do I find which things are exposed over the API and wwhich arent?05:52
poolienigelb: search through http://launchpad.net/+apidoc ?05:52
wallyworldnigelb: they are annotated and also listed in the webservice.py modules05:53
nigelbpoolie: Well, I was asking from the point of looking at the code and figuring out05:53
wallyworldthat's if you want to see in the code05:53
* wallyworld runs away05:53
nigelbaha05:53
StevenKnigelb: They are declared in the relevant interfaces05:53
nigelbAh, anything declared in the interface is available over the API?05:54
StevenKNo, it needs to decorated05:54
StevenKnigelb: Taking lib/lp/bugs/interfaces/bug.py, getVisibleLinkedBranches is exported since it is has a @export_read_operation() decorator05:55
lifeless18:50 < lifeless> wallyworld: I want what you want, I just see more things in the way :)05:55
nigelbfunnily enough, I was looking at that exact file.05:55
lifelessand05:55
lifeless18:49 < wgrant> Matching the rest of LP's deletable objects.05:56
StevenKnigelb: latest_patch_uploaded is exported, but latest_patch is not05:56
lifelessbefore my connection crapped out.05:56
lifelessI see an ISP change in my future05:56
StevenKHaha05:56
StevenKI suggest a country change first05:56
lifelessStevenK: layer 2 blip05:56
nigelbOr a continent05:56
lifelessnigelb: I've the choice of two right now, just need to drive over the mountains :)05:56
nigelbheh05:57
StevenKHaha05:58
StevenKnigelb: Clear as mud?05:58
nigelbStevenK: clearer than before at least05:58
StevenKHaha05:58
StevenKnigelb: So exporting things that haven't been can be easy if the interface they are in has had some groundwork laid -- but it can be complicated too05:59
nigelbStevenK: Ok, so the reason I asked is searchTasks is available over the API, but I don't see BugTaskSearchParams anywhere06:00
stubpoolie: There will be little difference between filtering duplicates like we currently do and counting them. It may well be much faster even, as we may be able to avoid joining the bug table in some cases.06:00
lifelessstub: bug.private06:01
stublifeless: Which is starting to be overhauled in any case.06:01
lifelessstub: yes, but we still need to know, don't we ?06:02
stublifeless: It will move to task I think, as your bug could be targetted at pillars with different policies? Anyway...06:02
poolieso at the moment it does06:02
poolieselect affected_user_count from bug where bug.id = %d06:03
wgrantstub: We're actually very strongly leaning to removing cross-pillar private bugs.06:03
pooliewe could change that to06:03
wgrantstub: Once we beat OEM and ISD into submission.06:03
wgrantHm.06:04
stubpoolie: The query for 'users affected by this bug' will be slower and more complex if you count duplicates, but it will still be fast.06:04
poolieselect count(user) from bugaffectsuser where bugaffectsuser.bug = %d or bugaffectsuser.bug in (select id from bug where duplicateof = %d)06:04
wgrantWe need a rabbitmq logging transport.06:04
poolieor something like that06:04
pooliethat's more or less what bug.affected_user_count_with_dupes does06:05
stubwgrant: I thought of that but was worried about clogging rabbit with debug2 spam.06:05
wgrantstub: Yeah, it would need testing.06:05
lifelesswgrant: this is for realtime logging?06:05
wgrantlifeless: Yes.06:05
lifelesswgrant: the ISP project should cover that06:06
lifelesswgrant: I'd rather not overlap for a bit at leasrt06:06
wgrantYes, but they're nearly as slow at feature development as we are.06:06
nigelbISP?06:06
stubwgrant: Would involve hooking into the existing log_options crud, adding an option to control the level of messages to send to messaging, and a log handler installed that sends to rabbit. Not terribly much work once rabbit is operational.06:06
lifelessnigelb: information systems projects06:06
wgrantstub: Yep, fits in very well with the existing script logging infrastructure.06:06
nigelblifeless: ah06:07
lifelessStevenK: you wanted a review?06:07
lifelessspeaking of which, I could use a couple06:07
StevenKlifeless: You're like an hour late.06:07
lifelessStevenK: so you don't ?06:08
lifelessoops-tools test time down to 4.7 seconds + db setup of maybe 706:08
lifeless\i/06:08
StevenKlifeless: No, wallyworld has done it for me, but thanks06:08
pooliestub: so you're still pretty sure that will be safe?06:13
lifelesspoolie: we bring up the dupes already06:14
stubpoolie: Yer.06:14
lifelesspoolie: I suggest not changing that query06:14
lifelesspoolie: instead, sum up the affecting counts from the dupes (that we already retrieve)06:14
poolieok06:14
pooliegood idea06:15
pooliethat's not precisely accurate in the case one person is affected by multiple bugs06:15
pooliebut, perhaps that's not important06:15
lifelessI think for dupes that it doesn't matter :)06:15
poolietags +pedantic06:16
poolieok that seems pretty safe then06:16
pooliehow about for sorting by affected-users across dupes?06:16
lifelesswhat do you mean ?06:17
pooliepart of the related bug is that getting a list of bugs sorted by number of affected users probably should sort by total affected users across bugs06:18
lifelessah06:18
poolieif you want to know which bugs cause the most pain06:18
lifelessperhaps we should stop offering that sort06:18
poolie!06:18
lifelessbecause bug heat is intended to provide a unified value representing pain, interest etc06:18
pooliebut it fades over time, right?06:19
pooliethough apparently not really?06:19
lifelessright06:19
lifelessand for affected users, wouldn't something that 1000 people marked affecting me in 2005 be less interesting than one where they marked it that way yesterday?06:20
pooliei don't know what the fall off is06:20
lifeless[Note: I'm not endorsing that decay is useful, just taking it as an axiom for the discussion]06:20
poolieit seems reasonable to want to know about either of them06:20
lifelesspoolie: IIRC 1% a day or something06:21
lifelesspoolie: everything in the UI has a cost; I'm questioning the value of the affected-user-sort06:21
poolieso06:21
lifelessgiven we have something intended to be more than it06:21
pooliei think it's a good question06:21
pooliei guess i dislike that both heat and affectance have this "you don't need to know that" attitude06:22
poolieand heat has some bugs, due to eg security bugs (many marked in error) getting a big boost06:22
pooliebut, perhaps they can just be fixed06:22
poolieand it'll be a reasonable default06:23
lifelessrhetorical question: if you fix both affected and heat to be perfect, would we need both anymore ?06:23
lifeless[modulo the 'stop bug noise' aspect of affected]06:23
lifelessaffected users count towards heat06:23
poolieanother good question06:23
pooliei know06:23
pooliei think they mesh without overlapping much06:24
poolieif bug heat worked well i don't think i'd care much about sorting by #affected06:24
lifelessanyhow, I bet that a self join onto duplicates will trigger table scans in Ubuntu bug searches unpleasantly often.06:24
pooliebut i do want to know the number of affected people06:24
lifelessthats a WAG, needs testing to be sure.06:24
lifelesspoolie: I totally support showing the # affected sanely ;)06:24
poolieconversely, i think the heat metrics on an arbitrary scale have little or no value, cause confusion, and ought to be removed or deemphasized - ie make it only an ordering06:25
poolieeg the (fairly hot :) bug about heat being per-bug vs per task06:25
pooliewhat do you think?06:27
lifelessI think heat is an ambitious project that we've underdelivered on06:27
lifelessit has many significant operational issues as well as the UI related ones you refer to06:27
lifelessfolk like deryck are keen to fix it, but the current approach is tweaking;06:28
lifelessI think it needs ground up re-evaluation, to fix both the UI and operation issues06:28
lifeless(e.g. it causes search timeouts)06:28
pooliewell, i am kinda tweaking here06:30
pooliea rethink could be good06:30
pooliebut, perhaps is not necessary to just make dupes work better06:32
lifelesssure; we were talking about the affected sort, which is a bit orthogonal to dupes06:32
poolies//affectsmetoo06:33
pooliei mistyped06:33
pooliemis-thought06:33
rvbaHi lifeless, thanks for your feedback on the weird storm behaviour, I was a little bit surprised to see such a crazy thing but you're right, it really seems like I should fix this in storm (as opposed to a quick fix in the batchnavigator).07:13
=== jtv-eat is now known as jtv
lifelessrvba: you may want to fix batchnav too, as google won't be making up those urls itself - we're emitting them somewhere07:34
lifelessrvba: you can use googles link: search to find the pages containing the bad url and look at whats happening there07:35
wgrantWhy won't it be?07:35
rvbalifeless: not sure about that, I've heard that google tried to fiddle with query parameters to crawl the web.07:35
lifelesswgrant: because its a spider, not an AI07:35
wgrantlifeless: Erm...07:35
lifelessrvba: ah.. well, its worth checking that we're not emitting them07:35
lifelessrvba: on the 'better safe than sorry' side07:35
rvbalifeless: Right.07:35
lifelessgrah. ISP DIE DIE DIE DIE07:37
lifeless....07:38
lifeless.07:38
lifeless.07:38
lifelessI wonder if setting my MSL to 5 seconds would help things or wreck em07:38
mrevellHowdy07:55
rvbaHello mrevell!07:55
mrevellhallo rvba07:59
=== rvba changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: rvba* (allenap) | Critical bugs: 267
allenapstub: Thanks for the review. I don't mind the crapping-on :) I wasn't sure of the fix, but I wanted to show you something that might illustrate the problem. I'm going to relocate now, back in ~20m.08:06
=== almaisan-away is now known as al-maisan
stuballenap: So the fix should be pretty simple - just need to add to is_disconnection_error() in databases/postgres.py. Tests might be harder to engineer, although for all I know perhaps the existing test suite fails under Oneiric.08:17
stuballenap: Assuming you want to work on it rather than hand ball it a Storm dev (me or jamesh would be most likely to grab this one)08:17
poolieo/ mrevell08:34
mrevellhey poolie, not so loud, I'm hiding from the 50ft marshmallows.08:35
lifelessI need a guinea pig08:35
mrevells/ft/tonne08:35
poolie:) who _are_ you going to call, mrevell? :)08:36
lifelesshow wide must a ft long marshmallow be to weight a tonne ?08:36
mrevellHeh. Hmm, who's the most Dan Ackroydy member of the team.08:36
poolieHuw?08:36
lifelessyou gonna call...08:37
lifelessthat was terrible poolie08:37
mrevellhah08:37
poolie:)08:37
poolieactually he does also look vaguely like him08:37
* lifeless puts out the call for guinea pigs08:38
mrevelllifeless, Id the experience you have planned for these guinea pigs too scary to describe in your sales pitch?08:39
mrevellFeck, "Is"08:39
lifelessyes, of course08:40
lifeless:)08:40
lifelessmrevell: I want someone to quickly once-over the oops-tools release branch I've prepared08:40
lifelessmrevell: its mind numbing looking for any production data references I've missed *that matter*08:41
* bigjools wonders who Robert Collings is08:41
lifelessprobably the dude whose mail I keep getting08:42
lifelessfrom hotels, gyms, their daughters wow account [parental control bit woo] and more08:42
lifelessthe sheer number of services that *don't* do a probe to check they got the mail address right is astonishing08:42
bigjoolslifeless: well he attended the TL call last night08:43
lifelessbigjools: ah, no idea then.08:43
lifelessanyhow08:43
lifelesssomeone, please pull bzr+ssh://devpad.canonical.com/code/robertc/python-oops-tools and check I didn't miss anything big08:44
lifelesskthanks release08:44
wgrantThat's very FHS.08:47
nigelbFHS?08:48
wgrantFilesystem Hierarchy Standard08:48
nigelbHrm, maybe I don't wanna know.08:48
nigelbOk, urbrandictionary'ing it wasn't a great idea.08:49
StevenKFHS mandates things like binaries in /bin or /usr/bin, things that the machine serves go under /srv, /usr/local is for locally installed stuff, etc, etc08:53
nigelbAh08:53
lifelesswgrant: you didn't know about /code ?08:55
lifelessso that was amazing time consuming; I think for qatagger I'll rewrite08:56
wgrantlifeless: I didn't.08:56
StevenKThe FHS didn't specify /code last I read it.08:57
lifelessit doesn't08:58
pooliewhat do you want people to look for?08:58
lifelesspoolie: stuff we wouldn't be happy pasting in this channel08:58
lifelessmachine name references, internal config details, that sort of thing08:59
pooliegrep -ir f.ck .08:59
nigelbheh08:59
lifelessthere are some I've deliberately kept, because we depend on them for some of the aggregation (but those are obvious when reading the code) - and already known via lp source I strongly suspect :)09:00
poolielifeless: well, the buildout.cfg has canonical.com as example data09:00
poolieif anyone else runs this we might be annoyed by backscatter09:00
poolieor they might be embarrassed by it09:00
lifelesspoolie: thanks - thats one I missed, and exactly what I was hoping for09:00
lifelessthis has been brain numbing :)09:00
pooliethanks :)09:01
pooliethere is no obvious licence on it09:01
poolieand the readme's "for more information" is a private url09:02
pooliealso the "real world example" url09:02
lifelessno licence? where are you looking09:03
lifelessah, I haven't overhauled README.09:03
lifelessshall do.09:03
poolieoh, the top-level readme09:03
pooliethere is one in the python module09:03
pooliesome of it is agpl and some is lgpl?09:04
lifelessshould be all AGPL09:04
poolie(which can be valid, but may not be intentional)09:04
lifelesspresumably I missed a header09:04
pooliesrc/oopstool/README.txt09:05
lifelessthanks09:05
poolieoh no09:05
poolieit has doctests09:05
pooliebetter fix that ;)09:05
lifelessits a child of its time09:06
lifelessI have purged many09:06
lifelesshowever my goal is a release not code overhaul09:07
lifelessI suspect folk interested will poke at it after its out there09:07
pooliei know, i was just joking09:08
pooliein models.py there is some code flagged as lp-specific09:09
poolieembedding some policy about lp custom exceptions09:10
poolieprobably fairly harmless to leave it as an example in the first relase thoug09:10
pooliethat's all i can find09:11
pooliethat's great to get this released!09:11
nigelbwhat does this do?09:12
nigelboops tools?09:12
lifelesspoolie: yeah, thats the code I was referring to that needs to stay09:12
lifelesspoolie: theres no extension points for this yet09:12
lifelesspoolie: we need to make these data driven or something09:13
poolienigelb: you may never have seen this but occasionally launchpad times out09:13
poolie:P09:13
pooliethose things are gathered into a database and there's a tool that does some summaries and reporting09:13
pooliewhich we're apparently now going to release \o/09:13
nigelbpoolie: heh, I did guess right :)09:13
allenapstub: Storm does string matching in is_disconnection_error. Do you think I should stick with that, or should I use pgcode like in my Launchpad branch?09:24
stuballenap: It does string matching because we were not getting error codes before for these exceptions. I think error code matching is better as we don't need to worry about localization issues. Perhaps we can do this for the other disconnections too under Oneiric and leave the string matching for backwards compatibility with older psycopg2/libpq releases?09:26
pooliejtv, fair enough09:26
jtvpoolie: "just following orders"  :)09:26
allenapstub: Okay, I'll try to use pgcode if it exists, and I'll leave the fallback to string matching in place too. Thanks.09:28
jtvAnyone here who can help with a failing code import?  https://answers.launchpad.net/launchpad/+question/17407109:34
bigjoolsjtv: jelmer is the best to ask about that09:41
jtvThanks bigjools09:42
pooliecan anyone explain this test failure? https://pastebin.canonical.com/54298/09:47
wgrantallenap: ^^09:48
wgrantpoolie's issue looks like yours.09:48
pooliei do have some lines like this in the postgres log09:50
poolie[2011-10-13 20:45:26 EST] mbp@launchpad_ftest_template_17866 FATAL:  database "launchpad_ftest_template_17866" does not exist09:50
jtvjelmer_, is this something you can help with?  https://answers.launchpad.net/launchpad/+question/17407109:53
jtvpoolie: I get those log lines too09:53
* allenap looks09:53
jtvYup, that's the one allenap's working on.09:53
bigjoolspoolie: oneiric>09:53
bigjools?09:53
allenappoolie: bug 87159609:54
_mup_Bug #871596: Not handling administrative shutdown under Oneiric <build-infrastructure> <librarian> <Launchpad itself:Invalid by allenap> <Storm:In Progress by allenap> < https://launchpad.net/bugs/871596 >09:54
bigjoolsallenap: you might want to announce you're fixing that on the dev list, we'll get loads of questions about it today09:54
pooliehooray for chroots09:54
lifelesspoolie: no other feedback ?09:58
lifelesspoolie: e.g. 'you need a copy of the GPL in there :P' (one I just noticed)09:58
sladenmbp pointed me this way.  What's the up-to-date method for getting a LP install working, such that I can test a proposed patch to Malone09:59
nigelbsladen: are you on oneric?09:59
poolielifeless: that's all i can find10:00
poolieo/ paul10:00
nigelbyou can either sacrifice your apache to LP or you can run it in a container10:00
pooliedev.launchpad.net/Running10:00
wgrant/Running/LXC if you want more isolation10:00
sladenhttps://dev.launchpad.net/Getting <-- there's that, is it current?10:00
nigelbhttps://dev.launchpad.net/Running/LXC10:00
pooliethose two10:01
wgrantRight, that works too, if you want to sacrifice your system postgres and apache to LP.10:01
pooliepersonally i use Schroots10:01
nigelbsladen: it is current, but like I said. Sacrifice involved :)10:01
lifelessRunning/LXC is my recommendation10:02
danilosjtv, thanks for taking care of that en_GB removal request10:06
lifelessok, bzr+ssh://devpad.canonical.com/code/robertc/python-oops-tools should be in shape now10:06
lifelesspoolie: care to eyeball again ?10:06
jtvdanilos: np.  Just realized though that we'll need to delete the POFile as well.  :(10:06
poolielifeless: sorry i have to go out, maybe tomorrow10:08
pooliewell, maybe just the diff, ok10:08
lifelessits a push--overwrite, but you can use heads and diff the two10:08
pooliesomeone read https://code.launchpad.net/~mbp/launchpad/612171-diff-generation-spam/+merge/79244 for me?10:08
lifelessno diff yet, but I've added commentary based on your cover letter10:10
lifelessI'm v tired so lets talk about it tomorrow10:10
pooliethanks10:10
pooliehow ironic if the diff fails10:10
poolienp10:11
poolielifeless: looks pretty good10:13
poolienot sure if you ticked off every item i mentioned (that you want to fix)10:13
poolieok night all10:18
nigelbnight poolie10:19
lifelesspoolie: I updated both README's, added LICENSE, and fixed buildout.cfg, deleted the isd and u1 index templates and made the LP one be called index (its a bit ugly that thats in-tree, but ... meh)10:24
lifelessand bleh png files to nuke too10:27
lifelessdone10:27
=== al-maisan is now known as almaisan-away
lifelesswgrant: care to add some paranoia to this process?10:29
wgrantlifeless: Is the devpad branch up to date?10:31
wgrantLooks like it.10:31
wgrantAs I must pull --overwrite10:31
wgrantlifeless: Don't want to s/lp-oops.canonical.dev/oops-tools.dev/ or so?10:33
lifelesssure, can do that10:34
wgrantThe remaining sample OOPSes are non-sensitive?10:35
* wgrant checks.10:35
wgrantAh, you must have mangled them.10:36
lifelesshatchet and slashet10:40
lifelesspushed that sed up10:40
wgrantGetting distribution for 'wadllib'.10:41
wgranterror: Couldn't find a setup script in /usr/lib/python2.7/dist-packages10:41
wgrantAn error occured when trying to install wadllib 1.2.0.Look above this message for any errors thatwere output by easy_install.10:41
wgrant:(10:41
lifelessdetails :P - bootstraps on lucid with the lazr sourcedeps branch10:42
wgrant(oneiric)10:42
wgrantI just ran make10:42
wgrantWhich grabs that branch.10:42
lifeless(yay)10:42
lifelessso, I think once we get this out, someone probably wants to run around and cleanup10:42
lifelessI mean I don't want it to be terrible10:43
wgrantPerhaps the system wadllib is killing it.10:43
lifelessbut diminishing returns and all10:43
wgrantAnyway, will ignore for now.10:43
wgrant    maintainer_email='launchpad-developers@lists.launchpad.net',10:45
wgrantReally?10:45
wgrant    license='LGPL v3',10:45
wgrantLies.10:45
lifelessbah10:46
lifelessthe former - etired. the second, grrr10:46
lifelesstrove classifiers are where its at10:46
wgrantYep.10:46
lifelessdeleted the license line and fixed the list10:47
wgrantThanks.10:47
wgrantChecked that the secret key doesn't match prod?10:47
lifelesssecret key ?10:48
* sladen deletes some Top Gear to make way for Launchpad. I hope you're all grateful10:48
wgrantIn buildout-templates/src/oopstools/settings.py.in10:48
allenapstub: I'm struggling to replicate the admin_shutdown thing in a Storm test. Do you know how I can do that?10:49
lifelesschanged to 1234510:50
lifelessand added a note to the README10:50
wgrantThanks.10:50
lifelessthank &you&10:50
lifelessallenap: python-pgbouncer perhaps ?10:51
wgrantlifeless: So, I think that looks fine otherwise!10:52
allenaplifeless: Ah, okay, that's already in LP, right?10:54
lifelessallenap: as a dep? yes10:55
lifelessallenap: its how we do the fdt tests10:55
wgrantlifeless: Huh, do the tests pass now?10:56
wgrantI see matsubara's email address in report.txt, but nowhere else in the codebase.10:56
lifelessthey were before the latest set of edits10:57
lifelessfixing10:57
lifeless Ran 23 tests in 4.600s11:08
lifelessOK11:08
wgrantExcellent.11:08
wgrantThat's nice and quick, too.11:09
wgrantCan you do the same thing to LP? :)11:09
lifelessif I can delete the same amount, sure11:09
danilosjelmer_, hi, do you think you could QA bug 485932 or share some instructions on how to do it?11:10
_mup_Bug #485932: should stack foreign branch imports <code-import> <lp-code> <qa-needstesting> <Launchpad itself:Fix Committed by jelmer> < https://launchpad.net/bugs/485932 >11:10
=== almaisan-away is now known as al-maisan
stuballenap: One approach that might work is to open a second connection and 'select pg_terminate_backend(procpid) from pg_stat_activity where datname='$testdbname' and procpid <> pg_backend_pid()'11:11
stuballenap: That might work. There is a chance it is a pgbouncer specific thing and we would need to pull in the python-pgbouncer as lifeless suggested.11:13
allenapstub: I'll give that a go, thanks :)11:21
=== matsubara-afk is now known as matsubara
=== beuno is now known as beuno-lunch
=== dpm_ is now known as dpm
=== al-maisan is now known as almaisan-away
* sladen gets to utilities/update-sourcecode12:27
sladenwhat does  "bzrlib.errors.ConnectionReset: Connection closed: Unexpected end of message. Please check connectivity and permissions, and report a bug if problems persist."  mean?12:28
=== almaisan-away is now known as al-maisan
sladenhttp://pastebin.ubuntu.com/707303/12:29
=== beuno-lunch is now known as beuno
deryckMorning, everyone.13:04
nigelbMorning deryck. The mockups for the buglists look cool! Can't wait to see it in action :)13:05
derycknigelb, cool.  Glad you like it.13:05
StevenKNeither.13:05
StevenKAre they implemented now?13:05
StevenKHow about now?13:05
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: rvba* (allenap), jcsackett | Critical bugs: 267
rvbaMorning jcsackett.13:51
jcsackettmorning, rvba.13:51
* jcsackett decides he needs more coffee after looking at the review queue13:54
rvbahehe13:54
rvbajcsackett: I'm sorry but I'm stuck with a critical bug I need to work on ... I'll take new reviews; I know the review queue is a little bit daunting.14:03
jcsackettno worries, rvba. i'm juggling things today as well -- it happens. :-)14:05
rvbajcsackett: ;)14:06
=== al-maisan is now known as almaisan-away
deryckabentley, mumble time?15:01
=== matsubara is now known as matsubara-lunch
nigelbsinzui: Hey, you have a few minutes?15:41
sinzuiI will in a few minutes :)15:42
nigelb:)15:44
=== rvba changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: jcsackett | Critical bugs: 267
=== mrevell_ is now known as mrevell
mrevellHey deryck, do you have time to talk about Steve Magoun's email in the next hour or so?16:05
deryckmrevell, yeah, I can chat now.16:06
deryckmrevell, mumble?16:06
mrevellsounds good16:06
deryckmrevell, meet me in Orange 1 o 1 then.16:06
mrevellIt's refusing to let me join16:07
sinzuinigelb, I can talk now16:25
nigelbsinzui: aha, so that bug about description - the database change has landed16:25
sinzuinigelb, the status description we dropped?16:26
* sinzui tries to remember16:26
nigelbno16:26
nigelbhang on16:26
nigelbthe description we created in person16:27
nigelbbug 528316:27
_mup_Bug #5283: "Home page" vs. "Description" is misleading <easy> <lp-registry> <qa-needstesting> <tech-debt> <ui> <Launchpad itself:Fix Committed by nigelbabu> < https://launchpad.net/bugs/5283 >16:27
sinzuiah description and home_page16:27
nigelbSo, now its land garbo job and the temporarily insert into both columns.16:28
nigelbI'm stuck at garbo job :)16:28
* sinzui thinks16:29
=== deryck is now known as deryck[lunch]
sinzuinigelb, I wonder is step 3 (Update the index pages and forms to use the new field (do not show the old fields if the description is not empty)). is better to do next16:30
nigelbsinzui: Ah! That's slightly more easier, and makes sense.16:31
nigelbI won't be writing temporary code at least :)16:31
nigelbOhwait.16:31
nigelbwhat about existing content?16:31
sinzuiIf we update the template to use description OR old fields, we know users are always seeing the right data16:32
sinzuithe edit forms should only show the new field.16:33
nigelbAh.16:33
nigelbThat sounds good.16:33
nigelbI'll get to it :)16:33
sinzuinigelb, LaunchapdFormView has a property (default_values?) that is used to populate the form values. We often do not need it, but in this case, we can use it to concatenate the values in the old field in the rare case where an old team/person is edited16:35
nigelbokay :)16:35
sinzuinigelb, initial_values is the property that returns a dict of fieldnames and values16:38
nigelbok!16:38
mrevellNight all17:00
=== deryck[lunch] is now known as deryck
SpamapSHey guys, getting OOPS's every time I search for 'zookeeper' on https://bugs.launchpad.net/juju17:49
SpamapS OOPS-2112K9217:49
SpamapSother searches do not timeout17:49
elmoit's a trap17:55
flacostegary_poster: very nice changes to the YUI XHR fixtures! will make it much easier to use thanks!18:10
gary_postercool, thanks flacoste :-)18:11
lifelessSpamapS: cool18:20
derycklifeless, I violently disagree with "must be able to copy and paste in excel" as a requirement and that failing to do so is a regression.18:37
derycklifeless, if that becomes a requirement we might as well never change the UI.  It's a by product of a design that you can copy in a certain order.18:38
deryckno one meant for that happen in the original design, I'm sure.18:38
lifelessderyck: they didn't, and note that I didn't keep 'copy and paste' as my proposed requirement - getting the data *into* excel is the thing they need18:45
lifelessderyck: e.g. the csv export18:45
lifelessderyck: oem /currently/ depend on this18:45
lifelessderyck: are you proposing we leave them high and dry for an unknown time period ?18:46
derycklifeless, no, of course not.18:46
derycklifeless, And I don't think anyone was saying that.  in fact, I told mrevell I think we can deliver csv pretty easy when we finish the bulk of the work in 4 weeks, but I'd prefer to see where we're at then.18:47
lifelessderyck: I'm saying that if they cannot meet their use case that they can currently, its a regression18:47
derycklifeless, I thought mrevell echoed my "let's wait and see where we're at soon" sentiment.18:47
lifelessderyck: sure; I'm saying that we shouldn't open the flag to OEM until we have CSV18:47
deryckfair enough.18:47
derycklifeless, however, I don't like the word "regression" for this.18:48
lifelessderyck: I'm not trying to say when-or-how, I'm trying to say that releasing this to them without a replacement for their use case will negatively impact them, and that we, in that discuss, were apparently not hearing that clearly enough18:48
derycklifeless, well, to be fair, there's a lot in the email thread. ;)18:48
lifelessderyck: which is true, and fine :)18:48
derycklifeless, and also to be fair, the fact that they get by today is a happy accident.  I certainly don't want to make things worse than now, so we're in agreement.18:49
derycklifeless, but I just don't like all this regression talk when we never supported this use case yet.18:49
lifelessthe reality is that we do support it, even though we never intended to18:49
deryckNo, we don't support it.  We allow it.  Those are different things.18:50
flacostederyck: csv export wouldn't hard, but not trivial either since we are likely to hand the CSV generation to a job as not to timeout when there are lots of bugs (we shouldn't paginate CSV exports)18:50
flacostederyck: so we have all the infrastructure to implement this, but it's not a simple take the JSON and write it throug csv.DictWriter either18:50
flacostewell, it's that, but needs some wrapping :-)18:51
deryckflacoste, right, I didn't mean to imply it was that simple. :)  Just more attainable at the end of this work than at the beginning.18:51
flacostederyck: agreed18:51
lifelessand I agree with the difficulty etc; I'm not suggesting we need to change the order we do the work in; but we do need to acknowledge and deal with their needs18:52
flacosteSpamapS: that looks like bug 735966, weird though that only zookeeper search triggers it18:54
_mup_Bug #735966: Product:+bugs timeouts <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/735966 >18:54
flacostelifeless: anything that could explain that Product:+bugs time outs when trying to ftq(zookeeper), but not without it?18:55
flacosteon juju18:55
lifelessposibbly cold pages in the text index18:55
lifelessor pathological layout - we're at 98% bloat as of last night18:56
lifelessI don't think stub has managed to fix it yet18:56
SpamapSI can search for lots of other common things18:57
SpamapSjust not zookeeper18:57
lifelessSpamapS: works for me19:01
lifelessSpamapS: a bit slow - 107 queries/external actions issued in 8.86 seconds19:01
lifelessre-running,19:01
lifelesstimeout19:01
lifelessmay be db server specific19:01
lifelessflacoste: the main bugtask search is whats timing out19:05
lifelesshttps://lp-oops.canonical.com/oops.py/?oopsid=OOPS-2112K92#longstatements19:05
flacosteyeah, i saw19:07
flacostebut since it seems to work for SpamAs when he doesn't use zookeeper as a term, i wondered if it wouldn't be only the ftq() clause that slows it down19:07
lifelessflacoste: SpamapS: http://paste.ubuntu.com/707506/19:09
flacostelifeless: doesn't that confirm my hypothesis?19:11
flacosteIndex Scan using bug_fti on bug  (cost=0.00..1830.44 rows=51 width=761) (actual time=45.069..10902.728 rows=71 loops=1)19:11
lifelessyes19:12
lifelesssorry, am juggling a few threads right now19:12
lifelesson my baby-addled brain (yesterday was first immunisation shots)19:12
flacostelifeless: ouch, yeah shots, that throws a baby sleep-cycle off for a week!19:13
SpamapSlifeless: DTP, MMR, and the best immunity.. Diplomatic19:14
lifelessSpamapS: :)19:14
lifelessflacoste: so yes, 10 seconds to get 71 rows19:17
lifelessflacoste: sick index19:17
lifelesswe need a new one and a pivot19:18
lifelessthis isn't automated yet and is tricky to do live19:18
abentleyderyck: http://people.canonical.com/~abentley/client-side-mustache.png19:20
abentleyderyck: I'd like to chat about how to maintain a common template for server side and client side.19:21
deryckabentley, ok, may have to wait a bit.  I'm currently in 2 other conversations.  I'll try to wrap shortly and ping.19:22
abentleyderyck: okay.19:22
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
lifelessflacoste:20:31
lifelesshttps://launchpad.net/python-oops-tools20:31
flacoste!20:31
flacostefinally20:31
lifelessflacoste: indeed, long road20:32
flacostelifeless: thanks for pushing this past the finish line!20:32
lifelessflacoste: we still need to deal with the fallout: isd an u1 custom front pages were removed, branding cut back etc20:32
lifelessflacoste: but I think folk will step up now that we can't cheat ;)20:33
lifelessflacoste: and http://pypi.python.org/pypi/oops-tools20:34
lifelessflacoste: hasn't rendered right, but meh :(20:34
lifelessthe hard part is ~ over20:35
lifelessflacoste: so we used a new project to prevent old branches being pushed wrongly; I'm going to deactivate the old project20:36
lifelessflacoste: It has 46 open bugs, I'm thinking to just manually retarget, no sql or anything - safer.20:36
lifelessflacoste: unless you have a different recommendation ...20:36
flacostelifeless: nah, sounds fine20:37
lifeless(and am leaving closed bugs behind)20:38
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
mwhudsonwhen i forget to land a change --no-qa, what should i do to the tags?20:48
mwhudsonmark it qa-untestable?20:48
lifelessqa-untestable20:48
mwhudsoncool20:48
lifelessand the old project disabled21:09
lifelessnigelb: lp:python-oops-tools21:09
nigelblifeless: <321:09
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 267
wallyworld_sinzui: mumble is taking all my cpu and freezing. trying to fix22:02
jcsackettsinzui: can you hear us?22:08
mwhudsonwallyworld_: try deleting ~/.MumbleSocket or something like that22:11
wallyworld_mwhudson: i reboot fixed it, thanks :-)22:11
sinzuiwallyworld_, bug 66392322:26
_mup_Bug #663923: Cannot view list archive of private team <mailing-lists> <ml-archive-sucks> <regression> <Launchpad itself:In Progress by mars> < https://launchpad.net/bugs/663923 >22:26
* StevenK glares at lifeless.22:49
lifelessStevenK: oh?22:50
StevenKlifeless: Reassigning 52 bug pillars22:51
lifelessStevenK: faster this way22:51
lifelesswait for me to get going on the high review22:52
StevenKUh oh, I've broken Mumble.23:05
StevenKI shaded it, which Unity took as minimising.23:05
StevenKUsing the Mumble notification to bring the window back shows the toolbar. Only.23:06
StevenKOh look, I fixed it.23:09
lifelessflacoste: I've mailed stub about bug_fti23:36
lifelessflacoste: to execute his evil workaround23:36
flacostelifeless: thanks!23:37

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