/srv/irclogs.ubuntu.com/2011/09/22/#launchpad-dev.txt

huwshimiStevenK: Sorry, I'm just trying to look at a couple of things. What appears on the recipient_subscriptions_url and ppa_url pages? I can see from the test what those urls translate to, I would just like to see an example of those pages.00:11
huwshimiStevenK: I'm mostly trying to see the difference between those pages00:13
lifelesswgrant: so...00:13
wgrantlifeless: It's now Invalid. There are other bugs for the build notification issues.00:14
wgrantlifeless: (which should have been a critical part of DDs, but nobody in the squad thought about it)00:14
huwshimiStevenK: Ah actually I figured it out.00:16
lifelesswgrant: can you confirm my comment on bug 4735300:19
_mup_Bug #47353: give-back-loop detection would be desireable <lp-soyuz> <soyuz-build> <Launchpad itself:Triaged> < https://launchpad.net/bugs/47353 >00:19
huwshimiStevenK: I know you haven't touched this, but shouldn't the  'recipient_subscriptions_url' link to be to: https://launchpad.net/~huwshimi/+archivesubscriptions/(id)/+index instead of the generic list of *all* the archives (I assume we can be smart enough to do that)?00:20
lifelesssinzui: I believe bug 50894 should be fix released00:25
_mup_Bug #50894: Can't change the distribution for a distro package bug report <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/50894 >00:25
lifelesssinzui: and have you seen bug 52656 in the context of disclosure?00:27
_mup_Bug #52656: Reports that bug contacts have been subscribed when they haven't <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/52656 >00:27
lifelesssinzui: also! bug 52915 - wallyworld_'s work should fix-release that, no ?00:27
_mup_Bug #52915: Reassigning a private bug to a different product doesn't notify either the new product maintainer or security contact <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/52915 >00:27
lifelesssinzui: perhaps not, but close to it. Or something.00:28
wallyworld_lifeless: i don't think it will but i can add it to my todo list00:28
lifelesswallyworld_: I'd check with sinzui but it seems awfully close to 'easy' now.00:28
wallyworld_+1 yes00:28
lifelesswgrant:  is bug 54773 still relevant?00:35
_mup_Bug #54773: Dry run on process-accepted isn't always dry <lp-soyuz> <Launchpad itself:Triaged> < https://launchpad.net/bugs/54773 >00:35
wgrants/process-accepted/Soyuz/ s/always/often/00:35
lifelessand hah - isn't bug 55030 a dupe ?00:36
_mup_Bug #55030: Binary domination removes arch-all binaries too soon <lp-soyuz> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/55030 >00:36
lifeless(sorry to be dragging you into this, but these bugs are sparse on symptoms)00:36
wgrantlifeless: 55030 would be the original, I assume...00:36
wgrantBut I think there is a modern dupe which has been escalated.00:37
wgrantRight.00:37
lifelessand bug 5552000:38
_mup_Bug #55520: Extend the package-driven approach to Domination & JudgeSupersed <lp-soyuz> <soyuz-publish> <Launchpad itself:Triaged> < https://launchpad.net/bugs/55520 >00:38
lifelessa work item with no context. \o/00:38
wgrantI *think* that refers to the pushing of lots of publishing code into SPPH.publish.00:39
wgrantBut that bug has long been a mystery.00:39
lifelessbug 55521 is even more useful00:40
_mup_Bug #55521: Benchmark DeathRow procedure <lp-soyuz> <soyuz-publish> <Launchpad itself:Invalid> < https://launchpad.net/bugs/55521 >00:40
wgrantYeah, because we know how fast it is. "not"00:40
wgrantlifeless: Hmm, I'm pretty sure there's an RT for that bug you said there was an RT for.00:41
wgranthttps://rt.admin.canonical.com/Ticket/Display.html?id=4378000:41
lifelesswgrant: echan :P00:41
lifelessoh good00:42
lifelessI just failed at search00:42
lifelesswgrant: is 60190 fixed ?01:03
wgrantBug #6019001:03
_mup_Bug #60190: Misleading email when uploads are UNAPPROVED <lp-soyuz> <Launchpad itself:Triaged> < https://launchpad.net/bugs/60190 >01:03
wgrantI think it is fixed.01:04
wgrantI'm pretty sure modern emails say "Waiting for approval" in the subject.01:04
lifelesssinzui: would like your thoughts on bug 56650, i fyou are still around.01:16
_mup_Bug #56650: Restrictions on milestone editing should be dropped <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/56650 >01:16
* StevenK waits for buildout01:16
* StevenK looks for a private bug on qas01:16
StevenKwgrant: Do you happen to have one handy?01:17
lifelesswgrant: so, bug 54773 - is --dry-run wanted for soyuz?01:18
_mup_Bug #54773: Dry run on process-accepted isn't always dry <lp-soyuz> <Launchpad itself:Triaged> < https://launchpad.net/bugs/54773 >01:18
lifelesswgrant: or was it all yagni ?01:18
lifelesswgrant: and did I ask you about bug 47353 ?01:20
_mup_Bug #47353: give-back-loop detection would be desireable <lp-soyuz> <soyuz-build> <Launchpad itself:Triaged> < https://launchpad.net/bugs/47353 >01:20
wgrantStevenK: Bug #1234 should be private still.01:21
_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:21
wgrantlifeless: Most of our scripts have a dry-run option, but a lot of them don't work.01:22
wgrantlifeless: I don't know what we want to do with them.01:22
wgrantI commented on 47353 an hour ago.01:22
lifelessah thanks01:22
StevenKOh, ouch01:27
StevenKIt *isn't* a timeout01:27
StevenKProgrammingError: column branch.transitively_private does not exist<br /> LINE 1: ...agename, Branch.stacked_on, Branch.target_suffix, Branch.tra...<br /> ^<br /> <br />01:27
StevenKWALLYWORLD!!01:27
StevenKwallyworld_: ^01:29
wallyworld_StevenK: context?01:30
lifelessqastaging hasn't had the column added01:31
lifelessnot wallyworlds fault01:31
wallyworld_lifeless: i was told that db patch had been rolled out?01:31
lifelessprocess failure with fastdowntime; it should have been applied to qastaging too01:31
wgrantHah.01:31
wallyworld_or at least i thought it was01:31
wgrantI just independently asked for that in #-ops.01:31
wgrantSeeing just such an OOPS myself.01:31
mwhudsonlifeless: so i can rollback or i can fix the new problem01:33
lifelessmwhudson: rollback01:33
mwhudsonlifeless: is there a command line for that?01:33
wgrantIt's not landed yet, is it?01:33
lifelessbzr merge -r x..before:x; bzr commit; bzr push; bzr lp-land --rollback x01:33
mwhudsonit might still be in ec2 actually01:34
wgrantI see the rollback in 1401101:34
wgrantAnd nothing since.01:34
lifelessmwhudson: kill the instance01:34
wgrantKill the instance.01:34
mwhudsonok done01:34
mwhudsonhooray for a slow test suite01:34
wgrantOh, bah, I was looking at the wrong rollback. We can't deploy for a while.01:34
lifelessblame the software why don't you01:34
lifelesssee01:34
wgrantBecause the rollback was landed 5 hours after I asked :/01:34
lifeless'hooray that ec2 is so slow'01:35
lifelessis what I would say01:35
wgrantwallyworld_: We need to roll back your garbo job, too.01:35
wgrantwallyworld_: We can't deploy that until the triggers are in place.01:35
wallyworld_wgrant: why?01:35
wallyworld_wgrant: the garbo job doesn't need the triggers01:36
wgrantwallyworld_: Because the job only touches branches where transitively_private is NULL, right?01:36
wallyworld_yes01:36
wgrantAnd the trigger isn't there to keep transitively_private consistent once it is set.01:36
wallyworld_yes01:36
wgrantSo the job is going to be setting stuff which then gets out of date.01:36
wgrantAnd is never corrected.01:36
wallyworld_yes, i think that's the case sadly01:37
wgrantCan you revert it, please?01:37
lifelessthere is an alternative01:37
wallyworld_or we could get the triggers deployed01:37
pooliehi all01:37
wallyworld_which is what i was counting on01:38
lifelessset the transitive field to null when updating private01:38
wgrantwallyworld_: We can't do that until friday night.01:38
lifelesswallyworld_: its /never/ safe to land code with a db dependency in devel before that dependency is in production.01:38
lifelesswallyworld_: it needs to be a hard rule, because the timelines for deploys are so radically different01:38
wallyworld_lifeless: it wasn't intentional. i had a few branches on the go and got mixed up about the order01:39
lifelesswallyworld_: no worries01:39
StevenKnigelb has been hitting that, he wants to drop a column, but we haven't deployed the code that stops using it everywhere.01:39
lifelesswallyworld_: I'm trying to be really clear about how this stuff hangs together, at the risk of telling folk to suck eggs.01:40
lifelessStevenK: reverse case, but yes.01:40
wgrantDamn, buildbot is still only half-way through.01:40
lifelessStevenK: this is why finishing RFWTAD is so important01:40
wallyworld_lifeless: i know the rules, it was a scheduling mistake01:40
lifelesswallyworld_: cool :)01:40
lifelesswallyworld_: like I said, just erroring on clarity atm cause its so new for everyone01:40
wgrantwallyworld_: So, you're reverting that in the next hour or so?01:40
wallyworld_yes01:40
wallyworld_wgrant: should i mark as qa bad first?01:41
wgrantqa-bad bad-commit-XXX01:41
wgrantLand with --rollback=XXX01:41
wgrantAnd lp-land, don't ec2 land.01:41
wallyworld_where xxx is the rev nr?01:41
wgrantYep.01:41
wallyworld_what happened with qas and the column?01:42
StevenKBut that is seperate from what is blocking my QA, right?01:42
wallyworld_i thought the patch to add the column had been deployed everywhere?01:42
StevenKWaiting on a LOSA/completion.01:42
wgrantStevenK: It's the same rev, but qastaging needed the patch anyway.01:42
wgrantwallyworld_: qastaging doesn't automatically do DB upgrades.01:42
StevenKTBH, I think that needs fixing01:42
wgrantwallyworld_: Mostly to catch stuff landing on devel with DB patches that aren't on prod.01:42
wallyworld_sure, but it thought a downtime would do it01:43
wgrantwallyworld_: But it also made me notice your rev.01:43
wgrantwallyworld_: downtime does the minimal possible.01:43
StevenKI'm sick of qas having a DB that is months behind01:43
wgrantwallyworld_: Which is applying a patch to production.01:43
wallyworld_it's no good on prod if it's not on qas :-(01:43
wgrantwallyworld_: We should probably apply to qastaging immediately afterwards, but the timing is terrible and the last couple of downtimes have been.. chaotic.01:43
wallyworld_sure. we need to fix the process cause folks will land devel code that will break qas01:44
wallyworld_if qas != prod01:44
wgrantWell.01:44
wgrantOTOH if we leave it manual, it means that lifeless and I are more likely to notice revs like this one.01:44
wgrantStevenK: DB restores and upgrades are largely unrelated, FWIW.01:47
wgrantAnyway, I am wandering off for a while.01:47
wgrantwallyworld_: Please land that revert ASAP.01:47
wallyworld_sure, have to save some work first01:47
wgrantConfused...01:47
wgrantOh, IDE people.01:48
wgrantlol01:48
wgrant:)01:48
mwhudsonwgrant, lifeless: can you be paranoid over https://code.launchpad.net/~mwhudson/launchpad/feature-flag-xmlrpc-2/+merge/76493 once more?01:48
wallyworld_no, not ide.01:48
wallyworld_i use a single sandbox that i bzr switch between01:48
wallyworld_no ide required to do a rollback01:48
wallyworld_at least i can debug without editing source code :-P01:49
wgrantmwhudson: That's not landing again until it's been aggressively tried locally, but it looks more sensible now. And is even tested. Thanks.01:49
mwhudsonwgrant: it was tested before01:50
wgrantAh, that was one of the tests you inverted the order of?01:50
wgrantI only noticed the TeamScope ones.01:50
mwhudsonjust with the controller constructed and the request set up in the wrong order01:50
wgrantBut that's the only scope I knew was broken, so maybe I wasn't looking for the others.01:50
wgrantAh01:50
mwhudsonwgrant: do you know of any tricks for testing feature rules locally?02:04
pooliemwhudson, locally in what sense?02:04
mwhudsonother than grep for a feature flag check in a template and try to make it happen02:04
poolieon lp.dev interactively?02:04
mwhudsonpoolie: yes, lp.dev02:04
lifelessmwhudson: visit /+feature-rules02:05
poolieand look at the comment at the bottom of all html pages02:05
mwhudsonpoolie: ah cool02:05
lifelessmwhudson: better02:07
lifelessmwhudson: thanks!02:08
mwhudsonwgrant: well, i've done positive and negative tests for pageid: and team: scopes02:11
mwhudsonobviously default still works02:11
mwhudsonand i'm not sure server scope really makes sense in lp.dev?02:11
mwhudsoni guess i can change the config to make it look like edge02:11
lifelessserver.beta IIRC02:11
lifelessor something02:11
poolie.dev i think02:11
mwhudsonlifeless: ah you seem to be right02:11
mwhudsonyeah .beta02:12
pooliewe could add a /+feature-test form that lets you evaluate random stuff02:12
StevenKwgrant: bug 1234 on qas is public02:13
_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 >02:13
poolielifeless, do you want to talk about our qbr some time02:13
lifelesssure02:25
nigelblifeless: Hey! Sorry, about the late reply. I was trying to understand errorlog.py the other day and I was stuck a bit.02:29
lifelessno worries02:35
lifelessI have to pop out for a few, if yo uwant to chat in ~20 I'd be delighted to do so02:36
nigelbCool!02:36
lifelesswgrant: any comment on bug 117557 ?02:36
_mup_Bug #117557: Nascent Upload code doesn't check properly for bad distroseries <lp-soyuz> <soyuz-upload> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/117557 >02:36
nigelbI'll grab coffee by then and boot into the right computer.02:36
wgrantlifeless: "aaaaaaaa"02:37
wgrantlifeless: NascentUpload is pretty bloody awful.02:37
wgrantlifeless: Probably still valid.02:37
StevenKwgrant: qa-ok02:38
wgrantStevenK: Thanks, but it's sorta irrelevant now :/02:38
StevenKIndeed :-(02:39
lifelessnigelb: okies03:01
nigelblifeless: gimme 2 mins. My laptop with launchpad is booting :)03:01
lifeless  still? wow...03:02
nigelbWell, I made coffee in between, etc03:02
lifeless:P03:02
lifelessYHBT HAND HTH03:02
jtvwgrant: permanent gina domination looks good on dogfood… deleted a frightening number of sid packages, but the remaining number matches the number I see in Sources.gz.03:06
wgrantjtv: Yep, saw that on the bug. Excellent news.03:07
jtvUnfortunately there's a qa-bad in the way.03:07
wgrantjtv: Less excellent news, however, is that it still seems to be running very slowly on production... and script-monitor isn't alerting about it.03:07
wgrant3 qa-bads, actually.03:07
wgrantJust two of them are already deployed.03:07
jtvwgrant: 3!?  I only see 1 qa-needstesting & 1 qa-bad.03:08
wgrantjtv: Like I say two of them are already deployed. There are three rollbacks that need to come through buildbot and qastaging before we can deploy :/03:08
jtvWe'll have to see whether the slow runs are really a concern after (1) the transitional code is gone and (2) the initial deletions have been done.03:08
wgrantYeah.03:09
wgrantI'm more worried that we're not getting alerts about it.03:09
lifelessits doing shorter transactionw now right ?03:09
jtvMuchly.03:09
lifelesscool03:09
jtvwgrant: I had to leave before we could discuss my p-d-r suggestion yesterday.  Is it correct that the main worry is hidden long-standing dependencies on ancient librarian files?03:10
wgrantjtv: No, that was the first p-d-r issue. This one is probably pool files.03:13
jtvThe reaper deletes those as well?03:14
lifelesshuwshimi: do you think bug 126684 is still relevant ?03:15
_mup_Bug #126684: Style sheet is overly complex <css> <lp-web> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/126684 >03:15
nigelblifeless: okay, coffee by my side, and work computer turned off.03:18
nigelbIn other news, a colleague deleted a library from production server because "it was not being used"03:19
nigelbI had to put out a fire today morning for that one :)03:19
lifelesswin03:20
nigelbtotally!03:21
nigelbOkay, couple of things - 1) What all information do I log?03:21
lifelesseverything you can get except the session cookie03:21
lifelesserrorlog.py is mostly irrelevant to you btw03:22
lifelesss/mostly/entirely/03:22
nigelbOh.03:22
nigelbGah.03:23
nigelbI'll get error message, URL, line number as get parameters into js-oopsd03:23
nigelbI suppose I can also get a timestamp based on when I get the request03:23
nigelblifeless: 1) More embarassingly, I don't see where in errorlog.py the oops is actually written to file.03:31
nigelbI'm guessing that's the bit I can take away from launchpad's oops handling03:31
lifelessnigelb: sorry03:40
lifelessEBABY03:40
lifelessnigelb: all the oops stuff is in python-oops, python-oops-wsgi, python-oops-datedir-repo etc03:40
nigelbah03:41
nigelbI could just be using those libs..03:41
lifelesss/could/will be/03:42
nigelbRight. :)03:42
lifelessfor instance, http://bazaar.launchpad.net/~lifeless/+junk/gpgverify/view/head:/gpgverify/main.py#L8703:43
lifelessparses and configures a datedir repo03:43
lifelessthen runs the app (a web.py thing, I suggest using wsgiref - it will be cleaner)03:44
lifelesssee the various project README's and pydocs for more info03:44
lifelesswhat you need will be:03:44
lifelessone repo03:44
lifelesstwo configs - one for received js oopses, one for oopses from your wsgi app itself03:44
lifelessoops_wsgi wrapped around your app for the latter03:45
lifelessand explicit use of the former for the ks oopses03:45
nigelb*js03:46
lifelessthat thing03:46
nigelbokay, so I need to read up on python-oops-wsgi and python-oops-datedir-repo03:47
lifelessand python-oops :P03:47
lifelessremind me tomorrow and I'll put a full project skeleton, and a sketch, together fo ryou03:48
nigelbaren't these projects by Canonical/Launchpad?03:48
lifelessso you can focus on the interesting stuff03:48
nigelbokay!03:48
lifelessnigelb: they are, recently extracted from the LP code base03:48
nigelbYeah, I thought so )03:48
nigelb:)03:48
nigelbwallyworld_: Hey, around?03:49
wallyworld_nigelb: yep03:49
nigelbwallyworld_: The other day we were talking about overriding default styles for certain forms for the +editemails form that was fixing03:49
wallyworld_we were03:50
nigelbDo you have an example to point me at?03:50
wallyworld_just a sec03:50
nigelbI want to get those small bugs of my list :)03:50
wallyworld_nigelb: lp/code/templates/branch-macros.pt03:51
wallyworld_but only if it is truly a one-off03:51
wallyworld_it really should be in styles-3-0.css03:52
nigelbHrm, I could put it in styles--3.0.css03:52
wallyworld_nigelb: and i'd check with huwshimi since he is looking at this sort of stuff and trying to fix what we've done badly in the past03:53
nigelbAdd an ID, grab it in css. override.03:53
nigelbCool, okay.03:53
wallyworld_nigelb: so, in other words, we've done certain things in the past with respect to css but it may not be the right way now03:54
nigelbheh, I'll talk to him.03:54
wallyworld_cool. thanks03:54
wallyworld_best to try and avoid creating more tec hdebt :-)03:54
nigelbespecially when I'm trying to fix tech debt :P03:55
wallyworld_lol03:55
wallyworld_nigelb: it may be that what was done in branch-macros.pt is ok, but better to ask03:55
wallyworld_just to be sure03:55
nigelbPersonally, I dislike CSS going anywhere other than style.css most of the time.03:56
nigelb<-- fan of semantic web03:56
wallyworld_yep03:59
jtvwgrant: the reaper deletes pool files as well then?04:05
wgrantjtv: That is the entire purpose of the reaper.04:05
jtvwgrant: and so the great fear is that we might reap files there that we shouldn't?04:06
wgrantYes.04:07
jtvI gag at the thought, but perhaps we could have a look at atimes to see if we might get lucky with the number of files that we need to worry about?04:08
jtvIf we have atimes, of course.04:08
wgrantNo.04:08
jtvNo we don't have atimes, or no we can't look at them?04:08
wgrantYou are aware that there are some hundreds of Ubuntu mirrors, right? :)04:09
jtvAh those.04:09
jtvAnd we can't sample atimes from those?04:10
jtvOr do the files get read in the mirroring process?04:10
jtvWon't help with internal access, but could eliminate one source of problems?04:13
jtvI don't suppose we could stop files that we think can be reaped from being mirrored?04:24
micahgwgrant: re bug 137448, I seem to have the option to change everything04:24
_mup_Bug #137448: New UI is confusing and counter inuitive for changing affected package <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/137448 >04:24
wgrantmicahg: You can't change the package or distribution inline -- you have to know to open the expander.04:25
wgrantmicahg: It used to be that clicking on the package name opened the expander.04:25
wgrantSame with status/importance.04:26
wgrantBefore AJAX.04:26
micahgah, right04:26
wgrantBut now you can click on status/importance to change them inline, so nobody knows about the expander.04:26
huwshimiwallyworld_: Hey04:44
wallyworld_huwshimi: yello. was going to ping you later :-)04:44
huwshimiwallyworld_: Would you like to wait?04:44
huwshimiwallyworld_: Or is now ok?04:44
wallyworld_huwshimi: is it ok if i ping you in an hour or so? i'm just finishing a branch04:45
huwshimiwallyworld_: Of course! I'm in no hurry04:45
wallyworld_huwshimi: thanks. how's the bub?04:45
jtvwgrant: how soon do we need the question about the safety of pool-reaping resolved?04:46
wgrantundef04:46
huwshimiwallyworld_: Doing great. Started smiling on the weekend!04:46
nigelbHey, what are the branch portlets which show statistics? I can't find any.04:46
wallyworld_huwshimi: we all laugh at you :-P04:46
huwshimiwallyworld_: It's true04:47
StevenKwallyworld_: Wah! There are multiple pretty-overlays on a bug page!04:47
nigelbwhat the....04:47
nigelbI can now hide comments?04:47
wallyworld_StevenK: yes! hence the advice in the mp to do stuff relative to a specific content box or by id :-P04:48
wgrantnigelb: No, that's a display bug to do with memcached.04:48
* StevenK hides nigelb's last comment04:48
wgrantWIll be fixed in a few hours.04:48
nigelbwgrant: AH04:48
nigelbStevenK: lol04:48
nigelbCan someone help me with bug 65694104:48
_mup_Bug #656941: Portlets on branch list pages disclose information on private branches <lp-code> <privacy> <Launchpad itself:Fix Released by nigelbabu> < https://launchpad.net/bugs/656941 >04:48
nigelbI can't reproduce the bug.04:49
StevenKwallyworld_: It's fine for +subscriptions, but there are like four for a bug page04:49
nigelbWait. Fix Released.04:49
wallyworld_it's fine until someone adds another one :-)04:49
StevenKid="yui_3_3_0_1_13166655391282262"04:50
StevenKHandy.04:50
StevenKwallyworld_: ^ ?04:57
wallyworld_StevenK: that's a defualt generated one. you need to tie the overlay to a specific content box or look for it relative to another dom element04:58
StevenKCan I pass an id to the constructer?04:58
wallyworld_StevenK: for our widgets, we tend to create content box divs with an id named after the property04:58
wallyworld_StevenK: see picker_patcher04:58
wallyworld_the contentBox is passed in from memory04:59
wallyworld_we construct the content box with the id we pass in04:59
wallyworld_i could be a bit off on the details04:59
StevenKhttp://pastebin.ubuntu.com/694948/04:59
StevenKThose are the first elements of <body>05:00
wallyworld_what are those overlays used for?05:01
wallyworld_whicu ui elements?05:01
StevenKA bunch of them are for bug task editing05:02
StevenKThe first one is the one I want, but how the frack do you *tell* that :-)05:02
wallyworld_they may be tied to an Activator05:02
wallyworld_are the overlays shown when the user clocks on a link, or a little sprite?05:02
StevenKYes05:03
wallyworld_what's the js module?05:03
StevenKbug_subscription_portlet05:04
wallyworld_StevenK: it looks like a single overlay is created when the user clicks on a link, and then destoyed after the ajax call. so those other ones must be from elsewhere05:06
wallyworld_what's the html inside one of them?05:07
StevenKObviously05:07
StevenKThe first three all start with a div with class content_box_container05:07
wallyworld_i take it you just want to grab the overlay created by the bug sub portlet and ignore these other ones?05:10
StevenKRight05:10
wallyworld_and the overlay comes up centred on the page i think?05:12
wallyworld_which means it is not bound to a node,which means we can't get at it that way\05:12
wallyworld_StevenK: one way is to add a css class to the overlay node after it is created eg "bug-subscription-overlay" and do a Y.one('.bug-subscription-overlay')05:13
wallyworld_that may be the easiest at the moment05:14
wallyworld_StevenK: or you could even set the id of the node but i'm not sure if that's kosher05:15
wallyworld_.me needs coffee05:26
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
pooliehi wallyworld_06:02
pooliecould you finish off https://code.launchpad.net/~xaav/loggerhead/export-tarball/+merge/66408 some time?06:02
wallyworld_poolie: hi. stupid oneiric killed my net connection. :-(06:02
pooliei had a bit of trouble with that a while ago06:02
wallyworld_poolie: the ball is in lifeless's court06:02
wallyworld_he needs to +1 it06:03
wallyworld_but then he went and had a kid :-)06:03
wallyworld_i'll remind him again06:03
pooliewhy does he need to +1 it?06:03
wallyworld_poolie: cause i don't feel i have enough knowledge in that area to be sure it's all ok to land06:04
wallyworld_i'm happy to land it once it's said to be ok06:04
pooliewell, i think your last comment is reasonable:06:04
poolie> Given the number of eyeballs that have already seen this mp, it looks ok to me apart from some small lint issues. I can fix those and then land this mp.06:05
poolieso..?06:06
pooliei think we should at least let xaav know what's happening06:06
poolieand ideally actually finish it06:06
pooliewould it help if i rereview it or get one of my guys to?06:07
wallyworld_poolie: i just want to be 100% sure given all the back and forth that has happened on the mp06:07
wallyworld_poolie: anyone who feels they have enough knowledge to say it's good is fine by me06:07
wallyworld_i agree that it should be finished, it's taken way too long :-(06:07
pooliewell06:09
* wallyworld_ sighs. unity is very naughty today. just crashed again :-(06:09
poolieso let's make a plan06:10
wallyworld_ok06:10
pooliei don't want to block on robert in particular, because obviously he has very little spare time06:10
poolieand he has read it, and he hasn't specifically asked to get a rereview afaik06:10
wallyworld_i don't think so either. i'm scared about anything to do with exporting/publishing, and it's had a lot of iterations, is all06:12
wallyworld_greater potential for breakage therefore06:12
pooliehow about if i ask john to read it; he's touched this06:12
wallyworld_sure. if he can +1 it, i'll land it tomorrow :-)06:12
poolieand then perhaps you could do the lint fixes and run it up in lp.dev and see if it obviously breaks?06:12
wallyworld_ok06:13
poolieand if that works, could you shepard landing and deploying it?06:14
wallyworld_of course06:15
wallyworld_huwshimi: can we mumble tomorrow morning? i've been hamstrung by software issues  for a bit this arvo :-(06:16
huwshimiwallyworld_: Of course.06:17
wallyworld_thanks. i'll ping you after our standup, around 9:30ish06:17
wallyworld_huwshimi: so you've seen the managing disclosure mockups?06:18
huwshimiwallyworld_: No I haven't actually06:18
wallyworld_huwshimi: ok. i'll email them. they're some screenshots done in balsamic06:19
huwshimiwallyworld_: OK thanks06:19
wallyworld_and we need to provide some interactive proof of concepts06:19
lifelesshuwshimi: do you think bug 126684 is still relevant ?06:24
_mup_Bug #126684: Style sheet is overly complex <css> <lp-web> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/126684 >06:24
huwshimilifeless: I'll take a look, might need a few minutes to investigate.06:27
lifelessno worries06:28
lifelessits an old css bug06:28
lifelessI figure its very relevant to some of your recently noted things06:28
huwshimilifeless: The css classes it mentions at the start don't exist any more, there are now only three XXXs (which seem to have decent comments), I'm not sure what the conflicting columns is about, !important is still used 9 times (but I don't know if they are required), I'm not sure about the IE6 rules and most of the styles at the end of the stylesheet are there because of refactoring (with comments). sinzui has done some06:34
huwshimipretty large refactoring since this bug was reported.06:34
huwshimilifeless: My hunch is that the bug report is no longer useful as it is. If someone has the ability to figure out if the remaining issue are still valid they would probably be better as individual bug reports06:36
=== stub1 is now known as stub
=== rvba changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: rvba* (allenap) | Critical bugs: 256 - 0:[#########]:256
adeuringgood morning08:01
jtvwgrant: an irony just struck me.  ow!08:30
jtvIn future, if a superseded source package in Release still has binary publications active, don't we just want to keep the source package active for the release's lifetime?  New domination would let us do that.08:32
stubbigjools, wgrant: Is process-death-row.py fragile or interruptable from a fastdowntime deploy point of view?08:51
wgrantstub: Interruptible.08:51
stubwgrant: Is buildd-retry-depwait fragile?08:55
wgrantstub: No.08:55
wgrantbuildd-manager and publish-ftpmaster and publish-distro are about it.08:56
wgrantMm, process-upload too, but we disable that before and it doesn't run for long, so it's never come up.08:56
=== al-maisan is now known as almaisan-away
stubwgrant: My next question was process-accepted :-)08:58
=== almaisan-away is now known as al-maisan
wgrantMmm. Not really. It's not ideal if it's interrupted, but it's safe unless that happens while it's half-way through publishing a custom upload that is then rejected by an archive admin before the next run.09:00
stubwgrant: That unless makes it sound fragile (shut it down before a fastdowntime db update)09:01
wgrantstub: Yes, but it's so incredibly unlikely. But it's normally quick and we haven't run into it before, so you can probably add it to the fragile list and nobody will ever notice.09:02
wgrantSo if you're doing a mass dbuser change, might as well do that one too.09:02
wgrant(I'd almost prefer we accept the minute fallout from an interrupted run, rather than have it disrupt a fastdowntime, but it's unlikely to do either...)09:03
stubI'm doing them. Just flagging the necessary ones in the fragile list at the same time. I added process_accepted with a comment explaining it is fast and likely to not need shutting down.09:04
wgrantAh, great. Thanks.09:04
stubwgrant: We could improve this with cronscripts.ini or losas pushing out crontab updates before the deploy, but that is out of the scope I'm looking at. But the idea solution (per Bug #845407 metabug) is of course to not need to do that at all.09:06
_mup_Bug #845407: soyuz is not fast-downtime friendly <canonical-losa-lp> <fastdowntime> <Launchpad itself:Triaged> < https://launchpad.net/bugs/845407 >09:06
wgrantstub: Indeed.09:06
wgrantstub: But transactionality when dealing with a filesystem tree that's exposed to Apache is non-trivial, probably requiring model change.09:06
stubWe just need two-phase commit with PostgreSQL and the archive on the filesystem. trivial.09:06
wgrantYep.09:07
wgrantWell, we could do it on Windows.09:07
wgrantBut yeah.09:07
stubWe could generate a filesystem on demand from a transactional backend like PostgreSQL...09:08
stubIf we used fuse to mount it, we wouldn't even need to reengineer that much..09:08
wgrantDiskless archives are meant to do that.09:08
wgrantBut, well, they've been planned for 5 years.09:08
lifelesswgrant: can't do it on windows09:11
lifelesswgrant: the needed apis are not exposed.09:11
lifelesswgrant: ceph of btrfs however..09:11
wgrantlifeless: Hm? TxF works fine, even with MSDTC.09:12
bigjoolslifeless: hows the python-oops-twisted coming along?09:12
wgrantOnly supported on >= Vista, though, so maybe after your time.09:12
lifelesswgrant: ah yea09:12
wgrant(TxF == Transactional NTFS)09:13
stubSo we deploy on Vista. I think the licences are going cheap at the moment.09:13
lifelesswgrant: it doesn't talk about the consistency model09:13
lifelesswgrant: I could well believe atomic commits but inconsistent reads09:14
wgrantPossibly, but that's fine for process-accepted :P09:14
lifelessit == wikipedia09:14
lifelessoh process accepted? it can do the bzr thing easily09:14
lifelessah it does - nice - 'An application can use TxF to preserve the integrity of data on disk caused by unexpected error conditions and help resolve concurrent file-system user scenarios by isolating your changes from others while the changes are being made.'09:16
stubCould bazaar be used to maintain all the generated files? We don't need to put the whole archive in a tree as moving files in and deleting them can be done atomically, but the generated stuff could be done and committed to a branch elsewhere and then pulled into the live tree served by Apache.09:18
stubI guess we wouldn't need bazaar for that - just symlinks and rsync09:21
lifelessright09:26
lifelessor a directory pivot09:26
bigjoolslifeless: hows the python-oops-twisted coming along?09:43
lifelessbigjools: I didn't get anything done today :(09:44
lifelessbigjools: but I expect to wrap it up tomorrow09:44
bigjoolslifeless: you're 300% late on your estimate :)09:44
lifelessI am09:44
bigjoolscan I help with anything?09:45
lifelessnah09:45
lifelesswell, you could, but the handoff would probably be ~= to doing it myself09:45
lifelessso i don't think its useful09:45
bigjoolsok I'll just keep nagging09:46
lifelessfair enough too09:48
bigjools:)09:48
stubrvba: https://code.launchpad.net/~stub/launchpad/distinct-db-users/+merge/76535 is a simple one10:06
rvbastub: Okay.10:07
adeuringrvba, allenap: fancy another review? https://code.launchpad.net/~adeuring/launchpad/bug-739052-10/+merge/7654010:12
rvbaadeuring: Sure, I'll add it to my queue.10:12
adeuringrvba: thanks!10:12
=== al-maisan is now known as almaisan-away
cjwatsonwgrant,stub: indeed I'm not sure we've ever manually rejected a custom upload, FWIW10:52
=== matsubara-afk is now known as matsubara
wallyworld_wgrant: dumb question for you11:40
wgrantwallyworld_: Sure.11:41
wallyworld_what's wrong with bzr push lp://staging/~wallyworld/+junk/foo  --stacked-on lp://staging/lp-production-configs11:41
wallyworld_'InvalidURL', 'Invalid url supplied to transport: "bzr+ssh://bazaar.staging.launchpad.net/+branch/lp-production-configs": no supported schemes11:41
wgrantwallyworld_: --stacked-on initially didn't work for LP. I'm not sure if it does now.11:41
wgrantAlso, staging probably doesn't have data in lp:lp-production-configs.11:42
wallyworld_wgrant: i want to test the trigger to maintain the transitivel_private column, so would like to create a branch stacked on a private one11:42
wallyworld_or at least be able to manipulate the privacy status of a branch11:42
wgrantwallyworld_: You probably need to ask a LOSA to help you with that tomorrow.11:43
wallyworld_ok. sad that we can't test such things ourselves :-(11:43
wgrantIn a post-Disclosure world we may be able to.11:44
wallyworld_hope so11:44
wallyworld_it will be quite easy to test if i get someone just run run a bit of sql actually11:45
wgrantTrue.11:45
=== almaisan-away is now known as al-maisan
wgrantwallyworld_: Still around?11:56
jtvjcsackett: are you Q/A'ing your expander branch?12:20
jcsackettjtv: sure; hadn't gotten notice that it had been tagged qa-needstesting.12:21
jtvjcsackett: then you know now.  :)  I'm asking because it's one of 2 blockers for something that's getting a bit urgent.12:22
jcsackettjtv: no worries; taking a look now.12:22
jtvThanks.12:22
jcsackettjtv: mine is qa-ok. good luck hunting down the other blocker. :-)12:26
jtvThanks jcsackett!12:27
jtvThe other, interestingly, is your reviewer sinzui.  Any idea where he is?12:27
jcsackettjtv: it's a bit before the start of the work day here. i imagine he is doing the wake up breakfast dealing with kids thing?12:28
jtvI suppose.  Thanks.12:28
jcsackettyou only got me b/c i was reading the news on my pc when you pinged. :-P12:28
jtvI was waiting to pounce.12:29
jtvAny twisted experts here?  I'm looking at some suspicous code of this shape:12:32
jtvd1 = make_deferred()12:32
jtv  d.addCallback(f1)12:32
jtvCorrection:12:32
jtvd = make_deferred()12:32
jtvd.addCallback(f1)12:32
jtvd.addCallback(f2)12:33
jtvAnd f1 seems to create its own deferred and add callbacks to it.12:33
jtvBut I don't see anything that would guarantee that f1's own deferred will complete before f2 is called.12:33
jmljtv: does f1 retun its deferred?12:35
jmlreturn, rather.12:35
jmljtv: because if it does, then that Deferred has to fire & have its callback chain complete before f2 is called12:37
jtvIt does not return its deferred, afaics.12:38
jmljtv: if it doesn't, then there is no guarantee whatsoever. Well, unless f1 is using Deferreds in an explicitly synchronous way, which is rare but not unheard of.12:38
jmle.g.12:38
jtv(I'm simplifying greatly; it's pretty complicated in reality so there's also the risk of getting the call tree wrong)12:38
jmldef f1(x):12:38
jml  d = defer.succeed(x * 2)12:38
jml d.addCallback(this_gets_called_immediately)12:39
jml return d12:39
jml(pardon the IRC indentation)12:39
jmljtv: as a general rule, if a function gets a Deferred, it ought to return a Deferred.12:40
jmljtv: if you want, I can take a quick look at the real code.12:41
jtvWhat kind of “barrier” should I look for in the code?  What could be in there to ensure that the nested Deferred completes before the outer one moves on to its own next callback?12:41
jtvI don't think the real code lends itself to a quick look, but I just posted an overview on bug 717969.12:42
_mup_Bug #717969: storeBuildInfo is sometimes ineffective <boobytrap> <buildd-manager> <Launchpad itself:In Progress by jtv> < https://launchpad.net/bugs/717969 >12:42
jtvIt's about one page of call tree, and I haven't figured out a good way of representing the data chain in there yet.12:42
jtvI may do that separately.12:42
jtvI added a /!\ marker where the nested Deferred seems to be created.12:43
jtvI'm not entirely sure it is yet; all I know about that so far is that a proxy has its callRemote called.12:44
jmljtv: I don't understand the question. Return the Deferred?12:44
jmljtv: otherwise, there's no way of ensuring12:45
* jml frowns12:46
jmlthe buildmanager really, really needs to have the db stuff separated out so it can be called in deferToThread and so transaction boundaries are crystal clear.12:47
jmljtv: working up the stack now.12:50
wgrantAhh, didn't see it being discussed over here.12:50
jtvjml: can't judge the first part of that statement but agree with the clarity bit.  Do we even have anything to guarantee, really guarantee, that we're not interleaving unrelated bits of job management in one transaction?12:50
jmljtv: not that I saw. other than that historically people have been urged to be careful with changing the locations of commit()12:51
jtvwgrant: why were you afraid?  We're too far apart for immediate physical harm, and plenty of time before the next meeting to get a restraining order.12:51
jtvjml: be careful where you put those deck chairs… hey look at that pretty iceberg!12:52
jtvI've been staring at this for too long.  I'm getting silly.12:52
jmljtv: OK.12:53
jmljtv: so, everything from BuilderSlave.status up is returning any Deferred it creates.12:53
jtvI believe so, yes.12:53
jtvI'm not sure where _that_ Deferred comes from exactly.12:53
jmlt.web.xmlrpc12:53
jmljtv: so, you can rely on that deferred to fire before any call site proceeds to its next callback12:54
jtvHow does that follow?12:54
jmljtv: http://twistedmatrix.com/documents/current/core/howto/defer.html12:55
jtvRead that one… which bit?12:55
jmlhttp://twistedmatrix.com/documents/current/core/howto/defer.html#auto1212:56
jml"If you need one Deferred to wait on another, all you need to do is return a Deferred from a method added to addCallbacks. Specifically, if you return Deferred B from a method added to Deferred A using A.addCallbacks, Deferred A's processing chain will stop until Deferred B's .callback() method is called; at that point, the next callback in A will be passed the result of the last callback in Deferred B's processing chain at the time."12:56
jtvAhh12:56
jmlor see my comments at 12:37-38 UTC12:57
jtvThat makes more sense now, thanks.12:57
jmlbasically, without that behaviour, we might as well be passing around callback functions.12:58
jtvAh, my backtrace wasn't extensive enough to cover the place where the nested deferred ended up being returned.13:00
jtvIt's somewhat hidden in a place that creates yet a third deferred.13:00
jtvWhich it returns, instead of the original.  Hang on.13:00
jtvShouldn't matter, I think.13:01
jtvjml: very glad to have your help, by the way.13:13
jmlnp13:14
jtvI did find one place (close to where things have been known to go wonky) where a callback returns None.13:21
jmljtv: where's that?13:22
jtvbuildfarmjobbehavior.py, line 108.13:22
jtvIt's one of those “should never happen” cases.13:22
jmljtv: even so, it won't matter13:22
jmljtv: callbacks can return normal values as well as Deferreds13:22
jmljtv: and that code path doesn't do any async operations13:23
jmljtv: so no ordering problems.13:23
jtvThis is mind-bending stuff.  :)13:24
jmljtv: yeah, but once you've bent it, it all makes sense.13:25
jtvThis is what I fear the most.13:25
jtvjml: timing and implementation aside, is it a valid abstraction to think of returning a Deferred from a callback as a tail call—“finish all this work before you consider me done”?13:31
jmljtv: umm. I guess so. I tend to think of any Deferred returned from any function (callback or no) as a thing that will fire when it's completely done.13:34
jtvjml: but presumably merely returning a Deferred from a regular function has no special powers?  It may seem a pedantic point but since I'm trying to hunt down a mysterious bug, I can't really assume that everything has been done by safe rules.13:35
jtvIf a non-callback returned a Deferred that wasn't being kept anywhere, I suppose it would trigger “whenever.”13:36
jmljtv: it has no powers, right. Essentially, when one is returned in a callback, addCallbacks is called on it.13:36
* jtv frowns13:37
jtvNot on whatever Deferred was being executed in the call site?13:38
jmljtv: so yeah, if a non-callback returned a Deferred, and nothing was addCallback or addErrbacked to it, then it would trigger whenever (assuming the Python process hung around long enough)13:38
jtvIn this case it probably would… I'm not particularly expecting this, but it's another thing to watch out for.13:39
jmljtv: I can never remember which way around.13:39
jtvI wish I had some drawing paper handy.13:39
jmlbut it's pretty logical. might help you to play around with a couple of trivial cases.13:39
jtvIn a way it's all just tree traversals.13:40
jmljtv: I've got to go do pair programming now. Good luck.13:40
jtvThanks for your help!13:41
jmlalso, this might help: http://mumak.net/stuff/twisted-intro.html13:41
jtvAck13:41
abentleyadeuring: http://code.mumak.net/2011/08/launchpadlib-helper.html13:45
=== al-maisan is now known as almaisan-away
rvbajcsackett: Hi ... are you reviewing today?14:04
jcsackettrvba: yes! thanks for the reminder. i am somewhat off my scehdule today. :-)14:04
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: jcsackett, rvba* (allenap) | Critical bugs: 256 - 0:[#########]:256
jcsackettand oh god; there's an 822 line diff and an 1888 one in the queue. :-P14:05
jcsackettrvba: i suppose you might be interested in me taking a look at your branch, eh?14:06
rvbajcsackett: I'm just asking because I've a branch up for review if you're up for it.14:06
rvbahehe14:06
jcsackettrvba: i'm assigning it to me now.14:06
rvbaGreat, thanks.14:06
rvbajcsackett: The 1888 branch seems to be targeting someone specific to review it.14:07
rvbajcsackett: I'm working on Ian's branch. 1355 lines ... but it's a re-implementation of a work that has been reverted.14:08
jcsackettrvba: ah, thanks for pointing that out.14:08
jcsackettwe have had some very large diffs of late, it seems.14:08
rvbaIndeed.14:10
rvbasinzui: Hi ... any idea why the diff is still the same even with the prerequisite branch?14:19
sinzuirvba, not really14:19
sinzuirvba, It may be caused by the fact that the first branch was backed out14:20
rvbaI've tried to mess around with "-r ancestor:..." and other bzr magic commands but no luck.14:20
wgrantIf the first branch is merged already, it's not useful as a prereq.14:20
wgrantI believe it merges the prereq into the target, then merges the proposed branch into that, and takes a diff.14:21
wgrantRather than diffing from prereq to proposed.14:21
jtvoh, hi sinzui!  Is your rollback good for deployment?14:25
sinzuiyes14:25
sinzuioh, sorry, I must have missed the qa-ok on that. I did check it more than an hour ago14:25
sinzuifixed14:26
jtvThanks.14:27
jtvWe've got a green Q/A board; I requested a nodowntime rollout.14:32
jtvAnd now I truly must leave.14:33
jcsackettciao, jtv.14:34
jtvnn!14:36
gary_posterjcsackett or rvba, https://code.launchpad.net/~gary/launchpad/bug856048/+merge/76597 could use a review14:50
gary_posterplease :-)14:50
rvbagary_poster: Let me check the size of this first ;)14:51
=== salgado is now known as salgado-lunch
rvbagary_poster: Nah, just kidding, I'll do it when I'm done with my current review.14:52
gary_posterrvba :-P Yeah that last one was a doozy.  This one is pretty short and sweet.  Thanks!14:52
=== salgado-lunch is now known as salgado
jcsackettrvba: sorry it took me so long, but i have comments up on your MP.15:34
rvbajcsackett: Okay, let me have a look at your comments.15:35
rvbajcsackett: replied.15:40
* deryck goes offline for lunch, back in an hour15:43
jcsackettrvba: dig, thanks. i replied to your reply, but the gist is r=me. :-)15:43
rvbajcsackett: thanks.15:43
jcsackettrvba: thanks for your patience.15:43
rvbanp15:45
=== rvba changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: jcsackett | Critical bugs: 256 - 0:[#########]:256
=== beuno is now known as beuno-lunch
sinzuijcsackett, do you have time to mumble?16:39
jcsackettsinzui: sure.16:39
=== matsubara is now known as matsubara-lunch
=== beuno-lunch is now known as beuno
=== matsubara-lunch is now known as matsubara
lifelessmorning19:06
nigelbGood morning lifeless19:11
abentleylifeless: morning!19:11
nigelbThis should be my cue to sleep.19:12
lifelessabentley: hi:) nigelb: yes19:12
nigelbheh19:12
abentleylifeless: do you know of any tech that for getting logging out of a subprocess in Python?  Basically, I'm thinking of serializing the logs, writing them to a pipe, deserializing them.  But I can't believe it hasn't already been done.19:12
lifelesshmm19:16
lifelessnot offhand. I'm curious what the use case is - testing?19:16
lifelessI mean, isn't stderr often a pipe in a subprocess?19:16
abentleylifeless: Use case is the twisted job runner.19:17
abentleylifeless: I can get stderr out, but I'd rather not-- stderr has a bunch of things I don't want to know about.19:17
abentleylifeless: and Ideally, I'd control the verbosity of the logging in the parent process.19:18
lifelesstheres a quirk to be aware of there19:19
lifelessour twisted integration generates oopses when a twisted error is logged (not the python logging module - the twisted.python.log module19:19
abentleylifeless: that sounds like what we do when a normal error is logged.19:20
lifelessit is19:20
abentleylifeless: So the thing is that we don't want to generate the oops twice?19:21
lifelessbut intercepting normal error logging and preventing the oops in the subprocess won't intercept the twisted support (which I'm just rewriting now)19:21
lifelessthere are two things19:21
lifelessa) we need a unique OOPS prefix, or else multiple concurrent subprocesses will overwrite each others oopses19:21
lifelessb) we wouldn't want to log the OOPS twice19:21
lifeless(and c) - we want the backtrace from inside the subprocess)19:21
abentleya) not a concern for this use case.19:22
lifelessabentley: theres no concurrency?19:22
lifelessabentley: or each job already sets a unique prefix?19:22
abentleylifeless: There's no concurrent subprocesses-- one parent, one child.19:22
lifelessabentley: do the parent and child have differing prefixes?19:22
abentleylifeless: probably not.19:23
lifelessso, thats something to be aware of, datedir-repo is really poor at handling this situation19:23
lifelessI want to move us off of that very soon19:23
lifelessbut for now...19:24
abentleylifeless: but the parent waits for the child to complete, so it's unlikely to oops concurrently with the child.19:24
lifelessif the parent receives log entries19:24
lifelessand were to generate oopses on warning-or-above for those entries19:24
lifelessabentley: ah, just picked up on the wording19:25
lifelessabentley: datedir-repo is not unsafe for 'concurrent oopses' its unsafe for 'overlapping processes which both oops once or more'19:25
lifelessabentley: it caches the next id to use, then writes new oopses without checking for collisions, monotonically incrementing ids19:25
lifelessabentley: so if the child oopses once, and the parent oopses after the child finishes, the childs oops will be trashed19:26
abentleylifeless: okay.  We can give it a unique oops prefix.19:27
lifelessabentley: if the parent oopses once, starts the child, the child oopses, then the parent oopses after the child finishes - same effect, but the child wouldn't have overridden the parents first oops.19:27
lifelessabentley: thanks. Its a great wart on the oops code, and its caused lots of contortions like this.19:27
abentleylifeless: I don't think my current work makes that situation worse, though.19:28
abentleylifeless: if you're working on the oops code, pretty please, with a cherry on top, can I get the oops ID back if I generate an oops?19:28
lifelessabentley: yes, the new api totally does that19:29
abentleylifeless: thanks.19:29
lifelessabentley: if you're using the ErrorReportingUtility its a little more constrained. Let me see19:29
lifelessraising() returns the oops dict19:30
lifelessso19:30
lifelessreport = errorutility.raising(..)19:30
lifelessif report: oopsid = report.get('id')19:30
abentleyCool.19:31
lifelessthe errorreportingutility is very web-stack centric, I'd like to let other things stop using it - most/all of the plumbing is in place to permit that, but we need to make non request-based get_request_timeline() support19:32
lifelesshave a look a tthe current raising() method in lib/canonical/launchpad/webapp/errorlog.py - that may make it a little clearer19:32
abentleylifeless: anyhow, back to my original question.  Is there a better way to do what I'm trying to do here?19:34
lifelessI would - oops in the child, serialise-and-deserialise things to log to the parent, and have some way to log errors in the parent without oopsing.19:35
abentleylifeless: I don't want to oops in the child.19:35
lifelessI don't think there is a better way to ship the logs across19:36
lifelessabentley: one of the things the oops grabs is the backtrace19:36
lifelessabentley: is the child plain ol python or also twisted?19:36
abentleylifeless: I just want the calling process to know that a user error ocurred.19:37
abentleylifeless: But it's not an indication of a programming error.19:37
abentleylifeless: and so the backtrace isn't important, either.19:37
lifelesshow do you tell them apart?19:38
lifelessI'm sorry if I'm dragging this offtopic19:38
lifelessI don't mean to19:38
abentleylifeless: if an exceptions's class is listed on JobSubclass.user_errors, it's considered a user error.19:38
abentleylifeless: But I'd really like *all* logging to come across, not just errors.19:39
lifelesssure19:39
abentleyright now, the twisted job runner is a bit of a black hole.19:39
lifelessif it were easy to have the child create oopses for non user-errors, would you be happy with it writing the oopses ?19:39
lifelessthat would alleviate my concern about the backtrace *when* it matters19:40
lifelesswe can still ship all the logs across19:40
abentleylifeless: I already have the child creating oopses for non user-errors.19:40
lifelessok, great.19:40
lifelessbtw you might like to look at errorlog.py's _oops_config.filters - thats an extension point for stopping oopses19:41
lifeless </tangent>19:41
lifelessI can only think of three basic ways this can be done: - an API in the client you can query, writing to a pipe the parent watches, or writing to some known-location the parent can read-back from (e.g. a regular file on disk)19:42
lifelessI think using a pipe is totally fine19:42
abentleylifeless: It seems like such an obvious solution that I'm surprised I can't find an implementation anywhere.19:44
lifelessabentley: I suspect most people just log to a file19:44
lifelessabentley: and/or stderr, and watch that. Full introspection of whats being logged (which a pipe may allow) is rather heavier than most people need19:44
lifelessabentley: I agree that its an obvious implementation for the question 'how do I get all the log entries into a parent process'19:46
abentleylifeless: I guess the desire to do parent-side filtering and handling is what's pulling me that way.19:46
lifelessabentley: yes. I don't understand that desire, but I'm assuming its got good reasons :)19:47
abentleylifeless: At minimum, I want the same verbosity to be used for parent and child logs.19:48
lifelessfor clarity - I don't mean to imply its unreasonable or anything, we simply haven't chatted about it.19:48
abentleylifeless: It also seems to make testing easier.19:48
lifelessin the soyuz area we have a similar thing19:49
lifelessthere is a process that runs N child processes19:49
lifelesscurrently its not passing -q / -v down to them, so the verbosities are different19:49
lifelessso +1 on the same verbosities19:50
lifelessabentley: what does it do for testing?19:50
abentleylifeless: Usually when I test that something gets logged, I do it through the python logging mechanism with TestCase.expectedLog19:52
lifelessok, I can see that helping; OTOH if you're looking from output from a child process when testing the parent code, you are testing 2 layers at once - perhaps it would be better to be testing them seperately?19:53
lifelessthe only downside I can see to using a pipe and serialising the logs is that it will have tighter coupling than passing command line parameters around and watching stderr / a file on disk19:54
abentleylifeless: I want to test the integration.  I want to prove that logs propagate from child to parent.19:55
lifelessabentley: isn't that partly  circular? You want logs to propogate because you need the same verbosity + its easier to test, and you're testing that its easier to test?19:55
abentleylifeless: no, it's not circular.  I could test that logs propagate from child to parent if they were logged normally to a pipe instead of serialized.  It would just be a matter of getting access to the data that comes across that pipe.19:57
lifelessabentley: so there is another reason to pass logs across, other than what we've already discussed?19:58
abentleyI want all the logs related to a job run to end up in the same place.19:59
lifelessok!19:59
lifelessgiven that I'd be inclined to just write to a pipe19:59
lifelessand tell the child verbosity via our standard options20:00
lifelessbut serialising will work too. The reason I would just write to a pipe is that I think its easier than managing a protocol20:00
abentleylifeless: the subprocess is launched via Ampoule, so we can't use the standard way of specifying verbosity, but I don't think it'll be terribly hard.20:03
=== matsubara is now known as matsubara-afk
* jcsackett hates his development environment today.20:37
jcsackettanyone know how to get rid of the "You may supply --create-prefix to create all leading parent directories." messages on local codehosting pushes?20:45
jcsacketti've had to rebuild my lp stuff and seem to have broken that, and recall wgrant helping me fix it *months* ago.20:46
lifelessincoming20:49
jcsackettlifeless: ? is that related to your earlier convo above, or to me? or some other, third thing? :-P20:54
lifelessjcsackett: medium bug triage ;)20:54
jcsackettlifeless: oh. i see.20:55
* jcsackett modifies bug mail filters.20:55
jcsackett:-P20:55
lifelessmwhudson: where is bug 123880 at ?21:08
_mup_Bug #123880: Codebrowse needs a custom 502 error page <lp-code> <Launchpad itself:Triaged> < https://launchpad.net/bugs/123880 >21:08
abentleymwhudson: Do you know if there's a way in Twisted to forward logging from a subprocess to the parent process?21:09
mwhudsonlifeless: no idea, sounds more like a losa task than anything to me?21:11
lifelesssinzui: help on bug 125545 please :)21:11
_mup_Bug #125545: Language variants should know their parent language <lp-foundations> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/125545 >21:11
lifelessmwhudson: it may even be done...21:11
mwhudsonabentley: i'm not sure what that would mean21:11
mwhudsonlifeless: yeah, i think the 502 page for codebrowse is fine currently21:12
mwhudsonlifeless: so just close it i reckon21:12
sinzuilifeless, we do filtering in python instead of the db because we do not know that en_US is a child of en21:13
sinzuiI marked it low21:13
lifelessthanks21:13
abentleymwhudson: A suprocess calls log.err, and the effect is as though log.err was called in the parent process.  Presumably by serializing the log messages to a pipe or socket.21:16
mwhudsonabentley: ah, i'm not aware of anything like that, no21:16
abentleymwhudson: Cool, thanks.21:16
mwhudsonabentley: i notice twisted has a syslog observer http://twistedmatrix.com/documents/10.1.0/api/twisted.python.syslog.html which would be a bit similar to the subprocess side of that i guess21:17
lifelesswe use that already (via the oops observer, which I'm redoing :P)21:19
sinzuijcsackett, could you review https://code.launchpad.net/~sinzui/launchpad/valid-targets-0/+merge/76658 if you have time21:20
jcsackettsinzui: i certainly can.21:20
mwhudsonah cool21:23
jcsackettsinzui: r=me.21:41
sinzuithank you21:41
=== almaisan-away is now known as al-maisan
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 256 - 0:[#########]:256
lifelesswgrant: bug 137448 - really? I thought you fixed that?22:17
_mup_Bug #137448: New UI is confusing and counter inuitive for changing affected package <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/137448 >22:17
lifelesspoolie: if you're still hacking on lp email, bug 138592 would be the bomb to fix22:19
_mup_Bug #138592: Bug notifications have personal To: header but aren't personal <email> <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/138592 >22:19
=== al-maisan is now known as almaisan-away
lifelesswhats the oldest version of ie we support ?23:40
StevenKI hope 7, but I suspect 6.23:42
lifelessgrah23:42
lifelessyeah23:42
lifelessI wiped that from mmy mind23:42
StevenKGlobal use of IE6 is hovering around 9%.23:45
StevenKIE8 is 30% or so.23:45
StevenKWhoa. Firefox *2*. 0.16%23:46
wallyworld_huwshimi: you free now for a chat?23:50
=== wallyworld_ changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: wallyworld | Critical bugs: 256 - 0:[#########]:256
jelmerlifeless: are you going through *all* launchpad bugs, or a specific category?23:54
huwshimiwallyworld_: Do you mind if we talk in 10 min?23:54
lifelessjelmer: medium23:54
wallyworld_huwshimi: sure, ping me when you are ready23:54
huwshimiwallyworld_: Thanks23:54
lifelessjelmer: there is a discussion about possible downgrading high->medium and critical->high. *if* that happens we don't want to 1000 untriaged bugs to the high bucket23:55
lifelessjelmer: there was some talk about a batch move, but I did a sample 75, and many were irrelevant/fixed/dupes or genuinely high; so I suggested we just treat them as untriaged and triage them.23:55
lifelessjelmer: I'm doing 75 a day23:55
jelmerlifeless: ah, makes sense23:56

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