thumperfactory.makeBugTarget returns a bugtarget which has a bug with two! targets00:00
lifelessconjoined master?00:00
* thumper shrugs00:01
thumperI don't even know what that means00:01
leonardrthumper: sinzui and i just worked on that, let me see if i can understand it for you00:03
lifelessif you have a bug targeted on the development focus for a pillar, then you have 2 bug tasks00:03
lifelessone on the pillar, one on the series00:03
lifelessand this is handled specially.00:03
thumperlifeless: a bare "makeBugTask" should give the simplest possible, surely00:03
lifelessI don't know why we do this.00:03
lifelessthumper: if the target is the default series for the pillar, making a bug on that target will implicitly create one on the pillar00:04
thumperlifeless: a simple makeBugTask should not target any series00:05
lifelessthumper: sure00:05
wgrantlifeless: So, are you looking at the bug search issue? It is just about critical.00:06
thumperok, it seems that it has created a bug with two different product targets00:06
thumperleonardr: what enlightenment can you offer?00:07
lifelessthumper: ok, thats different00:07
leonardrlifeless: if you just call makeBugTask() with no arguments, the target is a product, and a product has no need for a prerequisite bugtask, so i'm not sure what's going on00:07
leonardrer, thumper -^00:07
thumperI know00:08
thumpermake bug makes a default task00:08
lifelessit has to00:08
thumpermakeBugTask makes a task00:08
thumperso when you go makeBugTask with no params00:08
thumperyou get two tasks00:08
lifelesswgrant: so oopses were still nominal yesterday00:08
thumperone from the makeBug call00:08
lifelesswgrant: are you seeing other data ?00:08
thumperand one added in the makeBugTask00:08
* thumper fixorates00:09
leonardrthumper: your fix may conflict with the branch i'm trying to land now, though it should be reconcilable00:10
thumperleonardr: what did you do about it?00:10
leonardrthumper: i changed something else in makeBugTask00:10
leonardrlet me see...00:10
thumperwhich branch is it?00:10
wgrantlifeless: bzr bug searches time out, and when they don't they take >10s.00:12
wgrantlifeless: Didn't this change only get deployed like 7 hours ago?00:12
leonardrthumper: we made some other changes to makeBugTask00:13
lifelesswgrant: 12582 was the change00:13
thumperleonardr: I see that00:14
thumperleonardr: I'm going to change my approach in my test to not need it00:14
leonardrok. fwiw, i think your proposed change is complementary to ours00:14
wgrantRight, and I see the LPS change for that a little over 7 hours ago.00:15
wgrantlifeless: So I don't think we've seen any OOPS reports for that yet.00:15
lifelesswgrant: https://bugs.launchpad.net/ubuntu/+bugs?field.searchtext=sshd&orderby=-importance&search=Search&field.status:list=NEW&field.status:list=INCOMPLETE_WITH_RESPONSE&field.status:list=INCOMPLETE_WITHOUT_RESPONSE&field.status:list=CONFIRMED&field.status:list=TRIAGED&field.status:list=INPROGRESS&field.status:list=FIXCOMMITTED&field.assignee=&field.bug_reporter=&field.omit_dupes=on&field.has_patch=&field.has_no_package=00:19
lifelesswgrant: what I mean is 'searches on ubuntu seem ok'00:21
huwshimiIf wanted to add another static class to this: <td tal:attributes="class view/scope_css_class"> would it be <td tal:attributes="class view/scope_css_class text-right"> or <td tal:attributes="class view/scope_css_class" class="text-right">?00:27
lifelessThe latter00:29
lifelesstal is for when you need things evaluated00:29
lifelessit probably won't combine right00:30
lifelessyou probably need to fix scope_css_class00:30
StevenKlifeless: Can you run select count(id) from SourcePackageRelease; on qastaging? I'd like to get a feel for the size of the table00:35
huwshimilifeless: How do I figure out what object that tal statement is using? There are two classes that define scope_css_class.00:36
huwshimilifeless: I guess that's kind of a general question about these templates00:37
lifelesshuwshimi: bug 735196 may interest you00:37
huwshimispecifically the templates in question are lib/lp/answers/templates/questions-index.pt and lib/lp/blueprints/templates/specifications-index.pt00:37
_mup_Bug #735196: Text pops out of announcment box <css> <Launchpad itself:Triaged> < https://launchpad.net/bugs/735196 >00:37
wgrantHeh, yes.01:36
wgrantIt is a painful wait.01:37
wgrantBut also not today a terribly interesting one.01:37
wallyworldwgrant: can you tell me the command to run to tar up an egg. in the past i've just done it manually but i'm sure there's an easier way.01:37
lifelesssetup.py egg_info ...01:37
wgrantwallyworld: It varies.01:37
lifelessor setup.py sdist01:37
wgrantwallyworld: Often python setup.py egg_info sdist01:37
lifelessor bze export01:37
wgrantAll of what lifeless says is valid.01:38
wgrantWhich egg?01:38
wallyworldthanks. i'll try one of those. i have proposed a change to lazr-js and want to use it locally while i'm waiting to get it approved01:38
wgrantsetup.py egg_info -b-somesuffix sdist01:39
lifelesswgrant: egg_info does an sdist AFAICT01:39
wgrant-b adds a suffix to the version.01:39
* wallyworld goes to impersonate a chicken01:40
* wgrant deletes code.01:41
lifelessholy cow01:41
lifelessthat with clause I was working on yesterday -rocks-01:41
lifelesscold on qastaging:  Total runtime: 151.508 ms01:42
lifeless(20 rows)01:42
lifelessTime: 193.425 ms01:42
wgrantlifeless: POFile:+translate?01:42
wgrantWasn't the old one several repitions of >1s?01:42
lifelessso the old one was 1.1s cold, 300ms hot01:42
lifelessthis is01:42
lifeless190ms hot, 9ms cold01:42
wgrantI doubt that, somehow.01:43
lifelessstub tested on prob, 70ms cold01:43
lifeless190ms cold 9ms hot. doh.01:43
lifelesswe'll probably find it throws some corner case out and becomes pathological01:44
lifelesscats are awesome01:45
wgrantMine likes to sit next to my computer. This is OK except when the side of the case is off, and tail and CPU fan intersect.01:46
wgrantUnhappy cat.01:47
wgrantWhat is yours doing?01:47
lifelessright now, curled up in the basement of its climber, snoring gently01:47
* wgrant deletes lots of NullBugTask-related hacks.01:50
lifelesswgrant: https://pastebin.canonical.com/44718/ may interest you (re search perf)01:58
lifelessdropping the private-bug query -> 1 second02:02
lifelessbut, 10% of the estimated cost02:03
wgrantlifeless: :(02:04
wgrantIt's still got a really awful plan, though.02:04
wgrantmawson goes the other way and is sub-second.02:04
wgrant * 307 Time Outs02:05
wgrantSo close :(02:05
lifelesshard + soft = 180002:06
lifeless300 down from yesterdays report02:06
wgrantAnd we only had <8 hours of fixedness in that report.02:06
lifelessso I think we're good to move ahead02:08
wgrantTo 12s? Or less?02:08
lifelessI'm worried about search02:08
lifelesscrazy eddie plans02:09
lifelessjcsackett: hows cve:+index treating you?02:09
lifelessDistribution:+bugtarget-portlet-bugfilters-stats will need fixing soon02:09
lifelessbugtask:+index is looking pretty happy, as such things go02:09
wgrantBugs' ZCML is crap.02:11
lifelesss/[^ ]* //02:14
wgrant+editstatus is protected from rendering on a NullBugTask in three or four ways.02:17
wgrantWhy would a task listing ever hit a nullbugtask? :/02:19
lifelesswhat was that bug I was looking at yesterday02:20
lifelessthe one with memcache in it ? it wasn't redirecting02:20
wgrantI know why it sometimes doesn't redirect.02:20
wgrantThat doesn't explain how one would have *ever* shown up in a listing.02:20
lifelessthats because the current context has to show02:20
lifelessin the past anyhow02:21
=== matsubara-afk is now known as matsubara
wgrantOur tests are slow.02:34
StevenKlifeless: Did you miss my ping?02:36
lifelessStevenK: presumably02:37
lifelesswhats uo ?02:37
lifelessyes, i did it02:37
StevenKOuch, thanks02:38
thumperlifeless: your with_ statement seems to have a bug in __contains__02:38
thumperlifeless: possibly worth making a test for02:39
StevenKlifeless: I think the fastest way to fix the job on loganberry is to run a memcached on it until the job is done. But I think you might want to investigate why we have one memcached per appserver anyway.02:39
StevenKwgrant: http://pastebin.ubuntu.com/580404/02:40
wgrantStevenK: Looks good.02:40
StevenKwgrant: Shouldn't you be the OCR, anyway?02:41
wgrantStevenK: A reasonable point.02:41
wgrantlp.bugs.tests.test_bugtask_search.TestNoPreloadBugtaskTargets* is SLOW.02:43
StevenKHow slow?02:43
lifelessthumper: what happens?02:43
wgrantStevenK: Many minutes.02:43
lifelessStevenK: we have a cluster02:43
thumperlifeless: the with statement isn't used02:43
StevenKwgrant: Kill it!02:43
lifelessStevenK: and deterministic routing to them02:44
thumperlifeless: and you get:     ProgrammingError: relation "blocked" does not exist02:44
thumper    LINE 1: ....id != 14 AND (Specification.id in (select id from blocked))02:44
lifelessStevenK: so the fastest way is to make sure the memcaches are configured correctly and have gsa open firewalls if needed.02:44
lifelessthumper: thanks02:44
lifelessthumper: probably shallow02:44
thumperlifeless: probably02:44
StevenKlifeless: So the way forward is an RT?02:45
lifelessStevenK: in either scenario yes02:45
StevenKRT's make me sad.02:46
StevenKwgrant: If I'm reading these numbers right, we have processed over 4,500 SPRs with 6 failures.02:51
wgrantStevenK: Excellent.02:52
StevenKBut since memcache doesn't work, we keep looking at the 6 failures.02:52
lifelessdoing bzr pull --overwrite lp:~lifeless/storm/with-without-datetime in my lp tree -- bad02:59
lifelessthumper: lp:~lifeless/storm/with-without-datetime contains the fix03:06
lifelessthumper: I'll let you make a new egg from the branch, because you'll need that to include it in your branch03:07
thumperlifeless: I don't need it03:07
thumperjust bumped into it03:07
lifelessI might bump the egg shortly, thanks for letting me know03:08
StevenKwgrant, lifeless: Back of envolope maths: We're looking at ~ 2 months03:16
wgrantHow many need to be processed?03:17
wgrantThat's almost twice my prediction.03:17
StevenKMy maths was assuming all of them, which I've just realised is dead wong03:17
lifelessso, you can make this faster03:18
lifelesschange garbo so that rather than a 15 minute per loop limit03:19
wgrantThis runs last, dying only on the hour?03:19
lifelessit sets a 50 minute budget for all loops03:19
lifelessand per loop allows $remaining_budget as a limit03:19
StevenKlifeless: No, let me fix my maths first03:20
mwhudsonthumper: the ajax love for blueprints is very nice03:21
lifelessStevenK: fixing this would be a good idea anyway03:21
thumpermwhudson: yay, it is noticed :)03:22
lifelessthe 15 minute per loop is bong because if 5 loops take max time we'll exceed one hour03:22
* StevenK looks for the query lifeless wrote03:22
mwhudsonthumper: you should be coming to UDS, i bet all the ubuntu devs would buy you beer03:22
StevenKthumper: I think you should blog about the blueprint changes and link to the screencast03:23
wgrantLet's not advertise blueprints.…03:23
StevenKThat may involve jcastro and dholbach flying down to hug you03:23
thumperStevenK: I did blog about it03:23
lifelesswgrant: its good to tell people about things we're improving03:24
StevenKlifeless: select changelog is null, count(*) from sourcepackagerelease group by changelog is null; on qas, plz03:26
lifeless f        | 27084503:26
lifeless t        | 55137303:26
StevenKSo we are missing 551k changelogs?03:27
lifelesson qas03:27
StevenKOn prod it is likely 547k03:27
StevenKStill 48 days, give or take03:28
lifelessso, do the change I propose to garbo (and put this job at the end)03:29
lifelessits a general win and will give you 3-4 times the throughput03:29
wgrant14:19:52 < lifeless> and per loop allows $remaining_budget as a limit03:29
wgrantHow is that going to work?03:29
wgrantThat will allow even the first loop to exhaust the full window.03:29
StevenKlifeless: Yes, I was just about to look at that03:29
wgrantPreventing the subsequent ones from running at sll.03:29
StevenKwgrant: So, garbo-hourly has a budget of 50 minutes. Allow the loops to have a budget of whatever is left of the 50, rather than 15 minutes.03:30
wgrantStevenK: Right. So loop 1 has 50 minutes to run it, and does so.03:30
StevenKwgrant: Can haz review of https://code.launchpad.net/~stevenk/launchpad/dsd-base_source_pub-archive/+merge/5335703:31
wgrantGoodbye loops >=203:31
StevenKlifeless: wgrant has a good point03:31
wgrantStevenK: I shouldn't, but since I'm mentored...03:31
wgrantlifeless: Could you mentor StevenK's?03:31
StevenKwgrant: Well, then I'll ask lifeless for a review, then03:31
StevenKwgrant: You don't need to feel obligated to review03:32
wgrantStevenK: I am happy to, but I think it's not really appropriate in this case. But this case is pretty trivial, so meh.03:32
wgrantAnyone want to review https://code.launchpad.net/~wgrant/launchpad/unuse-nullbugtask/+merge/53363?03:34
lifelesswgrant: it would, but only one of them ever uses its full budget atm - the spr changelog one03:35
StevenKlifeless: That is false, read the logs03:36
lifelessStevenK: what else is using its full budget ?03:36
StevenK2011-03-15 02:13:16 INFO    Running OAuthNoncePruner03:38
StevenK2011-03-15 02:28:08 DEBUG   Done. 1 items in 1 iterations, 891.136 seconds, average size 1.000000 (0.00112216283655/s)03:38
StevenKThat isn't every run, but it does happen.03:38
lifelessthat looks like a bug03:38
lifelesstable contention perhaps03:38
StevenKIt is table contention03:38
lifelessnot at 15 minutes its not03:39
StevenKIt blocks on two transactions and sleeps03:39
StevenKBut I don't want to paste 6 lines to the channel03:39
StevenKthumper: https://code.launchpad.net/~wgrant/launchpad/unuse-nullbugtask/+merge/53363?03:43
* thumper looks03:43
lifelessStevenK: the backoff algorithm needs fixing I guess03:44
thumperStevenK: done03:45
* thumper graduates StevenK03:45
thumperStevenK: I'll send an email to the list03:45
LPCIBotProject windmill build #49: STILL FAILING in 1 hr 7 min: https://hudson.wedontsleep.org/job/windmill/49/03:46
wgrantthumper: Thanks. Could you now mentor https://code.launchpad.net/~lifeless/launchpad/bug-734642/+merge/53365?03:47
StevenKthumper: !!!!03:47
wgrant(congrats StevenK)03:47
StevenKthumper: Let me edit ReviewerSchedule03:49
poolieyes, congrats03:52
pooliewgrant i filed bug 735260 for the problem i mentioned before03:52
_mup_Bug #735260: multiple timeouts in bug search <oops> <regression> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/735260 >03:52
poolieit seems still broken03:52
wgrantpoolie: You probably want to convince lifeless that it has regressed.03:52
wgrantI am convinced.03:52
lifelessyes, the tradeoffs have altered03:53
lifelessubuntu bug search is faster than it was03:53
lifelessand we have more of those03:53
lifelessyes, seriously03:54
=== matsubara is now known as matsubara-afk
lifelesswe had 300 oopses from ~ 8 hours of the new search query03:55
lifeless(total timeouts)03:55
poolieah, i wasn't questioning your assertion, just expressing frustration at not being able to search03:55
lifelessthats down day on day from monday and from the weekend03:55
pooliegood thing i have email i guess03:55
lifelessthere is certainly a spike03:59
pooliei'm glad it's progressing03:59
lifelessthumper: https://code.launchpad.net/~lifeless/launchpad/bug-734642/+merge/5336504:00
lifelessthumper: oh you have already - thanks04:00
StevenKlifeless: Did you want to reping about the LPS feature flags?04:13
lifelesspoolie: try searching at bugs.launchpad.net/bugs04:14
lifelesspoolie: its performing fine - 5 seconds to query sshd04:14
lifelessStevenK: econtext04:14
StevenKlifeless: Removal of the recipe beta feature flag04:15
poolielifeless, https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1900G23904:15
poolieis not 'fine'04:15
lifelesspoolie: thats very odd04:16
lifelessbecause I tried right before commenting04:16
lifelesspoolie: what query did you use?04:16
wgrantAlso right after commenting?04:16
wgrantMaster vs. slave, maybe?04:16
lifelesswgrant: possibly04:16
lifeless98 queries/external actions issued in 4.67 seconds04:16
pooliei typed 'shortreadverror' in the search field there, both with 'bzr' in the project field and without04:17
lifeless29 queries/external actions issued in 6.53 seconds04:17
lifelessbug 413430 bug 402857 bug 67343904:17
_mup_Bug #413430: ShortReadvError on index file <data-integrity> <ui> <Bazaar:Confirmed> < https://launchpad.net/bugs/413430 >04:18
_mup_Bug #402857: ShortReadvError in pack file: bzr check should check pack file hashes and recover from problems <check> <packs> <Bazaar:Confirmed> < https://launchpad.net/bugs/402857 >04:18
pooliejust curious, why did you untag it 'oops' and 'regression'?04:18
lifelesswe use oops and timeout tags as partitions04:18
poolie'oops' means 'non-timeout oops'?04:18
lifelesssearch performance is being a problem but we haven't figured out what is up yet04:19
lifelessit may well be a coincidence04:19
lifelessparticularly given that right now the same searches are working for me an dbreaking for you04:19
pooliethis used to work reliably, and now it doesn't --> regression, is it not?04:19
lifelesspoolie: it didn't work reliably04:19
wgrantFor !Ubuntu it did...04:19
lifelesswgrant: poolie is searching in ubuntu still - the bug he filed was an ubuntu bug search04:20
pooliefor me, it's gone from working >95% of the time to working <10% of the time04:20
poolieno, it wasn't04:20
wgrantWasn't it in the bzr product?04:20
pooliewgrant, yes04:20
lifelesshttps://bugs.launchpad.net/ubuntu/+bugs?field ...04:20
lifelesspoolie: ^ thats the url in your bug description, which I have not altered04:20
lifelessthe other two oopses you've reported here I have asked for a sync of, to look at04:22
poolieit is also failing in plain bzr searches, i'm pretty sure04:22
wgrantIt is, I saw some earlier.04:22
pooliei'm confused, i thought i posted several oopses in the description04:22
pooliefor instance https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1900J23704:23
lifelessyou pasted that here, its syncing at the moment04:23
lifelessafter my suggestion to search on the root context04:23
lifelessthe J oops is on bzr04:24
lifeless9 second count cold; 2 second count hot04:25
poolie<poolie> i'm getting a 'please try again' page talking to lp04:25
poolie in fact https://bugs.launchpad.net/bzr/+bugs?field.searchtext=winsshd&orderby=-importance&search=Search&field.status%3Alist=NEW&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.assignee=&field.bug_reporter=&field.omit_dupes=on&field.has_patch=&field.has_no_package= is pe04:25
pooliersistently timing out04:25
pooliedoes 'regression' mean 'used to work and now doesn't' or is it more subtle?04:25
lifeless         ->  Index Scan using bug_fti on bug  (cost=0.00..2306.35 rows=42 width=4) (actual time=43.873..1929.329 rows=7 loops=1)04:25
lifeless               Index Cond: ((fti)::tsvector @@ '''shortreadverror'''::tsquery)04:25
pooliei don't care what tags it has, i just want to understand what they mean04:25
lifeless               Filter: ((duplicateof IS NULL) AND ((NOT private) OR (SubPlan 1)))04:25
lifelesspoolie: regression isn't strictly defined; I may add it back to the bug once we have a handle on whats up04:26
lifelesspoolie: regressions and timeouts and oopses all fall in the same priority bucket (and escalated bugs)04:26
poolieanyhow, to be clear04:27
pooliesearching just in bzr was working and now isn't04:27
pooliei might have accidentally been in the package context for one search that i pasted into the bug, but it's also failed several times in the project04:27
lifelessso, we're looking at it04:28
lifelesshave been all day in fact04:28
pooliei'll let you get on with it04:30
pooliejust wanted to be sure the bug was accurate04:30
lifelesspoolie: regression is really about code changes that break things horribly. There is some evidence that this isn't a code change issue per se04:33
lifeless*even though* a code change was landed04:33
wgrantStevenK: Want to use your new superpowers on https://code.launchpad.net/~wgrant/launchpad/delete-nullbugtask/+merge/53367?04:37
wgrantUgh, forgot prereq.04:37
wgrantStevenK: https://code.launchpad.net/~wgrant/launchpad/delete-nullbugtask/+merge/5336904:40
StevenKwgrant: Done.04:42
StevenKIt's going to hard to get out of the habit of code* everything04:42
StevenKwgrant: I fully support your plan to kill NullBugTask, and wish to subscribe to your newsletter.04:43
wgrantStevenK: you should also set the MP status, probably.04:43
StevenKAlso done04:43
wgrantYou overwrote mine :(04:43
wgrantBut thanks.04:43
jtvStevenK: I need some help with Q/A for generating the DSDJs.05:13
jtvI need to turn soyuz.derived_series_jobs.enabled on, which I'm not privileged to do, and then I need to make sure that everything that will create SPPHs still works which I don't know how to do.05:13
StevenKTurn it on *where*05:14
lifelesspoolie: mostly fixed05:14
jtvStevenK: on qastaging, I guess—depends on where we can do whatever generates SPPHs.05:19
StevenKgina can't run on qastaging, you can upload and copy, though05:19
jtvDoes that mean one place will get exercised but another won't?05:20
StevenKgina can run on DF, but carefully05:20
jtvSo if I can get someone to enable the flag on qastaging, I can test uploading to PPAs and copying between PPAs there?05:21
jtvlifeless: could you enable soyuz.derived_series_jobs.enabled for me on qastaging?05:22
lifelessjtv: I don't have the admin bit05:24
lifelessjtv: stub does; stub^05:24
stubHow do I do that? Is this a feature flag or something?05:25
lifelessvisit qastaging.launchpad.net/+feature-rules05:26
wgrantIt's a boolean feature flag. Set it default true.05:26
lifelessadd a line like05:26
lifelesssoyuz.derived_series_jobs.enabled default 0 on05:26
lifeless(flag, scope, sequence, value)05:26
lifelesspoolie: all sorted now AFAWCT05:29
wgrantIt's still not great, but it's <2s now.05:30
stubThat ff is on now.05:35
stubOn qastaging05:35
stubjtv: ^^^05:35
jtvthanks stub05:35
jtvStevenK: how do I make dput upload to qastaging?05:55
StevenKUgh, I can never remember.05:55
wgrantDoes asuka run poppy?05:55
wgrantI didn't think it did.05:56
wgrantYou can do recipes and copies there, but not uploads AFAIK.05:56
StevenKDoesn't look like it does.05:58
jtvSo I can't test uploads?05:58
wgrantOnly on mawson.05:58
jtvSo I can't.05:59
wgrantNot without our assistance.05:59
jtvThen could you help out with this?06:00
jtvThanks.  We'll need to enable the feature flag first.06:00
wgrantNo, first we need to update the codebase :(06:00
wgrantWill take a few minutes.06:00
wgrantjtv: Your change is in db-devel?06:01
jtvwgrant: I believe so, but let me check06:01
jtvwgrant: it is, as of r1029606:03
wgrantGreat, thanks.06:03
jtvThe feature flag is soyuz.derived_series_jobs.enabled06:04
jtv(Note underscores; the documentation says whosoever useth dashes in feature-flag names shall suffer eternal, er, suffering06:05
wgrantI think we all agreed on that.06:05
wgrantStill waiting for mawson to update.06:05
jtvMeanwhile I'm waiting for my copied package to be published on qastaging… how long should that take?06:07
wgrantThe publisher does not run.06:07
wgrantWhy do you need a publisher?06:07
jtvI need to test whether I broke SPPH generation or not.06:08
wgrantSPPHs are done in the webapp transaction.06:08
wgrantYou can check through the API, or even the web UI.06:08
jtvHow do I do that?06:08
wgrantThat should do it.06:09
StevenKNote the PERSON06:09
StevenKjtv: Why did you create a new interfaces file for DSDJs when the two current DistributionJobs use interfaces/distributionjob?06:10
StevenKjtv: And it's bugging me, so can I move it?06:10
jtvStevenK: you can if you like, but I wanted to avoid the mindless piling-on that has plagued parts of our codebase for so long.06:10
StevenKThey're tiny interfaces, so meh06:11
jtvwgrant: I suppose I need to replace the PPA with something as well?06:11
wgrantjtv: Yes.06:11
jtvBut with what?06:11
lifelessonly if you want it to work06:11
wgrantWhichever PPA you copied it into...06:11
jtvI copied into ~jtv/+archive/ppa/… nothing in there strikes me as a PPA name.06:12
wgrantThe format of the URL might give you a hint :)06:12
jtvWhat, the name is https?06:14
jtvSo I'm back where I started.06:15
wgrantjtv: https://dogfood.launchpad.net/+feature-changelog06:15
jtvYes, that would be it.06:17
jtvAs for the pending packages, that URL just ended up getting me to the page I was already looking at.  I don't get the impression that the status=Pending is doing much; packages that I thought were published years ago are still in there.06:18
wgrant"total_size": 106:19
jtvThe word "total" doesn't appear on the page06:19
wgrantIt's not a page.06:19
wgrantIt's a JSON document...06:19
jtvI think I got redirected at some point.06:19
jtvGetting JSON now.06:20
jtvSo… where does the SPPH get created?06:21
jtvInteraction-wise.  What would fail if that went wrong?06:21
lifelessthumper: leonard might be the best possible person to look at https://bugs.launchpad.net/launchpad/+bug/73520206:21
wgrantYour +copy-packages POST would OOPS, or it wouldn't show up with status=Pending.06:22
jtvAh, ok, so it was fine all this time!  Thanks.06:22
wgrantNow, you wanted to test an upload on DF?06:22
wgrantFTP to upload.dogfood.launchpad.net06:23
jtvOK, I logged in anonymously.06:24
wgrantYou should be using dput to do that for you.06:25
jtvAh, so reconfigure dput, then dput, then configure back?06:26
wgrantRight. Add a stanza to ~/.dput.cf, modelled on the existing ppa one in /etc/dput.cf.06:26
jtvExcept fqdn = dogfood.launchpad.net?06:26
jtvAnd then make dput use that stanza somehow.06:27
wgrantdput dfppa:jtv/ppa blah_source.changes.06:27
jtvAnd I guess the dfppa is the name of the new stanza?06:28
jtvIt's uploading, so I guess that's good.06:28
jtv…and it's uploaded.06:29
jtvI'm not seeing it show up on my dogfood PPA page though.06:29
StevenKIt needs to be processed06:29
StevenKWhich needs to be run by hand06:30
wgrantI'm just clearing out incoming/06:30
jtvSo any moment now?06:30
wgrant2011-03-15 06:31:19 DEBUG   Rejected:06:32
wgrant2011-03-15 06:31:19 DEBUG   Unable to find distroseries: unstable06:32
jtvUploading again with that changed to "natty."06:33
jtvwgrant: could you run it again?06:35
wgrant2011-03-15 06:34:40 DEBUG   Rejected:06:35
wgrant2011-03-15 06:34:40 DEBUG   The signer of this package has no upload rights to this distribution's primary archive.  Did you mean to upload to a PPA?06:35
wgrantYour upload path was /ubuntu.06:35
jtvHow did that get set?06:37
jtvI used "dogfood:jtv/ppa"06:37
wgrantSounds like your path in dput.cf is bad.06:38
wgrantIt should have %(dogfood)s in it06:38
StevenKActually, %(section name)06:39
jtvI don't see any path in there06:40
jtvOh, "incoming"?06:40
jtvIt currently says "ubuntu/"06:40
jtvWhat should that be?06:40
wgrantCopy it from the ppa section, except s/ppa/dogfood/06:41
jtvI don't have a ppa section, only an lpdev section.06:44
wgrantEven in /etc/dput.cf?06:44
jtvThere is one there.  ~%(ppa)s/ubuntu06:45
jtvSo I'll use that then.06:45
jtvGrr packag has already been uploaded to dogfood… bumping version number06:46
wgrantJust dput -f06:47
jtvToo late06:48
jtvAlready uploaded the new one.06:48
wgrantjtv: Looks like I need to run security.py06:54
jtvahhh yes06:54
wgrant2011-03-15 06:55:08 DEBUG   Creating PENDING publishing record.06:55
wgrantStill going,..06:55
wgrantThis bit often takes a couple of minutes on mawson; NFI why.06:55
pooliehttps://bugs.launchpad.net/launchpad/+bug/735290 ouch06:56
_mup_Bug #735290: changing Project drop down in project group +filebug loses all your work <ajax> <bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/735290 >06:56
wgrantjtv: Accepted.07:06
wgrantjtv: You can check for a publication now.07:06
jtvwgrant: thanks!07:08
wgrantThe publisher should be running now, too.07:08
jtvwgrant: the package's on the PPA listing07:09
wgrantShall I now check for jobs?07:09
jtvIf that means an SPPH was just successfully created, then that's done.07:09
jtvOh yes please, that too :)07:09
wgrantWhich table?07:10
jtvLook for json metadata consisting of {sourcepackagename: <id>}07:10
wgrantNothing there.07:11
wgrantOnly some package copy things.07:11
wgrantBut I guess that's not surprising.07:11
wgrantAs these are not derived series uploads.07:11
jtvAhh of course07:11
jtvSo we ought to try that as well.07:12
StevenKmaverick is a derived series07:12
StevenKOn DF07:12
StevenKSo re-upload to that07:12
jtvFrom another distro?07:12
wgrantFrom sid, IIRC.07:12
wgrantI changed that in December.07:12
wgrantjtv: I'll give you upload privs. Upload again to /ubuntu07:13
jtvThanks.  Uploading already.07:13
jtv(With maverick as the series)07:13
wgrantSeems to be.07:14
wgrantWrong path.07:14
wgrantI'll move it.07:14
jtvThanks.  I have no idea what was wrong about that, or indeed what might have been right07:14
wgrant~jtv/ppa/ubuntu is your PPA, not the primary archive.07:15
jtvAh, of course, we're not uploading to the ppa any more07:15
jtvOr at least, trying not to be07:15
jtvwgrant: and then I suppose it'd be also worth checking that we can copy a package into maverick.07:16
wgrantjtv: Indeed. I'll do that in a sec.07:17
wgrantJS hacks upon JS hacks.07:17
jtvA hex upon JS hacks.07:17
lifelesshttps://bugs.launchpad.net/launchpad/+bug/734751 made me sad07:17
_mup_Bug #734751: BranchSet:CollectionResource:#branches timeouts <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/734751 >07:17
wgrantlifeless: Oh?07:18
wgrantStevenK: Looks like someone fixed Maverick to derive from Lucid again.07:20
wgrantActually, it might help if I look at DF.07:21
wgrantWhere it does derive from Sid.07:21
jtvWebsquinting.  The latest meme.07:21
lifelesswgrant: incomplete fix :<07:23
wgrantlifeless: :(07:24
wgrantjtv: So, I can see some bugs in this, but I can't see why it's not working.07:25
jtvwgrant: what is it you're seeing?07:26
wgrantjtv: Even your upload did not create a DSDJ.07:26
jtvwgrant: is it possible to run "make harness" against the dogfood db?07:27
wgrantjtv: I am doing that right now.07:28
wgrantI wonder if the flag controller isn't set up properly in scripts.07:28
lifelessits not setup by scripts07:29
jkakarpoolie: You rock! :)07:29
lifelessscripts need to setup an appropriate controller as part of setting up whatever work context they have07:29
jtvlifeless: does that mean that feature-flag checks will fail silently in scripts?07:30
lifelessthey won't fail07:30
lifelessthey will find no flags set07:30
pooliethanks jkakar, so do you :)07:31
pooliei'm just resolving conflicts in and manually testing the other branch07:32
jkakarpoolie: Thanks.  I probably should have based that branch on the optional-needs-testing one, but I didn't think about it until too late.07:34
StevenKwgrant: Over the last 3 runs: 1054, 1061, 1120.07:34
pooliei can refactor the template slightly07:34
LPCIBotProject windmill build #50: STILL FAILING in 1 hr 6 min: https://hudson.wedontsleep.org/job/windmill/50/07:34
jtvlifeless: to me that means that the feature-flag check will fail silently.07:35
jtvWhich sucks.07:35
wgrantStevenK: This is still in 15 minutes?07:35
StevenKwgrant: Yes07:35
wgrantStevenK: So it's more like 20 days?07:35
StevenKI have no idea07:35
pooliejtv it seems reasonable to me that the default feature flag controller fails (or doesn't exist) rather than doing nothing07:35
StevenKI was going to get a better idea after 3-5 days of it running07:35
jtvpoolie: yes, I'd expect it to fail in the conventional sense of the word, not just return a value that's basically arbitrary.07:36
jtvSo… how can we fix this and give the scripts in question access to the feature flags?07:39
pooliewell, i guess, copy across or call the setup code07:44
pooliesomething similar to what's done in features/webapp.py07:44
* jtv looks07:49
jtvwgrant: in any case, for now this bug is qa-untestable.  Thanks for all your help—I'm afraid we'll have to do it again later.07:49
jtvwgrant: by the way, which script(s) would be affected exactly?  gina soyuz_process_upload?07:52
pooliejkakar, do you think i can easily write a test for the handling of an 'access denied' error from lp?08:00
StevenKIf it raises Unauthorized you can test for that.08:03
wgrantjtv: process-upload.py, gina.py, copy-package.py, at least.08:05
poolieStevenK, my question was more whether there is enough mock-type framework in the client to raise Unauthorized at the right point08:06
lifelessjtv: you'll want a variant on the controller which supplies the script id as the pageid, or something along those lines08:06
jtvlifeless: good point08:09
lifelessI think the pageid scope reads from the wsgi stack08:09
lifelessso, there is some plumbing changes needed08:09
wgrantlifeless: Why expose it as a pageid? Why not a separate namespace/08:10
jtvWell it needs a pageid anyway, doesn't it?08:11
wgrantscript != page08:11
wgrant=> no pageid08:11
lifelesswgrant: could do that, though 'primary key for oops and other stuff' is good enough for me08:11
lifelesswgrant: I don't really care about the label; having the pageid scope present in the lookups in a script would be a bug (and make that scope more complex) and vice verca.08:12
lifelesspageid wsgi  based scope implementation, I mean.08:12
jtvThis does not sound like something I ought to be resolving reactively in unrelated feature development.08:13
lifelessjtv: well, feature development shouldn't go down unnecessary diversions; this is probably 1/2 day to a day total, which is about break even vs having sysadmins enable/disable cron jobs during early deployment lessons08:14
lifelessjtv: so if I was on a feature squad, I'd consider it in scope to incrementally improve infrastructure to do the feature needed08:15
jtvIt doesn't sound like something I could do in half a day.08:15
jtvBut we'll see.08:15
poolieStevenK, fyi lazr.restfulclient apparently does not raise a separate subclass for unauthorized errors08:26
wgrantPrivate bugs make me sad.08:38
wgrantThey make this NullBugTask removal a little difficult, because NBT is used to conceal the target.08:40
wgrantAlthough it doesn't do a very good job, so maybe we don't care.08:40
lifelesswgrant: thats probably the cause of poolies api disclosure bug08:41
wgrantlifeless: It is rather related, yes.08:42
wgrantI am trying to think of a sensible way to solve it.08:42
lifelessraise GoAwayDeniedHaHaHa08:42
wgrantlifeless: Do you know the issue?08:43
wgrantlifeless: We want to redirect users to the task they requested once they've logged in.08:44
pooliei just found another api privacy bug, if that makes you feel any better :)08:44
wgrantSo we allow traversal to the BugTask.08:44
lifelesswgrant: possibly; I suggest you explain it for clarity.08:44
wgrantlifeless: This may involve returning a NullBugTask.08:44
wgrantRegardless, an unauthenticated user will not hold launchpad.View, so will be redirected to a login page.08:45
wgrantEven if the object doesn't *really* exist.08:45
lifelesswgrant: why? I mean: we refuse to acknowledge or deny the presence of private content08:45
lifelesswgrant: so just a not found error at the original url + a login button should be all we need to send.08:45
lifelesswgrant: for /all/ view-denied cases08:46
wgrantlifeless: Right, that's what I was hoping you'd agree with.08:46
adeuringgood morning08:46
wgrantSince it's now consistent with what we do with projects.08:46
wgrantlifeless: I will redirect all access-denied cases to /bugs/1, which will ask for login and then redirect to the default task.08:46
_mup_Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I08:46
wgrantIt means people will lose the task context if they're not logged in, but that only matters for nomination these days.08:47
wgrantSo, stuff them.08:47
_mup_Bug #735346: can't read a collection when one member is private <api> <bugs> <disclosure> <security> <Launchpad itself:New> <lazr.restfulclient:New> < https://launchpad.net/bugs/735346 >08:47
lifelesswgrant: *blink*08:47
wgrantlifeless: Oh?08:47
lifelesspoolie: thats a simple case by case bug08:47
pooliespecific to linked_branches?08:48
wgrantpoolie: That's very interesting.08:48
wgrantpoolie: lazr.restful checks for launchpad.View on any object it returns rom from a collection.08:48
wgrantpoolie: So that should work fine.08:48
wgrantlifeless: Why are you blinking?08:48
poolielifeless, so i should say "linked_branches" in particular?08:49
lifelessyes, I've changed it08:49
wgrantpoolie: That reveals yet another bug.08:50
lifelesswgrant: I thought what we did was issue a 404 *with no redirect*08:50
lifelesswgrant: so I'm surprised you're suggesting a redirect08:50
henningervba: ping ;)08:50
wgrantpoolie: the __repr__ violates the security proxy and displays the unique_name anyway.08:50
wgrantlifeless: Eh, I guess.08:50
rvbahenninge: yes08:50
wgrantlifeless: I should probably be consistent, then, and deny traversal through /bugs too.08:51
henningervba: are you having trouble landing your branch? ;)08:51
poolieindeed, i was just going to say that too08:51
wgrantSince this seems to be the way we're going now.08:51
wgrantIt will confuse people. But privacy is confusing.08:51
lifelesswgrant: so I think I'm saying:08:51
lifeless - the users browser should show the url they put in08:51
lifeless - if they are logged in its a 40408:51
lifeless - if they are logged out its a 40408:52
lifeless[and logging in will let them see it if they have permission]08:52
rvbahenninge: I was blocked by some failure (Steven called the failure furphy)... but I'm landing it right now and it seems to go fine.08:52
lifelesswgrant: unless we introduce 'can know, but can't see' vs 'cannot know about if cannot see' - which traversal permission is about08:52
henningervba: cool08:52
lifelesswgrant: for bugs i don't think we need traversal separate from view08:53
wgrantlifeless: What do you want to do about /bugs/1234, where 1234 is an invisible private bug?08:53
_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 >08:53
lifelesswgrant: 40408:53
wgrantlifeless: We don't, no.08:53
lifelesswgrant: no redirect08:53
wgrantlifeless: Right, OK.08:53
lifelesswgrant: until we permit bug deletion, it will permit trivial probing to find private bugs, but it won't disclose their context08:53
wgrantlifeless: I imagine we probably have some transaction failures that make that false, but OK.08:54
henningervba: a branch like that does not have to go through ec2 testing AFAIUI.08:54
wgrant(incrementing the sequence but then aborting)08:54
henningervba: since you only changed test code it should be fine to just make sure those are still passing and then you can do bzr lp-land.08:55
henningervba: just thought I'd mention that.08:55
lifelesswgrant: right08:55
rvbahenninge: does this mean that I should use special options to land it?08:55
lifelesswgrant: its a fault in using monotonic sequences as ids, not in the privacy story08:55
wgrantlifeless: Yup.08:55
henningervba: what I do: Run the tests locally, then do "bzr lp-land" to submit it to pqm.08:56
henningervba: no need for "ec2 test" or "ec2 land".08:56
rvbahenninge: ok08:56
henningeIt's just a lot quicker ...08:56
rvbahenninge: I did "ec2 land" yesterday (this failed, well the PQM failed, not the tests)  but got advised to use lp-land this morning by Steven08:57
henningervba: yeah, that's another one.08:57
henningervb: if the branch already passed ec2 and just bounced off pqm, there is no need to run it through ec2 again.08:58
rvbahenninge: indeed08:58
poolielifeless, you asked the other day if my kanban script had got any faster because of lp's changes08:59
henningervba: also, I was surprised to find the merge proposal still in "Needs review" because AFAIK ec2 land and bzr lp-land won't land branches when the mp is not "Approved"09:00
poolieit's gone from 2:54 against old lpnet and 2:14 against old edge, down to 1:4409:00
pooliewhich is pretty good09:00
henningervba: you can set an MP to "Approved" yourself once you received all the necessary reviews.09:00
poolie_however_, the data its reading has also changed, and the timing will be data-dependent09:00
poolieso it's not a great benchmark09:00
rvbahenninge: ok ... ec2 land --force can for a land AFAIK09:01
pooliebut, better than getting slower09:01
rvbas/can for/can force/09:01
henningeyes ,)09:01
henningebut no need for that, that's what I mean.09:01
rvbahenninge: ok, got it09:01
StevenKrvba: I have never used ec2 land --force09:02
StevenKSo I'd strongly suggest you don't either09:02
rvbaStevenK: sound pretty much the same to use --force or to Approve your own MP ... but I did it because henninge approved my MP and I had to commit a few cosmetic changes after that09:03
rvbaStevenK: still, I get your point :-)09:04
StevenKrvba: You are allowed to Approve your own MP09:04
rvbaStevenK: yes, much cleaner solution indeed09:05
henningeStevenK, rvba: Yeah, we once argued that setting it to "Approved" is to indicate that all reviews (code, ui, release-critical) have been received.09:05
henningeAFAIK tarmac will automatically land branches that are set to Approved.09:05
henningebut we are not yet usging that.09:06
henningeusing, evin09:06
henningeeven, even09:06
StevenKWe should be!09:07
StevenKAnd Jenkins!09:07
StevenK /rage, /bitch, /complain09:07
wgrantPagetest stories are bad.09:07
bigjoolspage stories are good, if they are actually stories09:08
wgrantbigjools: Not when they span 10 files.09:09
bigjoolsthat's not a story, that's a tome09:09
StevenK"Page War & Peace"09:10
=== almaisan-away is now known as al-maisan
jkakarpoolie: You could use mocker to write such a test, but it might be a bit tricky.09:53
jtvlifeless, if you're still here (which you probably shouldn't be :) would it make sense to have scopes like "script:gina"?09:56
jtvOr should we encode script names in the flag names where appropriate?09:57
jtvFor example, we could have a flag "enable" in scope script:gina, and similar for all other scripts if we wanted.09:58
=== gmb changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | firefighting: - | On call reviewer: gmb | https://code.launchpad.net/launchpad-project/+activereviews/
lifelessjtv: both10:02
jtvboth what?10:03
jtvyes, I see10:03
lifelessexample from the web ui10:03
lifelesswhen we want to affect only one / some pages, even for common code, we use the pageid scope10:03
pooliejkakar, for now i just interactively tested it10:03
pooliemocker could be ok10:03
jkakarpoolie: Cool.10:04
lifelesswhen we want to probe for something that its only relevant to a particular domain, we use the domain inthe flag name10:04
lifelessan example of the former is 'memcache pageid:BugTask:+index default '10:04
lifelessan example of the latter is 'recipes.beta default 1 on'10:05
jtvlifeless: right ho, get it.  A feature flag for disabling scripts sounds useful, no?  It suddenly looks pretty easy.10:05
lifelessjtv: exactly10:05
jtv(I wonder why lp.services.features.webapp doesn't export anything in __all__ btw)10:05
lifeless__all__ only matters if one is doing import *, or worried that pydoc will show too much10:06
lifelesswe should probably delete most of our __all__'s now that the import fascist is years out of date10:06
StevenKSo we should kill the import fascist?10:07
lifelessor fix it10:13
lifelessits not guarding much in the current layout, because all the layers are mixed up10:14
jtvMaybe we should depose the import fascist and have a customs officer instead.10:14
LPCIBotProject windmill build #51: STILL FAILING in 1 hr 9 min: https://hudson.wedontsleep.org/job/windmill/51/10:22
stubThe goal with __all__ is to document public api from internal api.10:37
stublifeless: I know I use it that way - if it is not in __all__, it is only supposed to be used by that package and its tests.10:38
lifelessstub: #ubuntu-meeting is looking for you10:42
stubWe can already disable cronscripts using cronscripts.ini btw.10:42
stubIf feature flags lived in a high available database, rather than the main db, we could use that for cronscripts.ini.10:54
lifelesstomorrow I should get my hbase vs cassandra mail rolling10:55
lifelessand I need to look into mongodb10:55
stubI suspect zookeeper might be suitable too... can't recall if you found a flaw in that?10:55
lifelessneed to look more closely at it; its in an awkward spot AIUI10:56
lifelesstheres some mutterings (long term) about being able to handle london being down10:56
stubIIRC zookeeper seemed pretty much designed for our feature flags stuff, but would probably be way overkill if that is all we used it for.10:57
stub(same with moving it out of PG - I'd rather have a little cruft like cronscripts.ini and feature flags duplicating work than over engineering a high availability database just for FF)10:59
lifelesshmm, why isn't rev 12595 on qas10:59
lifelessstub: me too10:59
deryckMorning, all.11:01
lifelessnight all11:08
=== al-maisan is now known as almaisan-away
LPCIBotYippie, build fixed!11:29
LPCIBotProject windmill build #52: FIXED in 43 min: https://hudson.wedontsleep.org/job/windmill/52/11:29
wgrantgmb: Thanks.11:38
wgrantAlmost there.11:38
=== jtv is now known as jtv-afk
=== matsubara-afk is now known as matsubara
=== leonardr changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | firefighting: - | On call reviewer: gmb,leonardr | https://code.launchpad.net/launchpad-project/+activereviews/
=== henninge_ is now known as henninge
henningegmb, leonardr: Hi! Can I ask a review of either of you, please? It's a UI-related branch that adds a new page.12:17
leonardri think i should defer to gmb on that kind of branch, but i'll take a look if he's not around12:18
LPCIBotProject db-devel build #452: FAILURE in 4 hr 40 min: https://hudson.wedontsleep.org/job/db-devel/452/12:19
henningeleonardr: that would be nice but it's ok if you turn it down.12:20
leonardrhenninge: i'll do what i can and note inthe review if i think it needs more eyes12:20
leonardrbenji, are you around? i'd like you to look at https://code.launchpad.net/~leonardr/lazr.restful/handle-view-that-provides-no-status/+merge/53342 and tell me if it makes sense from a zope perspective12:20
benjileonardr: sure12:21
benjileonardr: getting a view is adapting an object and the request to Interface, so instead of getting a view of the execption and then checking that it is an insteance of WebServiceExceptionView you could instead...12:32
benji...define, say, IWebServiceExceptionView and adapt the object and request to IWebServiceExceptionView12:32
leonardrbenji: i thought about using interfaces. i rejected the idea because existing view classes don't implement any particular interface. but then i made the assumption that they would all be WebServiceExceptionView12:33
leonardrso yeah, i could define IWSEV, have it define .status, and make WSEV implement it12:34
benjiyou could register an adapter from (WebServiceExceptionView, request) to IWebServiceExceptionView which simply returns the WebServiceExceptionView instance12:35
leonardrbenji: is there any advantage of that over having WSEV implement IWSEV?12:36
benjileonardr: it depends on how you structure the code, if you adapt from (e, request) to Interface and then check if the result provides IWSEV, then it's esentially the same thing you have now (i.e., not evil, but doing things indirectly)12:37
benjibut just making WSEV implement IWSEV will not make adapting (e, request) to IWSEV work because the CA doesn't have an adapter registered for that signature12:38
leonardrbenji: i see. i may change the registrations then. after i do this review i'll see what works12:39
leonardrhenninge: what exactly is a translation template? is it like a list of strings to be translated?12:45
henningeleonardr: exactly12:45
leonardrhenninge: in template_info, i don't understand why you can assume that self.context has a productseries (line 221 of the diff)12:46
leonardrit has an upstream, but is an upstream always the kind of thing that has a productseries?12:48
henningeleonardr: this view is only for sourcepackages, so the upstream is always a productseries.13:06
henningeleonardr: self.is_configuration_complete includes the check if the productseries exists.13:07
henningeleonardr: sorry, was distracted13:07
leonardrhenninge: np13:07
henningeleonardr: actually, I am about to have lunch13:08
leonardrhenninge: ok, if i have more questions i'll just put them in this channel13:08
henningeleonardr: cool, thanks13:08
leonardryou have some copy-and-paste comments on line 398 and line 40513:09
leonardrand 41313:09
=== henninge is now known as henninge-lunch
leonardron line 543, the docstring reads like a commit message. you should say what you're actually setting up13:16
leonardryou could also refactor the many times you call getViewBrowser, but that's not a big deal13:17
maxbIs there any particular reason lazr-js's embedded fulljslint.js is such an old version?13:22
jmlderyck: your blog forbids me commenting13:22
jmlderyck: so I'll just heckle here13:22
jmlderyck: "Is the solution to move to Selenium and anything other than Zope test runner? :P"13:23
deryckjml: how does it forbid?13:23
jmlderyck: Forbidden (403)13:23
jmlCSRF verification failed. Request aborted.13:23
jmlMore information is available with DEBUG=True.13:23
deryckah, crap13:23
deryckstupid Django.13:23
rvbaleonardr: Hi, I just saw you mentioned refactoring tests with getViewBrowser ... it happens that I'm having trouble with a test that uses this13:24
leonardrrvba: ok, i don't know anything about this but i'll do my best13:24
deryckjml: as to your question, yes I think that is the best solution.  Something of that sort. Either Selenium or Windmill without the Zope wrapping.13:24
deryckjml: Though I think Windmill has some general fragility, just because there are fewer people using it and working on it13:24
leonardrhenninge: line 753, "Translations are enable" -> "are enabled"13:25
jmlderyck: yeah. that's what I hear.13:25
rvbaleonardr: it looks to my -newbie- eyes like, when getViewBrowser is used, something might go wrong with the authentication machinery13:25
rvbaleonardr: but if you're not sure, don't worry, I'm in the process of figuring it out ...13:27
leonardrrvba: ok. looking at the code, it looks like getUserBrowser logs in as anonymous and never logs out. are you getting an 'interaction already active' type error?13:27
rvbano, the test uses  getUserBrowser with a user, then check a perm ... when I debug the whole thing, I see that the perm is checked against anon13:29
rvbaleonardr: if you says it might never log out after login in as anon, looks like this might be related13:30
leonardrrvba: paste your test to me?13:30
rvbaleonardr: just sent you an email with the description of the problem13:31
deryckjml: comments fixed.  Thanks for the heads up.13:32
jmlderyck: np.13:32
=== almaisan-away is now known as al-maisan
leonardrrvba: i don't know if this will help, but: there are two different levels of authentication in a unit test13:38
rvbaleonardr: yes?13:38
deryckhenninge-lunch: can you reply to the email sinzui sent? I suspect your domain expertise can answer this much more quickly than mine.13:39
leonardrthere's the level at which you're authenticated with the launchpad layer13:39
leonardrthat's what login(ANONYMOUS) takes care of13:39
leonardrthat's necessary when you need to access the database or call launchpad utility functions13:39
=== henninge-lunch is now known as henninge
henningederyck: I can do that.13:39
leonardrand then when you get a browser, there's the user whose password gets sent in the Authorization header13:39
deryckhenninge: many thanks!13:39
leonardrif your test checks a permission, that code runs in the launchpad layer13:40
leonardrand it will be checked against anonymous13:41
leonardr(since getViewBrowser logs in as anonymous and doesn't log out)13:41
leonardrif you use the browser to make a request, that code runs as the user whose browser it is13:41
leonardrdoes that make anything you've seen make more sense?13:41
rvbaleonardr: yes, thanks for the clarification ... not sure this is related to my problem because, like you saw in my revision, I fixed it by changing the owner of the related distroseries13:41
sinzuiWhy do we need getViewBrowser? what does it do that we cannot do using the standard helpers like create_view13:42
leonardrsinzui: i dunno. it gives you a browser object, so you can navigate from page to page13:43
jmloff to cafe for lunch, will work from there.13:45
sinzuileonardr: I think navigating from page to page is excellent for user stories. If I want to test a view or a page I think I should with with the actual objects.13:47
leonardrsinzui: that sounds fine to me13:49
leonardrrvba: as sinzui implies, you might have better luck using create_view instead of getUserBrowser. that would keep all the code in the same level--the launchpad level13:53
leonardrsomething to consider13:53
leonardrsinzui: i got a bunch more test failures when i ran our branch through ec2. i haven't had time to look at them yet, but the first one i saw was just am issing import, so here's hoping...13:53
rvbaleonardr: yes13:54
deryckadeuring: ping for standup14:01
adeuringwhoops, coming...14:01
sinzuihenninge: I wrongly set the status of your MP to needs fixing. I only had a question14:08
jcsackettdoes profiling still show the query if it's hitting the storm cache instead of the database?14:08
henningesinzui: I'll look at it in a minute14:08
leonardrbenji: i've got your suggestion working. i'm a little taken aback by the fact that queryAdapter(view, IWebServiceExceptionView) returns None if view is already an IWebServiceExceptionView but there is no no-op adapter registered for it14:15
leonardris there any way around that?14:15
benjileonardr: that surprises me; although, I'm also surprised that you need to do that.  Looking at the MP again.14:18
leonardrbenji: let me push my changes (with the no-op adapter) and maybe you can help me improve it14:18
gmbleonardr: Can you take a look at https://code.launchpad.net/~gmb/launchpad/mute-button-cleanup-bug-204980/+merge/53401 for me?14:34
benjileonardr: instead of view = getMultiAdapter((e, self.request), name="index.html") I expected view = getMultiAdapter((e, self.request), IWSEV); you want a view that provides a particular interface (i.e., it has a status attribute) and there's no need for it to have a particular name14:35
leonardrgmb, sure14:35
benjileonardr: wait, I think I'm looking in the wrong place, I'm looking at https://code.launchpad.net/~leonardr/lazr.restful/consistent-error-exposing/+merge/51946 which isn't right14:36
leonardrbenji: yeah, look at lp:~leonardr/lazr.restful/handle-view-that-provides-no-status14:37
leonardrsinzui: i'm pretty sure that missing import was the only thing keeping us from finally landing that branch. i've fixed it and am running through ec2 land again14:38
leonardrgmb: describe or give me a link to the bug mail mute button story, so i know what i'm looking at?14:44
gmbleonardr: The word "Story" is probably misleading, but to sum it up:14:44
gmbAs a Launchpad user who receives a lot of bug mail14:44
gmbI want to be able to click a "Mute bug mail" button for a given bug14:44
gmbSo that I no longer receive any email about that bug14:44
gmb(This is distinct from unsubscribing, since even if you unsubscribe from a bug it's possible to receive mail about it, for example if you own a project that has no bug supervisor)14:45
gmbMuting the bug makes Launchpad drop *any* email it's going to send to you about it.14:45
leonardri see. it's an anti-subscription14:46
gmbYes :)14:46
leonardrgmb: in bugtask_index_portlets, it looks like you took a code path for 'is not subscribed' and just changed it to 'is muted'. what happens if you're not subscribed?14:52
gmbleonardr: That was because I've added the new CSS class to explictly describe someone as muted. Previously it relied on the subscribed-foo CSS class since muted subscriptions are just another type of subscription.14:53
gmbIf you're not subscribed you can still click the mute link and it will work perfectly.14:53
leonardrok, so it was code to control the mute button14:53
gmbWhat it does behind the scenes is subscribe you to the bug with a BugNotificationLevel of NOTHING.14:53
gmb(Note that gary_poster and I are of the opinion that this way of doing mutes is a bit of a kludge, but I think it's a decent first step).14:54
* gary_poster nods14:54
leonardrgmb: on line 140 and line 143, what is the 'true' vs. 'false' passed in to set_subscription_link_parent_class?14:56
gmbfunction set_subscription_link_parent_class(user_link, subscribed, dupe_subscribed)14:57
gmbis the signature.14:57
leonardrok, i'm not sure what it means to have duplicate descriptions. you have a regular one, plus a 'mute' one?14:58
gmbleonardr: dupe_subscribed means "Subscribed to a duplicate of this bug"14:58
benjileonardr: I checked out the branch and got the appropriate response to queryAdapter(view, IWebServiceExceptionView) when view was an instance of WebServiceExceptionView; I'm working up a small change to your branch to suggest to you.14:58
gmbThere Can Be Only One (Person, Bug) subscription.14:58
leonardrah, it's a subscription _to_ a duplicate14:59
leonardrok, you're just setting up the appropriate presentation when subscription is un-muted14:59
leonardrok, looks good15:02
benjileonardr: how about this: http://pastebin.ubuntu.com/580611/15:12
leonardrbenji: that runs into the same problem i encountered when i tried something similar, which is that all other web service error view registrations need to provide IWebServiceExceptionView, not Interface15:19
benjileonardr: do the other web service error views have the status attribute?15:20
leonardryeah, they all subclass WebServiceExceptionView15:20
benjiand are they subsclasses of WSEV?15:20
leonardrbasically i'm afraid that something that used to work like other view registrations no longer works that way15:20
leonardrthat this will confuse people and possibly cause more failures on the launchpad side15:21
=== deryck is now known as deryck[lunch]
leonardrmy fears are fuelled by the fact that i can't get all the tests to pass with a system like this15:22
benjileonardr: yeah, that is an issue... so in your estimation it is ok to require that the error views be subclasses of WSEV but the existing registration of adapters to the views (i.e., (e, request), Interface, name='index.html) should still work; right?15:23
leonardrbenji: yeah, i think that's fine. or, we can require that the error views implement IWSEV, since all that matters is that they have a .status15:26
benjiok, so if we don't want to change the signature that the adapters have we're stuck with the same adaptation as on the trunk, so that part is a constant15:26
leonardrthat's the adaptation from WSEV to IWSEV?15:29
benjileonardr: I think the code as you have it is the best route.15:29
benjileonardr: no, the adaptation to (e, request), Interface, name='index.html to get the view; that part we can't change15:30
leonardrok, let me see how the code is now to remember...15:30
leonardrbenji: and there's no way to get rid of the no-op adapter?15:31
leonardr(without going down one of the paths we've rejected)15:31
benjileonardr: you probably can; at least for adaptation like IFoo(obj) where obj already provides IFoo there is no need for anadapter and obj is just returned stright away, I don't recall if the same is done for queryAdapter; worst-case you can put try: IWSEV(view) except: raise e (where e is the original exception)15:33
leonardrtrying that now15:33
* jml fixes the conflict15:39
jmlderyck[lunch]: I guess bug 607438 should be critical these days, since it's an OOPS.15:45
_mup_Bug #607438: NoCanonicalUrl: No url for message because message broke the chain. <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/607438 >15:46
=== Ursinha is now known as Ursinha-lunch
leonardrbenji: take a look at the latest revision15:52
* jml off home15:54
bigjoolsI am calling "ec2 test" on a db-devel branch but it's getting merged into devel, how can I fix that?15:54
bigjoolsthere's a conflict which is not in db-devel yet, or I'd not worry about it15:54
benjileonardr: looks good15:55
leonardrqueryAdapter doesn't work, unfortunately15:55
benjithat makes some sense though, since there isn't an adapter, but IWSEV(WSEV) first checks to see if the interface is already provided and if not invokes adaptation15:56
benjia little philosophysing: in an ideal world we would be adapting (e, request) to IWSEV (without a name) and use that result since that adaptation better captures the intent; that being said, this approach is eminently reasonable given the constraints of the situation15:57
=== matsubara is now known as matsubara-lunch
=== beuno is now known as beuno-lunch
leonardrbenji, can i get a formal review from you so i can land the branch?16:14
benjileonardr: sure; which MP?16:14
=== deryck[lunch] is now known as deryck
deryckjml: agreed.  I raised it.16:33
benjileonardr: MP approved; I put a couple of notes on there for things you might want to look at16:34
LPCIBotYippie, build fixed!16:36
LPCIBotProject db-devel build #453: FIXED in 4 hr 16 min: https://hudson.wedontsleep.org/job/db-devel/453/16:36
gary_posterhey sinzui (or deryck), is there a brief history of our IE JS issues I could hear?  AIUI, we generally just turn off JS for IE.  In particular, I'm curious why we are more restrictive than YUI itself; I'm curious if we considered supporting IE >= 7, and just ignoring 6 and below; and I'm curious if we know what our OEM people are using.16:44
sinzuigary_poster: We turned of IE because we were too lazy or inexperienced to make our site work with the dominate browsers of the ent16:45
deryckgary_poster: what sinzui said ;)16:45
deryckgary_poster: and because we don't know how to write js and make common mistakes outside of YUI and found it easier to avoid16:46
deryckoem definitely uses IE heavily16:46
gary_posterok, thank you deryck and sinzui16:46
deryckwell, oem clients or partners or whatever.  *the* oems use IE, not Canonical's division.16:46
sinzuigary_poster: Our argument against ie6 is that it represents .05% of traffic and MS does not support it. However, Oor Chinese partners often do use ie616:47
sinzuigary_poster: Canonical/Ubuntu CSS does not support ie6, and I removed out CSS hacks for ie6. I think we are are concerned about ie7-916:47
gary_postersinzui, I'm less surprised by IE 6 (which is notoriously unpleasant to work with) than IE generally (I've read that 7 and higher are much more acceptable)16:47
gary_postersinzui, I'm +1 on supporting 7-9 and ignoring 616:48
deryckI'm +1 on that as well.16:49
sinzuiIE 9 likes Lp, but I think several parts are disabled for 9 because our scripts are blocking all ie16:49
deryckWe need some knowledge sharing so people are comfortable running IE either via wine or VMs.16:49
gary_posterVMs are easy enough...but then you have to buy Windows16:50
sinzuiI do not have Windows. I rely on the good will of volunteers :(16:50
gary_posterI have a license/vm for XP at least16:51
* sinzui looks at analytics16:51
deryckI keep windows for taxes and gaming, so IE is easy enough for me16:52
derycki have my priorities clear!16:52
gary_poster:-) makes sense to me16:52
sinzuigary_poster: deryck 27% of visitors are on Windows, 10% xp 10% 716:53
gary_posterwhat about IE versions, sinzui?16:54
* gary_poster should get the information for our google analytics account16:54
deryckbut how bad is their experience, too?  There has to be some argue for getting better at IE, just because the experience can be so broken at times.16:54
gary_posterderyck, some of the biggest functionality we are building is JS only16:55
sinzuigary_poster: deryck: 6% is ie...4% being ie8, 1% ie7, the remaining is 6 and 916:55
gary_poster(I mean, our squad)16:55
gary_posterthat's so small16:55
deryckyeah, that's incredibly tiny16:55
gary_posterand I guess that tells us that 8 is the one to look at right now if we are going to look at all, and not look comprehensively16:56
deryckmaybe do better going forward, but not worry about past functionality so much?16:56
gary_poster(which is such a PITA :-/ )16:56
gary_posterI'm alright with that, but if we don't provide noscript alternatives then we may have to set a higher bar16:56
sinzuideryck: I do not think ie users can report bugs because the suggestion UI is 100% ajax16:56
gary_poster(which again points to "going forward")16:57
deryckthey can't comment on bugs, I know that for sure ;)16:57
gary_posterThen we're safe! :-)16:57
sinzuideryck: so in this case, we had a show of hands of who wanted support, but ie users did not raise their had :)16:58
=== beuno-lunch is now known as beuno
=== Ursinha-lunch is now known as Ursinha-afk
jmlderyck: ta17:00
sinzuigary_poster: <rants> We chose YUI because it had good cross browser support, but its support is not as good as jquery.17:01
gary_postersinzui :-( and the majority of the rest of the world uses jquery17:02
deryckand we could have picked the best of both -- used jquery for coding, but yui's test framework for testing, for example.17:03
deryckbut hindsight is always better17:03
* sinzui recalls some engineers had foresight17:04
deryckaltough I like YUI 3 very much.  But I'm probably in the minority on this.17:04
gary_posterI like it so far too.  But I'd prefer to be with the majority of the world where we can.17:04
deryckyeah, agreed.  But if we had built lazr-js with jquery, it would have still be painful.  Sometimes it's not the tool, but what we do with it. ;)17:05
gary_posterheh, I believe you :-)17:05
deryckso jqeury lovers in LP rejoice that we didn't kill your love of jquery! ;) :)17:06
sinzuigary_poster: deryc: the ie issue may not be as bad as the reported bugs. I could not test them during the bugjam to verify two YUI upgrades fixed the issue.17:06
* deryck always looks at the bright side17:06
gary_posterthat would be nice17:06
deryckI wondered that, too.  If we could turn it on in various places and see.17:07
sinzuiWe could answer that in a day. I suspect the issues can be fixed by one engineer in less than 8 man days.17:08
gary_posterwe'd need a critical bug for it to happen anytime soon, I suspect17:08
leonardrbenji: re "test the previous behavior is gone". that was my intention with test_exception_whose_view_has_no_status17:08
leonardrit could probably be renamed17:08
sinzuigary_poster: deryck, I suspect that many opera bugs may be fixed in the newer versions of Opera. We stopped getting bug reports about it when BjornT left the team17:10
gary_posterI'm afraid I don't care about Opera :-/17:10
deryckI think we can't have broken anything serious or BjornT would still file bugs. :-)17:11
gary_posterheh, maybe so17:11
sinzuigary_poster:  it is 3% of traffic and 90% is 11+17:12
sinzuioh wow, that might be the lat zune ever to visit lp17:13
gary_posterdo you think we should care about Opera's 3% sinzui?  opera is such a choice that I think people can be expected to choose other things.  I'm generally more inclined to care about browser choices that are defaults on popular OSes, and of course browsers that have large percentages irrespective of OS defaults.  Opera is neither.17:14
sinzuiThere are still more iOS browsers than android17:14
=== matsubara-lunch is now known as matsubara
sinzuigary_poster: I do not think Opera is important at 3%. Opera is always a choice. I think YUI and Opera upgrades allow us to close all opera bugs, but I cannot bring myself to do that without confirmation17:15
gary_postermakes sense17:15
sinzuigary_poster: We closed a lot of safari bug when Chromium reached 15%. At that point, we unconsciously decided to ensure Lp works with webkit17:18
deryckOpera > 9.5 X grade on YUI, which means they assume it works but don't test.  And they close all bugs opened against that browser.17:19
gary_posterChromium meant that we started using webkit regularly too, which may be at least one aspect of the "unconscious" part17:19
gary_posterheh, I like that last bit :-)17:19
gary_poster("close all bugs opened against")17:19
deryckheh, I thought you might17:20
sinzuigary_poster: have you ever looked at who reported and commented on all open and closed Safari bugs? I'll save you the tiime. It is Us. Both Lp and Canonical engineers use Safari.17:21
sinzui90% of all safari bugs were report by a Canonical employee, or is the primary user in the comments17:22
=== al-maisan is now known as almaisan-away
benjileonardr: (was at lunch) oh, I misunderstood that test, looks good17:32
=== Ursinha-afk is now known as Ursinha
=== Ursinha is now known as Ursinha-afk
lifelessallenap: ping (qa)18:22
=== Ursinha-afk is now known as Ursinha
lifelessjtv: rev 12599 I'm guessing is also untestable for now ?18:23
=== Ursinha is now known as Ursinha-afk
* jcsackett realizes answers is not exported at all.19:14
=== matsubara is now known as matsubara-afk
henningesinzui: I replied to your question on the MP. ;)19:19
henningesinzui: would be great if you could approve the ui now ;)19:21
sinzuihenninge: r=me19:22
henningesinzui: cool, thanks!19:22
=== Ursinha-afk is now known as Ursinha
=== matsubara-afk is now known as matsubara
thumperleonardr: I'm going to miss the standup today as a close friend had a stroke, and I'm going to visit him in hospital20:20
leonardrthumper: oh no! i'll run the standup20:21
thumperleonardr: just you and wallyworld_ :)20:21
leonardrok, wallyworld, mumble?20:21
thumperleonardr: he doesn't arrive for about 40 minutes :)20:21
thumperand even then it is 7am for him20:21
leonardrah, ok20:21
leonardrwallyworld_ -^ let me know when you get this20:22
thumperlifeless: I wish we had a simple way to load all of the objects needed to create canonical urls20:22
sinzuithumper: lifeless. I need to change the permissions in for person-merge-job in security.cfg. My branch is based on devel. Will those changes be applied by a no downtime release?20:31
thumpersinzui: I think new permissions are added20:31
thumperbut old ones are not dropped20:31
thumperI may be wrong20:31
sinzuiyeah. I think that too, but I keep hearing disappointing results. I could switch to db-devel and be certain that my changes work20:32
lifelessthumper: sinzui: you are correct20:37
lifelessit will work20:37
lifelessit doesn't work on qastaging yet, but does on prod20:37
sinzuilifeless: Can I ask a losa to do something when the time comes to qa? I can qa on staging at the very least20:38
lifelesssinzui: ask them to 'update the qastaging tree on sourcherry and run security.py with --no-revoke'20:48
sinzuinoted. Thanks!20:49
wallyworld_leonardr: hi, will be there in 5-10 minutes. just have to make the kid's lunch20:51
wallyworld_leonardr: here now20:58
leonardrwallyworld_: ok, 1 sec20:58
lifelessmatsubara: https://lpstats.canonical.com/graphs/OopsLpnetHourly/20110315/20110316/ is spiky21:01
lifelessmatsubara: do you know what might be up there?21:01
leonardrwallyworld_, i'm on mumble21:01
* matsubara looks21:01
wallyworld_leonardr: can't hear me?21:01
leonardri can hear you21:02
leonardrbut not vice versa, apparently21:02
StevenKlifeless: Sigh. That should happen automatically.21:10
lifelessStevenK: it should21:11
lifelessStevenK: which of the several things affecting production stability should I defer to get that happening :( ?21:11
StevenKlifeless: Ah, well, it is a bug with the update scripts or something more sinister?21:12
lifelessStevenK: the losas have a policy that automated scripts can only talk down trust levels, not up21:13
lifelessStevenK: and db servers are near the top of the pile21:13
lifelessStevenK: so the update script needs to get more complex, part of it moved to sourcherry, become pull rather than push, that sort of thing21:13
leonardrsinzui, looks like our branch has landed21:14
StevenKlifeless: That's our issue to fix, or a LOSA issue?21:15
lifelessStevenK: losa21:15
StevenKRight, and we both know the issue there.21:15
leonardrwallyworld_: `python setup.py sdist` seems to work for me, generating a tarball for lazr-js21:18
leonardrwhat happens when you try that?21:18
* wallyworld_ looks21:18
lifelessStevenK: does bug 734719 count as fix released?21:20
_mup_Bug #734719: DSD.base_source_pub assumes the base version is published in the child <derivation> <qa-untestable> <Launchpad itself:Fix Committed by stevenk> < https://launchpad.net/bugs/734719 >21:20
wallyworld_leonardr: ok, that worked. not sure what i did yesterday. i assume i need to edit setup.py to change __version__ and commit that before I package?21:21
lifelessone rev in the deploy queue21:21
StevenKI was just wondering when we deployed21:22
lifelessStevenK: just now21:22
StevenKlifeless: Since prod is running r12599, yes, kill it21:22
leonardrwallyworld: yes, the __version__ is kept in setup.py for lazr-js21:22
wallyworld_leonardr: cool. thanks21:23
matsubaralifeless, https://devpad.canonical.com/~lpqateam/oops-temp.html partial report for today and it doesn't have any oops that caught my eye as causing the spike21:25
lifelessmatsubara: oh, I was unclear21:25
matsubaralifeless, btw, you can see there that your fix is working :-)21:25
lifelessmatsubara: the 50 per hour spike was the bug search issue I referenced in my email21:25
lifelessmatsubara: the spike I was referring to when I pinged you is how every second how is 0 for everything21:25
lifelessso its like 0, something, 0 ,something21:25
lifelessCool, that report is much more useful21:26
lifelessthe one remaining thing I'd love21:26
lifelessand I wasn't sure how to do it easily21:26
lifelesswould be to make sure that we get one-of-each pageid from the summary, in the detail section21:26
lifelessbut perhaps thats covered by my change anyway21:27
lifeless7.6 seconds of python time21:38
lifeless127 LFA lookups21:39
bdmurrayHello, I've noticed a typo in test name and wanted to check on the best way to fix it.22:01
bdmurrayA whole branch seems like a bit much22:01
=== matsubara is now known as matsubara-afk
lifelessbdmurray: we can only land branches22:02
lifelessbdmurray: if you're a reviewer you can self review and JFDI22:02
bdmurrayI guess my hope was somebody would JFDI in the branch they are currently working on22:04
* thumper is back22:04
StevenKbdmurray: Branches are cheap, what's the test name?22:08
bdmurrayStevenK: its in lib/lp/bugs/model/tests/test_bugtask_status.py - -    def test_privileged_user_can_unset_wont_fix_released(self):22:10
bdmurrayStevenK: should be unset_fix_released_status22:10
wgrantAnyone want to review https://code.launchpad.net/~wgrant/launchpad/hide-inaccessible-bugs/+merge/53529?22:23
StevenKbdmurray: Submitted to PQM, thank!22:24
=== leonardr changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | firefighting: - | On call reviewer: gmb | https://code.launchpad.net/launchpad-project/+activereviews/
StevenKwgrant: Done.22:28
wgrantStevenK: Thanks.22:30
sinzuiwgrant: mumble22:32
lifelessflacoste: ppr failed to render I think ?22:45
lifelessflacoste: where should I look to see whats up ?22:45
* thumper sighs23:06

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