/srv/irclogs.ubuntu.com/2011/04/11/#launchpad-dev.txt

lifelessI can has review? https://code.launchpad.net/~lifeless/lazr.batchnavigator/keyoffset/+merge/5709100:22
lifelesshuwshimi: hi00:43
huwshimilifeless: Morning00:43
lifelesshuwshimi: wondering if you could eyeball bug 11993900:44
_mup_Bug #119939: strike through resolved bugs <lp-bugs> <ui> <Launchpad itself:Won't Fix> < https://launchpad.net/bugs/119939 >00:44
lifelesshuwshimi: I closed it wontfix because its clearly easy to do if we wanted to, and multiple ui refreshes haven't don it00:44
lifelessbut I don't have a UI analysis for why its a bad idea, and the filer is (reasonably) asking why we have chosen not to do this00:44
lifelesshuwshimi: if I was wrong to close it and you think it would be a good idea, we can reopen easily.00:45
wgrantlifeless: I might point out that multiple UI refreshes also haven't made the UI not suck.00:45
lifelesswgrant: you might00:46
lifelesswgrant: and thus me talking to huw :P00:46
lifelessit just seemed like a bug that would never get traction - do, or do not.00:46
lifelessmwhudson: perhaps I can rope you in for that review ^?00:47
huwshimilifeless: So, I don't think we should do the strikethrough, but it would be super useful to have some kind of indication of the status of the linked bug (e.g. on tooltip or inline: bug #1234 [won't fix]).00:47
_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 >00:47
lifelesshuwshimi: do you mean in linkification, or other places?00:48
lifelessfmt: and linkification have different algorithms [not necessarily for good reasons]00:49
lifelesshuwshimi: if you look here:00:49
lifelesshttps://code.launchpad.net/~sinzui/launchpad/person-merge-job-400:49
lifelesshuwshimi: the linked bugs have a mouseover status - 'critical - in progress'00:49
huwshimilifeless: I think this would be appropriate in bug comments/descriptions etc.00:49
lifelesshuwshimi: ok, thats in linkification. The good news is that I have a canned answer for you. The bad news is 'that turns out to be suprisingly expensive performance wise, back burner at best'.00:50
huwshimilifeless: Yeah I suspected.00:51
lifelessits expensive because of bug privacy00:51
lifelesshuwshimi: anyhow, if you could comment on that bug [which is specifically about strikethrough] or perhaps alter it to talk about freeform bug linkfication and exposing more metadata, that would be cool.00:52
huwshimilifeless: I think it would be a good thing to do, but if the chances of it ever happening are slim to none then maybe we should kill the bug00:53
huwshimilifeless: OK will do.00:53
huwshimilifeless: maybe you should also make a note that we can not do it yet due to performance00:53
lifelesshuwshimi: all things are possible. I have no objection to a bug open saying 'linkified bugs would be more useful if they showed bug metadata such as title, status, milestone etc'00:53
huwshimilifeless: is "linkified" the correct term for this situation?00:54
wallyworldhuwshimi: hi. do you have any css you want to give me for the confirmation dialog?00:55
huwshimilifeless: As in, will other people know what we're talking about00:55
huwshimiwallyworld: Not yet. But I do want to give you some :)00:55
wallyworldnp. thanks00:55
huwshimiwallyworld: I should be able to send you some today00:56
wallyworldexcellent smithers00:56
lifelesshuwshimi: it may not be the official term but its close enough00:57
huwshimilifeless: Sure thanks :)00:57
lifelesshuwshimi: we have modelled links like 'duplicate' etc00:57
lifelesshuwshimi: and we have freeform stuff we infer by linkification00:57
lifelessmodelled stuff already shows the metadata (on mouse over)00:58
lifelesswgrant: have you seen https://bugs.launchpad.net/launchpad/+bug/454307 ?01:00
_mup_Bug #454307: indices/md5sums.gz doesn't match repository <lp-registry> <mirror> <Launchpad itself:Triaged> < https://launchpad.net/bugs/454307 >01:00
wgrantthumper: Can you QA your branch-by-ID thing?01:00
thumperwgrant: yeah01:00
thumperI think01:00
wgrantlifeless: Never seen that before, because it was mistriaged.01:00
thumperlifeless: what do we have in place for codehosting on qastaging?01:00
wgrantFixed.01:00
lifelesswgrant: I suspected as much - chalk another one up for silos01:00
thumperor easier to just use staging?01:01
wgrantthumper: Everything.01:01
wgrantthumper: codebrowse you need to access by port forwarding, but everything else works.01:01
lifelesswgrant: is it a genuine new bug and not a duplicate?01:01
wgrantlifeless: I don't recall anything like it.01:01
lifelesswgrant: win01:02
wgrantShipIt should be running for the last time right now :)01:02
wgrantThen we can disable and delete it.01:02
wgrantlifeless: Do you think https://qastaging.launchpad.net/ubuntu is OK? The "Latest derivatives" portlet is new, not flagged, probably undesirable, and mostly bad data.01:06
wgrantBug #74750201:07
_mup_Bug #747502: Derived distributions must be discoverable from the "parent" distribution <derivation> <qa-needstesting> <Launchpad itself:Fix Committed by rvb> < https://launchpad.net/bugs/747502 >01:07
lifelesswgrant: I would hesitate to ship that01:08
wgrantShall I flag it?01:08
lifelesswgrant: please01:08
lifelesswgrant: also a gentle reminder to the list 'if changing existing uis with unfinished stuff, feature flag it'01:09
wgrantSure.01:09
lifelessmwhudson: ping01:28
mwhudsonlifeless: hi?01:28
lifelessmwhudson: hi; did you see my query re a small lasr.batchnavigator review ?01:29
mwhudsonoh right, i clicked the link and then forgot about it01:29
lifelessheh :) thanks!01:29
lifelesshttps://github.com/defunkt/jquery-pjax#readme01:33
pooliehi huwshimi?01:34
huwshimipoolie: Hey01:41
pooliehey there01:44
pooliei had a random idea the other day; i'm not saying it's very urgent to actually do, but i just thought i'd ask you01:44
poolieand that was, perhaps bug heat should just be hidden from display and used only as a sort key01:44
poolie(and perhaps be in the api)01:44
pooliethat would avoid some number of complaints or bugs about the absolute values and the scaling onto flames being a bit weird01:45
poolie(eg that they're inconsistent across pillars)01:45
lifelessI think thats a bad idea01:46
lifelessbecause it hides the machinery01:46
lifelesswhich makes it less understandable, and thus more frustrating when its wrong01:46
lifelessI think we should fix the machinery instead01:46
pooliebut the machinery is almost entirely hidden today01:47
poolieit is not understandable at all01:47
lifelessI'm not justifying what we have01:47
lifelessI explaining why I think making it less visible would be a mistake01:47
huwshimiInteresting. I don't really know much about bug heat. What do we use it for apart from the default bugs page?01:47
poolieit's shown as a series of flames in some bug lists, and on bug pages01:48
lifelesswe permit a search sorted by heat01:48
poolieand for sort ordering01:48
pooliein fact that order is a common default01:48
lifelessand the distro and some other teams use hot bugs as a health check01:48
lifelesspoolie: the default sort is importance01:48
lifelesspoolie: only the hot bugs widget sorts by heat by default01:48
pooliereally?01:48
pooliebecause <https://bugs.launchpad.net/bzr> claims they are hot bugs01:49
pooliethe title may be wrong01:49
lifelesspoolie: right thats the widget01:49
lifelessnote that it doesn't show page navigation01:49
lifelessit does link to a sort by heat01:49
poolieok, and the 'show me more' is by heat01:49
lifelessbut if you click on search at the top01:49
pooliebut, you're right, 'open bugs' is by importance01:49
lifelessyou get by importance01:49
lifelessetc, yes.01:49
poolieand, amusingly enough 'high bugs' sorts by importance too01:50
lifelessthere is/was a bug open saying 'please show the inputs to the heat on the flames'01:50
pooliei might have filed it01:50
pooliewhen you say people use it as a health check01:50
pooliedo you mean they count how many 4-flame bugs there are?01:50
poolieor they just look at the open bugs sorted by heat01:50
lifelessOne of the complicating factors there is that the algorithm decays, so you can't statically calculate, you have to redo each time.01:50
lifelesspoolie: the latter01:51
pooliewell, my idea would keep that01:51
lifelessstub is investigating heat as a possible cause of index bloat01:51
pooliei think sorting is pretty worthwhile01:51
pooliei suspect showing it on the bug page is pretty much noise01:51
lifelessif it is, we'll need to revisit the entire implementation01:51
lifelessI suspect we'll get the same sort with a /little/ fuzz without the decay01:52
lifeless(because commenting on a bug removes the decay for a day)01:52
poolieanyhow, it was just a random thought01:52
pooliethat perhaps making it serve the purpose of providing an ordering, and making it provide an absolute metric, and making it provide a scaled ranking01:52
pooliemay be asking too much01:53
wgrantlifeless: https://code.launchpad.net/~wgrant/launchpad/bug-756983/+merge/5709701:54
poolielifeless, do you think anyone loves, or looks at, the flame icon?01:55
pooliethey may well do01:55
lifelesswgrant: I think bigjools and raphael may be confused by your comment abot desirability01:55
pooliebut not me01:55
wgrantlifeless: Possibly.01:55
lifelesspoolie: I think that if we don't expose it, we will have questions like your one about 'sort by date changed'01:57
lifelesspoolie: we don't expose date changed in the UI, so you can't decide if its buggy or not and you file a bug.01:57
poolielifeless, if you mean the bug i filed, i think that was actually a complaint about it not being in the ui01:58
pooliegah, in the API01:58
lifelesspoolie: the bug you filed was that a particular bug was sorted at the top of 'my bugs sorted by date'01:58
pooliewell, that is just weird01:59
lifelesspoolie: bug 75216902:00
poolieit seems like there for some reason the value is correct but the sort is wrong02:00
_mup_Bug #752169: wrong ordering for date_last_updated? <Launchpad itself:Triaged> < https://launchpad.net/bugs/752169 >02:00
poolieright02:00
lifelesspoolie: all I'm saying is that when there is a sort order and the data behind it isn't visible, folk will get confused.02:00
pooliesure02:00
pooliei don't think the bug is very analogous02:01
pooliebut i agree that being able to see "why is it doing that" can be good02:01
pooliei don't think the flames are very helpful in understanding it02:02
pooliei think it's more likely people will consider the numeric heat is wrong, than that lp will fail to sort integers once they have been calculated02:03
poolie(which seems to be happening in 752169)02:03
lifelesssure02:03
mwhudsonlifeless: i don't know if you care, but ListRangeFactory.getSlice will not DTRT in size==0 and forwards=False02:12
mwhudsoni think02:12
mwhudson(as in, i think it will return the whole list)02:13
mwhudsonslicing is one of the points were one wants a negative zero02:13
lifelessmwhudson: I don't think we need to care; size 0 is utterly bogus anyway.02:14
lifelessof course, some one will trigger a timeout using that someday.02:14
thumper:(02:17
thumperlp://qastaging/ urls don't work02:17
mwhudsonlifeless: it's almost a natural law, any code around slices will get at least one edge case a bit wrong02:17
thumperspm: what's the status of the staging code update?02:17
spmshould be able to kick that off shortly actually02:18
mwhudson(i spent a long time fixing problems in CPython's code wrt this sort of thing)02:18
thumperspm: it says it is doing one now02:18
spmthumper: technically that's a lie, it's just the existing locks and blocks still in place from the fail on the w/e02:18
thumperspm: ok, so ETA?02:19
spmto kick it off, RSN, completion, no idea.02:19
thumperok02:19
spmI think the last successful full restore was ages back, and rob's asked for a full in that case, so... 15-20 hours?02:20
lifelessmwhudson: yup, I've at least one patch in CPython for this too - on find() IIRC02:21
lifeless(which takes slice params, but didn't interpret them correctly)02:21
huwshimiwallyworld: On the dialogue do you know how to get the green bar on below the title back?02:21
wallyworldhuwshimi: is that missing? let me look02:25
wallyworldhuwshimi: so it is. i will figure out how to make that stay. it may be that it's tied to the "steps" node which is hidden when the confirmation is shown02:27
huwshimiyeah I wondered that. I had a look at the privacy dialog on the same page and it somehow manages to have it02:28
lifelesswin02:30
lifeless    DataError: OFFSET must not be negative02:30
lifelessStevenK: good morning02:41
StevenKMorning02:41
thumperlifeless: anyway to see the post params for the oops? https://lp-oops.canonical.com/oops.py/?oopsid=1131EC41502:43
lifelessthumper: sure it02:44
lifelesss02:44
lifelessfield.actions.* in the request variables02:45
wgrantIt's in the URL.02:45
thumperah... I see it now02:45
lifelesshttp://infram.wordpress.com/kadosu-categorized-document-search/specification-\u2026put-of-pluginsspecification-for-filtering-text-output-of-plugins02:45
lifelessis the problem02:45
lifelesserm02:47
lifelesswtf02:47
lifeless# Branch: launchpad02:47
lifeless# Revno: 768802:47
thumper?02:47
lifelessthe revno02:48
lifelessoh02:48
lifeless2009 oops02:48
thumper:)02:48
lifelesshttps://lp-oops.canonical.com/oops/?oopsid=OOPS-1926EE1366 looks more interesting02:48
thumper:(02:48
thumperit seems the middle click button on my mouse is dying02:49
lifelessargh02:49
lifelesssqlobject fail fail fail fail fail fail fail fail fail fail fail02:49
wgrantlifeless: Oh?02:49
lifelesspartial implementation of slice protocol02:50
lifelessresultset[-5:None] -> boom02:50
lifelessmwhudson: pushing a tweak03:01
mwhudsonlifeless: whee!03:01
lifelessrule #1 if you make it look like a slice, let it damn well implement slice03:02
* lifeless grumps03:02
mwhudsonlifeless: does resultset[-5:] work?03:02
thumperWTF? we have our own urlparse?03:02
thumperall it does is encode('ascii')03:03
mwhudsonthumper: something to do with unicode03:03
thumperyeah, but I'm still trying to work out why we care03:03
wgrantWe are broken and generate Unicode URLs in a lot of places.03:03
mwhudsonthe cache gets polluted with unicode objects if you feed it a unicode url03:03
mwhudsonor did, maybe that's fixed in 2.6...03:04
thumperwhat cache?03:04
lifelessmwhudson: the fail is because it passes the offset down to sql unaltered03:04
mwhudsonlifeless: lovely03:04
lifelessmwhudson: in principle it could reverse all the sort elements automatically and adjust03:04
lifelessmwhudson: -5:None = reversed[:5] afterall03:04
wgrantlifeless: total_size is replaced with total_size_link in recent webservice versions.03:05
mwhudsonthumper: urlparse has a cache03:05
wgrant(re bug #757007)03:05
_mup_Bug #757007: total_size element returned in all batch retrievals <lazr.restful:Triaged> < https://launchpad.net/bugs/757007 >03:05
lifelessmwhudson: I realise you're asking if __getitem__ in storm handles the second parameter differently; I haven't checked all the way03:05
lifelesswgrant: our tests look for total_size03:05
lifelesswgrant: and its still there03:05
thumpermwhudson: really?03:05
thumperWTF for?03:05
mwhudsonthumper: beats me03:05
lifelessbecause parsing urls is slow03:06
wgrantlifeless: They must be using an older version.03:06
wgrantI forget the threshold.. possibly 1.0.03:06
lifelessand rather than expose a parser object with state, - win -03:06
wgrant    first_version_with_total_size_link = "devel"03:06
mwhudsonlifeless: yes because parsing the same url over and over again is a common case, obviously03:06
* mwhudson coughs03:06
lifelessmwhudson: if you use damaged stacks, yes.03:07
mwhudsonthumper: looks like the bug launchpad is working around is fixed though03:07
thumpermwhudson: yeah03:07
thumper?03:07
lifelessencoding a url to ascii is sensible though03:07
lifelessif it can't be encoded, its *not* a valid url and we should reject it.03:08
lifelessthe stdlib url stuff is broken in many more ways than mere caching03:08
* lifeless wouldn't ever use it by choice03:08
lifelesseven more sadly upstream just fundamentally don't understand what urls are.03:08
lifelessSee the 50 mail thread or whatever was on the *worse* breaking in 3.x03:09
thumperlifeless: catching the unicode decode error in validate url seems pretty simple03:09
lifelessthumper: yup, works for me03:10
wgrantlifeless: A friend from uni tried to fix various bits of the 3.x stdlib URL unicode stuff... it was all pretty wrong and upstream was not at all receptive to fixing it in a reasonable way.03:11
lifelesss/pretty/entirely/ :)03:11
wgrantYeah.03:11
lifelessas your friend probably knows03:11
wgrantI think it's less bad now, though.03:11
wgrantStill awful, though!03:11
lifelesspy3 broke email, broke the web stacks.03:12
wgrantThe latest WSGI is 3.xable, isn't it?03:12
lifelessI suspect so03:12
wgrantThey finally fixed that, IIRC.03:12
lifelessyes03:12
lifelesswith class sensitive string manipulation functions03:12
wgrantYay03:13
lifelessbecause bytes cannot be permitted to have a find() method, obviously.03:13
wgrantI wish they'd backported more of the bytes API to 2.7 :/03:15
wgrantLike, say, having a bytes type that indexes like a bytes, rather than making it index like a str.03:15
lifelessother than a misleading type alias?03:15
wgrantGrar.03:15
wgrantExactly.03:16
wgrantIt's an alias to something that is not at all like a bytes!03:16
lifelessgustavo had a pretty solid rant on this03:16
lifelessmy opinion is that the bytes type is daft03:16
wgrantI ended up casting lots of stuff to a bytearray to get compatible indexing.03:16
lifelessmwhudson: can you check my incremental commit, see if still happy ?03:17
mwhudsonlifeless: looking03:17
lifelessWith that, at the cost of one more count(*) on Last links & only on Last links03:17
lifelessit fixes the last of the test fallout03:17
StevenKIs r12758 actually QA-able at all?03:18
StevenKIt's been top of the deployment report for a few days03:19
wgrantStevenK: thumper was looking at it earlier.03:19
lifelessprobably got distwacted03:19
wgrantThe HWDB thing needs QA.03:19
thumperStevenK: if this is the stacking issue, yes it is qa-able03:19
thumperI'm wanting staging to update to poke properly03:20
lifelesswgrant: revno?03:20
wgrantr1278703:20
lifelessthumper: thats going to be a day or more03:20
lifelessthumper: use qastaging03:20
wgrantFixes the top OOPS.03:20
mwhudsonlifeless: wow, IFiniteSequence?03:20
mwhudsonbut ok03:20
lifelessmwhudson: yes, really - its what the z3batch code does03:20
mwhudsonlifeless: yes, still looks fine03:21
lifelessmwhudson: so I assume there is an adapter registered for result sets somewhere or other03:21
thumperis the branch scanner running on qastaging?03:30
thumperor do we need to ask?03:30
wgrantI'd ask.03:31
thumperspm: qastaging branch scanner plz03:33
spmthumper: it's not setup to run, is running manually atm03:36
thumperspm: can you please run manually?03:36
spmseems to be working even. /shock horr03:36
thumperspm: I'll be asking again in a few minutes03:36
spmor03:36
spmoh. I didn;t type that clearly. "is running manually atm" means I've kicked off a manual run already03:36
spm2011-04-11 02:36:50 INFO    Adding 479 new revisions.03:37
spm2011-04-11 02:36:56 INFO    Deleting 0 branchrevision records.03:37
spm2011-04-11 02:36:56 INFO    Inserting 34782 branchrevision records.03:37
thumperthat isn't the one I wanted...03:37
thumperis it done?03:37
spmnot yet03:37
thumperhow is qastaging codehosting set up?03:38
spmbranch scanner is "cronscripts/scan_branches.py" ?03:38
thumperspm: aye03:38
thumperspm: when you you get your new au losa?03:39
spmthumper: not sure what you mean? it's setup and running on tellurium. lpqastaging.tellurium.canonical.com.03:39
wgrantLess than a month until the new victims.03:39
thumperspm: as in a completely separate hosting area?03:40
spmI'm not sure when they start.03:40
wgrantMay 5?03:40
wgrantSomething like that.03:40
wgrantspm: ShipIt's finished. Please remove the cronjobs.03:40
lifelessthumper: yes03:40
lifelessthumper: it has its own branches and copies the same set across on restores that stging does03:41
thumperok03:41
thumperspm: please ping when scan complete03:41
* StevenK grumbles loudly at IDS.03:44
StevenKIf you pass in processor families to the package cloner, it will look up every SPPH for the destination distroseries and call .createMissingBuilds() on it.03:45
wgrantYes?03:46
spmthumper: https://pastebin.canonical.com/45894/03:46
StevenKWhich is *slow*03:46
wgrantYes.03:46
StevenKThis makes me sad.03:46
wgrantcreateMissingBuilds sucks, and needs to be fixed as the next phase for some timeouts.03:47
thumperspm: very :((03:47
thumperspm: that is because there was a scan job for a branch not copied to qastaging03:47
thumperspm: and the oops config isn't set for the scanner on qastaging03:48
thumperspm: if I said make all scan jobs as complete, could you do that without sql?03:48
StevenKwgrant: It might be in-scope for us, because calling .createMissingBuilds() on 17,000 SPPHs makes mawson cry.03:49
wgrantStevenK: Sure it's not the populate-archive bug?03:49
wgrantStevenK: It may not be, but getPublishedSources now preloads huge amounts of useless stuff which makes any script using it on thousands of publications completely useless.03:50
StevenKwgrant: lib/lp/soyuz/model/packagecloner.py, _create_missing_builds()03:50
StevenKThe package cloner suffers from Underscore Disease.03:51
wgrantYeah, p-a bug.03:51
wgrantIt's still slow, but not that slow.03:51
wgrantCowboy the patch from https://wiki.canonical.com/IncidentReports/2011-03-29-LP-populate-archive-slow03:51
wgrantspm: Hi, I need a cronjob run on qas.03:52
wgrant'scripts/process-hwdb-submissions.py -vv', and I'd like the output.03:52
StevenKwgrant: Because eager loading fixes everything. :-(03:53
wgrantStevenK: Yes.03:53
lifelessStevenK: its a key tool03:55
lifelessthe problem is that an object model assuming cheap lookups is broken in the real world.03:55
spmthumper: "if I said make all scan jobs as complete, could you do that without sql?" Um. I dunno .but we can use sql on qas?03:55
thumperspm: I'll get back to you shortly03:55
spmnp03:56
StevenKlifeless: The problem is the eager loading breaks at least parts of Soyuz.03:56
StevenKs/parts/two parts/03:56
spmwgrant: do you expect lots of output, or just a little? ie log or screen gab03:56
lifelessStevenK: thats the symptom03:56
wgrantspm: I'm not entirely sure. Might be best to log.03:56
spmokidoki03:56
lifelessStevenK: the problem is that a single api was used when there are different usecases at hand.03:56
wgrantspm: It depends how the DB was when qastaging was restored.03:56
wgrantlifeless: The use-cases were identical.03:57
wgrantlifeless: But now we have a policy of eager loading.03:57
wgrantSo they differ.03:57
lifelesswgrant: they weren't really identical, the differentiation was around performance03:58
spmwgrant: ftr: ~/tmp/wgrant-process-hwdb-submissions.log03:58
spmahh. cronscripts/process-hwdb-submissions.py would work better03:59
wgrantspm: Er, yes, sorry.03:59
StevenKlifeless: The only things that required the eager loading were the callsites that directly impacted on render times. .getPublishedSources() is called from other places, too.04:00
spmwgrant: heh, is cool. it was third time lucky in any event. '/cripts/process...' didn't work either. :-)04:00
lifelessStevenK: it required eager loading because it was making things slower for render times04:00
lifelessStevenK: I agree that other places were negatively impacted04:00
spmwgrant: argh. one sec. will fix. FATAL:  Ident authentication failed for user "hwdb-submission-processor"04:01
StevenKYes, hence my "directly impacted on render times"04:01
* spm pulls out the yak clippers04:01
lifelessStevenK: the function I change directly impacted render times.04:01
StevenKPerhaps we change the internal API of .getPublishedSources() to take a eagerload boolean, and it can return early if it's False (and it defaults to True)04:03
StevenKIt's not particularly elegant, but it solves both cases.04:03
lifelessStevenK: sure, thats what we've done elsewhere.04:05
lifelessStevenK: I didn't here because of oversight, not intent04:05
lifelessStevenK: the scripts weren't visible to me when I grepped around quickly, for $whatever reason.04:05
spmwgrant: https://pastebin.canonical.com/45895/04:07
wgrantspm: Thanks.04:07
* StevenK looks for the p-a bug04:08
wgrantspm: Do you want an RT for killing the shipit cronjobs? Or will the existing shipit cleanup one do?04:08
spmthe existing covers it04:08
StevenKwgrant: Hm, does the p-a slowness even have a bug?04:09
wgrantStevenK: Bug #74484904:09
_mup_Bug #744849: populate-archive.py unusably slow <Launchpad itself:Triaged> < https://launchpad.net/bugs/744849 >04:09
StevenKBah, that didn't show up when I searched for populate-archive04:10
StevenKwgrant: Thanks, I'll look at it after lunch.04:11
huwshimiwallyworld: Did you have any luck with that border?04:23
wallyworldhuwshimi: yes. all good. i've improved the animations and also provided animation for when the user hits "no". all i need now is some css for the confirmation content and i can submit the mp04:24
huwshimiwallyworld: Is all that pushed to your branch?04:24
wallyworldhuwshimi: yes04:24
huwshimiwallyworld: Thanks I'll take a look04:25
wallyworldhuwshimi: the mp is also written but on hold so you can see that too if you want04:25
wallyworldhuwshimi: sorry, i wasn't aware you were waiting to hear back from me04:25
huwshimiwallyworld: That's ok I just wanted to see how it looked with the bar added04:27
thumperlifeless: https://code.launchpad.net/~thumper/launchpad/fix-unicode-error-in-urlparse/+merge/5710304:30
huwshimiwallyworld: How about something like this: http://imgur.com/KVM6j04:40
wgrantDo we want "Yes"/"No" rather than "Assign"/"Cancel"?04:42
lifelessno04:43
lifelessassign / do not assign04:43
wgrantRight, or that.04:43
lifelesshuwshimi: ^04:43
wgrantBut definitely not "Yes"/"No",04:43
lifelesshuwshimi: gnome did a bunch of user testing04:43
lifelesshuwshimi: and yes/no prompts are very effective at confusing users04:43
wgrantlifeless: $ACTION/"Cancel" is used everywhere else in LP, so I'm leaning towards that.04:43
lifelesswgrant: the cancel is about as good as No04:44
wgrantIt is.04:44
lifelesswgrant: it makes me take a second-glance all the time :(04:44
huwshimilifeless: wgrant: OK, but that's not what the screenshot was about at all.04:44
wgrantThen there was that infamous HIG-compliant download manager a few years ago...04:44
lifelesshuwshimi: heh, what was it about ?04:44
lifelessoh, I see04:45
thumperlifeless: ta04:45
lifelesswallyworld: ^ ^ ^ ^04:45
lifelessthumper: de nada04:45
huwshimilifeless: I was just trying to improve some CSS04:45
lifelesshuwshimi: yeah, I'm caught up now04:46
huwshimilifeless: I think it's a fair call though04:46
lifelesswgrant: http://projects.gnome.org/gwget/screenshots.html ?04:46
wgrantlifeless: That's the one.04:46
* wallyworld just finished some food04:46
wgrantBut the screenshot is not there any more :(04:46
wgranthttps://bugs.launchpad.net/ubuntu/+source/gwget2/+bug/84215/+attachment/30855/+files/Screenshot-gwget.png04:47
_mup_Bug #84215: Do you want to Cancel or Cancel? <gwget2 (Ubuntu):Fix Released> < https://launchpad.net/bugs/84215 >04:47
wallyworldhuwshimi: that screenshot looks pretty good04:47
lifelesswgrant: ROTFL04:47
huwshimiwallyworld: There was a small HTML change. I'll push my changes. Also did you see what lifeless and wgrant were just saying about the buttons?04:48
wallyworldhuwshimi: yes. so looks like i'll make it "Assign" / "Do Not Assign" ?04:49
wgrantSounds good.04:49
huwshimiwallyworld: Actually in this case I'm not sure "Do Not Assign" makes sense. The action that it makes is "go back so I can fix it".04:51
lifelessits a popup right ?04:51
huwshimilifeless: Yes.04:51
wallyworldhuwshimi: yes, you are right. so it should be something like "Choose Again" ?04:51
lifelesswallyworld: sounds good04:52
huwshimiwallyworld: Yeah something like that...04:52
wallyworldhuwshimi: thanks for the input btw04:52
huwshimiwallyworld: np04:55
huwshimiwallyworld: Here are my changes: https://code.launchpad.net/~huwshimi/launchpad/assign-non-contributor04:56
* wallyworld merges04:57
wallyworldhuwshimi: that css style is used elsewhere. i was just reusing an existing one. i'll make a new one with your style attributes04:59
huwshimiwallyworld: Oh right04:59
huwshimiwallyworld: Yeah, good plan :)05:00
wallyworld:-)05:00
lifelessmwhudson: https://bugs.launchpad.net/storm/+bug/23976705:01
_mup_Bug #239767: Negative Indexing on results fails <Storm:New> < https://launchpad.net/bugs/239767 >05:01
lifelessStevenK: I have updated my lazr.batchbavigator branch to fix test failures and use 1.2.405:01
lifelessStevenK: do you care to rereview?05:01
huwshimiA review of this would be super great: https://code.launchpad.net/~huwshimi/launchpad/privacy-notification-firefox-753423/+merge/5687205:16
lifelessjtv: hey, do you have write access on http://wiki.postgresql.org/wiki/Index_Maintenance ?05:17
* jtv tries05:17
jtvOh, that wiki?05:17
jtvErr05:17
lifelessjtv: if so the first query there is much more useful with 'ORDER BY pg_class.reltuples::bigint' rather than 'order by 2'05:17
jtvIf I could remember my login details, maybe.  :/05:17
jtvWhy would anyone want to order by 2?05:19
lifelessthat uses the second column05:19
lifelessbut its pretty printed05:19
jtvOh, yeah, unsurprisingly I wasn't aware of that feature.05:19
lifelessso it orders 100MB before 2kb05:19
lifelessjtv: old school sql ;P05:20
lifelessjtv: none of these fancy column names05:20
jtvHad to do so much of that before they ever let me touch a database… hundreds of select queries just written out on paper.05:20
jtvLooks like the added the pg_size_pretty later and forgot to update the ORDER BY05:21
jtvlifeless: you'll have better luck in #postgresql :)05:22
lifelessyeah05:24
jtvWhere I also have some questions to ask, actually, but I've been too lazy or shy to do it.05:32
jtvSuch as: why does the background writer work out of the buffer cache instead of out of the WAL (and so, why do we need dirty bits for committed pages)?05:33
jtvSure, making it eat from the WAL would make it take longer for pages to get into tables, but so what?  Changes are already logged.  But I'm guessing that flushing could be more efficient if it weren't driven by eviction policy.05:35
lifelessStevenK: hi05:36
StevenKDamn it, I knew talking would get me on the hook for a review. :-P05:36
StevenKlifeless: Link me05:36
lifelesshttps://code.launchpad.net/~lifeless/launchpad/bug-752153/+merge/5650505:37
StevenKlifeless: Which revisions are new, and can you provide a partial diff?05:38
lifeless12760->05:39
lifelessisn't lp meant to do incremental diffs05:39
wgrantlifeless: yes, but it's disabled because they're slightly broken.05:40
wgrantIIRC they had excessive mode changes.05:40
lifelessStevenK: http://bazaar.launchpad.net/~lifeless/launchpad/bug-752153/revision/12762?remember=12759&compare_revid=1275905:40
wgrantBut it was enabled for a few days, so it's disablement probably counts as a regression.05:40
StevenKI wonder how I can hide an argument from the API05:40
lifelessStevenK: give it a default value05:41
lifelessStevenK: and don't list it in the export parameters list05:41
wgrantStevenK: Which arg? For getPublishedSources?05:41
StevenKRight, so I'm fine.05:41
StevenKwgrant: Yup05:41
wgrantStevenK: As lifeless says, make sure it has a default and don't list it in @operation_paramters05:41
wgrant+e05:41
StevenKwgrant, lifeless: http://pastebin.ubuntu.com/592452/05:42
StevenKlifeless: You're ripping out a lot of code from lp.app.browser.root, can you explain a little context?05:43
lifelessStevenK: that was the copied code that was fugly05:43
lifelessStevenK: since I had to touch lazr.batchnavigator more, I refactored to let it be deleted.05:43
lifelesssee the comment with the pylint supressor05:43
StevenKRight05:44
StevenKWhy self.default_size = 20 and then right after 'return 20' ?05:44
lifelessStevenK: the function needs to set both05:44
lifelessStevenK: thats explained in the docstring in the base class05:45
StevenKlifeless: But if you return self.default_size, it only needs to be changed in one place?05:45
lifelessStevenK: 1 line apart, and this is shorter.05:45
wgrantwallyworld: Could you use an API call instead of BugContributorView?05:46
StevenKOkay, it makes me grumble, but it looks good.05:46
lifelessStevenK: thanks05:46
lifelessnext up, to teach lazr.restful to allow custom IRangeFactory05:46
wallyworldwgrant: i considered that. i went with the view because the result of the call was related to getting data for display, a json dict of values05:47
wgrantwallyworld: Don't you already have the person and pillar names?05:48
lifelessthat should so totally be an API, but lazr.restful doth not make it easy.05:49
wgrantlifeless: Oh?05:49
wallyworldwgrant: nope. not in the view05:49
wallyworldlifeless: yes. hence the view :-)05:49
lifelesswgrant: it wants to return typed objects only05:49
wgrantlifeless: It'll happily return an untyped dict.05:49
wgrantSoyuz does it in a few places.05:49
wgrantIt's not pretty, but it works fine.05:49
lifelesswgrant: oh? I just recall jml headbutting making that work here and on the list in the past05:50
wgrantwallyworld: The picker must already have the person displayname, and surely the task table knows the pillar displayname somewhere?05:50
lifelesswgrant: whats the necessary dance ?05:50
wgrantlifeless: Right, you can't return a dict of entries.05:50
wgrantlifeless: They'll just end up as strings instead.05:50
wallyworldwgrant: that's internal to the picker. the user of the picker only has the person uri05:50
wgrantBut if you leave the return type undeclared and just return a dict, the client will get it and just JSON decode it.05:51
lifelesswgrant: cool05:51
wgrantwallyworld: Hmm, that's pretty terrible. Not easily fixable to return the whole object? I imagine that could be generally useful.05:52
wgrantAnyway, if you really can't refactor the machinery to let you get at the existing cached objects, this can easily be an API namedop, and that'd probably be better than manual JSON encoding and content-type hackery.05:53
wallyworldwgrant: we don't have the whole person object. the picker has a vocab with terms and that's it05:53
wgrant:(05:53
wallyworldwgrant: my first implementation was via a named op - had to modify client.js slightly to allow sync calls - but i had trouble with lazr restful05:55
wallyworldwgrant: can you poin tme to the soyez example?05:55
wgrantwallyworld: Synchronous calls are never OK.05:55
wgrantThey block the browser UI in !Chrome.05:55
lifelessjtv: Can I sanity check something with you05:55
* jtv seems an odd choice for sanity05:55
jtvbut yes, you can try05:55
lifelessjtv: did you see my sketched fact table for bugtags05:56
wallyworldwgrant: i need the validation call lthe block otherwise it all falls into a heap05:56
jtvNo05:56
wgrantwallyworld: :/ We really really really want to avoid using sync anywhere.05:56
lifelessjtv: ah. So, I've sketched a fact table out for bugtags, maintained with triggers I expect, and I can't get it out of my head.05:56
jtvlifeless: "fact table"?05:57
lifelessjtv: http://en.wikipedia.org/wiki/Fact_table05:57
jtvthx05:57
lifelessjtv: the centre table in a star schema05:57
jtvlifeless: are you saying you've been looking at the same problems I wrote about yesterday?05:57
wallyworldwgrant: hmmm. from memory that will make this change very hard to deliver without really fucking with the picker internals :-( i'll have a look05:57
lifelessjtv: all week05:57
lifelessjtv: as has wgrant05:57
jtvah! then sorry for the duplication05:58
jtvor noise, or whatever05:58
lifelessjtv: more eyeballs good05:58
jtvyeah, I could do with some better ones05:58
lifelessjtv: with timeouts, I do a sweep each day and make sure they are reported on  https://bugs.launchpad.net/launchpad-project/+bugs?field.tag=timeout05:58
lifelessjtv: with the pageid from the oops summary in the bug title05:58
wgrantwallyworld: It's particularly cool in Firefox, since the XUL runs in the same thread as page JS.05:59
lifelessjtv: this particular one had not had the analysis updated in the bug :( - so looking there wouldn't have helped you know that folk were caring05:59
wgrantwallyworld: So a synchronous call will actually freeze the browser.05:59
lifelessjtv: but I like that you analysed it - good stuff05:59
wallyworldwgrant: well that blows.05:59
jtvlifeless: well I knew folks would care, but I thought maybe this was the outcome of a recent round of work.  And since it was a holiday, I didn't bother looking very far.  :)05:59
jtvAnyway, about that fact table..?05:59
wgrantwallyworld: Although it's possibly better now, and should be even better in 5.05:59
StevenKwgrant: https://code.launchpad.net/~stevenk/launchpad/getpublishedsources-too-eager/+merge/5710706:00
lifelessjtv: anyhow, my question is, if one has an aggregate cached in a lookaside table, - which my volume column is, is it concurrency safe in postgresql (with repeated reads, which is I think the level we run at) to maintain that via triggers06:00
wallyworldwgrant: seems like a hell of a lot of work for the sake of removing one minor sync call06:00
StevenKlifeless: Can haz dropped timeout?06:01
lifelesse.g. a trigger that on inserts/deletes into BugTag updates the running total for that tag in the fact table06:01
jtvlifeless: you don't get "repeated read" as such in postgres06:01
lifelessor will, if two people insert a reference to the same bug tag at the same time, the counter only go up by one, when it should go up by two06:01
lifelessStevenK: no06:01
jtvlifeless: you get "read committed" as the only ansi-standard isolation level06:01
lifelessStevenK: we've got search timeouts happening06:01
lifelessStevenK: e.g. https://bugs.launchpad.net/bugs/+bugs?field.searchtext=Ubuntu&search=Search+Bug+Reports&field.scope=all&field.scope.target=06:02
wgrantwallyworld: Isn't the picker infrastructure already highly asynchronous? What's wrong with chaining another callback?06:02
lifelessStevenK: and the tags portlet is right on the edge of going boom06:02
lifelessStevenK: given its memcache cached, if it stops working, the timeouts won't increase a little...06:02
lifelessStevenK: they will increase massively.06:02
lifelessStevenK: so, we should get that fix from wgrant in place; then we can lower the timeout06:03
wgrantYeah, I'll have that finished tonight.06:03
jtvlifeless: if you use read-committed for this, I think you'll lock the aggregate (which doesn't need to be problematic if you update very late).  In serializable, you may avoid that but take the occasional serialization failure.06:04
lifelessjtv: right, so s/repeated read/whatever level we run at/06:04
jtvserializable, I think.06:04
jtvHmm this has gone through changes—don't trust me on this.06:04
wallyworldwgrant: possibly nothing. my knowledge of the picker code is still not perfect and i couldn;t see how to easily do it. i'll take another look. when i last tried, the default save action happended in parallel with the validation06:04
lifelessjtv: yah, and our retry-machinery catches serialiable failures and retries06:04
lifelessjtv: I'll cross reference with stub06:04
jtvlifeless: there may be call for a separate bit of infrastructure there…06:05
jtv"I'm done, but if you could please add these numbers to these cached aggregates I'd be most grateful."06:05
lifelessjtv: the big point though is that this can answer the portlet for anonymous users with only 10 rows read, and for logged in users with 10 + 10 * group membership [if the planner is real smart]06:06
jtvIf we can accept a tiny inconsistency window, the infrastructure could do it in a separate transaction—and only take the serialization errors there, without re-doing the request.06:06
lifelessjtv: we could, and I'm happy for us to have that, but I think we can tolerate the few retries with existing infrastructure for now - shorter path to getting the primary win06:06
jtvlifeless: some of these issues are very similar to what we had with translations.  One thing we did there was to update aggregates right away, but also have a background process check for and fix any discrepancies.06:07
wallyworldwgrant: if you are interested https://code.launchpad.net/~wallyworld/launchpad/multicheckboxwidget-unescaped-items/+merge/5710806:07
wgrantwallyworld: Will the item always have a displayname? I guess if not then the first callsite can fix it properly.06:08
wgrantAs long as it breaks instead of being insecure.06:08
wallyworldwgrant: most if not all things we care about do afaik06:09
wgrantStevenK: How many callsites actually need the eager loading?06:09
wgrantStevenK: It should probably be off by default, I think.06:09
StevenKwgrant: I was being cautious06:09
wgrantlifeless: Could you mentor https://code.launchpad.net/~wallyworld/launchpad/multicheckboxwidget-unescaped-items/+merge/57108?06:10
wallyworldwgrant: the sort of things we display in pickers etc all have displaynames so it's a pretty safe assumption06:10
wgrantStevenK: Why does that direction deserve caution?06:10
wgrantwallyworld: Yup.06:10
StevenKwgrant: And if it's off by default, then the API doesn't get it.06:10
wgrantStevenK: @call_with(eager_load=True)06:10
* wallyworld goes back to hacking picker javascript06:10
StevenKwgrant: Looking at other callsites.06:13
wgrantStevenK: Thanks. It seems to mostly be tests and a few things that use it to check if something is published, none of which need preloading.06:14
jtvlifeless: I don't see any concurrency hazards with what you're doing, at any isolation level, but you're introducing a write lock on the row in the fact table.06:15
StevenKwgrant: Er, then why was it added? Surely at least one of the callsites needs itl.06:15
wgrantStevenK: The API and probably one or two UI callsites.06:16
wgrantStevenK: Check the rev that added it.06:16
wgrantIt'll reference a bug.06:16
lifelessjtv: yeah, understood06:16
lifelessjtv: I think its simplest to start with triggers and move to async IFF the contention is a problem.06:17
lifelessjtv: other than the bug import scripts, I don't see it being an issue - bug mail being async already06:17
lifelessIMBW06:17
jtvlifeless: that makes sense.  As long as we know that we'll recognize that if it happens.06:17
lifeless$when the sky falls in, lifeless broke it06:18
wgrantlifeless: Does http://paste.ubuntu.com/591153/ still perform adequately? It's 9s on DF.06:18
StevenKwgrant: The linked bug only references the API.06:20
lifeless Total runtime: 36958.990 ms06:20
lifeless Total runtime: 3903.161 ms06:20
lifeless Total runtime: 3803.285 ms06:20
lifelesswgrant: ^06:21
wgrantlifeless: Hmm.06:21
wgrantStevenK: Must only be the API, then.06:21
lifelesswgrant: we can get spm to test on prod if you like06:21
lifelesswgrant: staging is mid-restore so not exactly at its best06:21
wgrantNot really. Need to get a realistic query first.06:21
lifelesswgrant: do you mean 'authenticated'06:22
lifelesswgrant: or that you want to do better ?06:22
wgrantlifeless: And ideally with official tags in the same query.06:22
StevenKwgrant: Changes pushing, I'll prod you when the diff is updated.06:22
lifelesskk06:22
lifelesswgrant: coalesce sort ?06:22
wgrantlifeless: Possibly. I'm trying a UNION'd WITH first.06:23
wgrantsee how it works... probably not well.06:23
wgrantBut obvious solutions first.06:23
StevenKwgrant: Diff updated.06:26
wgrantStevenK: thanks, will look in a sec.06:26
lifelesswgrant: I can't see a comment from you on https://code.launchpad.net/~wallyworld/launchpad/assign-non-contributor/+merge/5586906:27
wallyworldlifeless: i think that's the wrong one06:28
wallyworldlifeless: https://code.launchpad.net/~wallyworld/launchpad/multicheckboxwidget-unescaped-items/+merge/5710806:28
lifelesswallyworld: sshh I was being crafty06:28
wgrantlifeless: http://paste.ubuntu.com/592461/06:28
wgrantlifeless: Could you try that on (qa)s?06:28
lifeless Total runtime: 4327.931 ms06:28
lifeless Total runtime: 3828.393 ms06:28
wgrantSounds OK, then.06:29
lifelesscold, hot06:29
wgrantSeparate queries are far worse.06:29
lifelessah, because official tags don't have privacy06:29
wgrantHm?06:29
wgrantThis doesn't have privacy yet.06:29
lifelessyeah it does06:29
lifelessthe private check06:30
wgrantWell, yes, but it doesn't do authenticated users.06:30
lifelesssure06:30
lifelessanyhow06:30
wgrantThe officialbugtag stuff has nothing to do with privacy.06:30
lifelessshipit06:30
wgrantDon't ever say that word again.06:30
lifelessshiiiiiiiiiiiiiiiiiiiiiiiiiiiipit06:30
jtvwgrant: did you see my email about the bugtag count query?  I had it at 2s or so.06:31
lifelessjtv: what db server?06:31
jtvstaging06:31
jtvAfter that it gets harder, unfortunately.06:32
wgrantlifeless: Could you mentor https://code.launchpad.net/~stevenk/launchpad/getpublishedsources-too-eager/+merge/57107?06:36
wgrantjtv: Hmm, what improvements did you make over lifeless'?06:36
jtvwgrant: I haven't compared.  Unaware that he was working on it, I played around with it a bit yesterday.06:36
lifelesswgrant: no, I approved it already06:37
wgrantlifeless: Oh, so you did.06:37
StevenKwgrant: Thanks, ec2'ing06:38
jtvwgrant: ah, I see that he followed up to my email.  One of my optimizations was to use inner joins instead of outer joins.  This saved a second on staging, but he says it won't help as much on "beefier hardware."06:38
jtvNot sure why that would be.06:39
wgrantThe 3.5s query already uses inner joins :(06:40
lifelessjtv: first thing we did :)06:40
lifelessjtv: I had thought you were testing on dogfood06:40
jtvDid a bit of that as well, tbh.06:41
lifelessjtv: I've found that the left join/inner join plan cost vs actual cost difference is ~0 on prod06:41
jtvWhy would that be?06:41
lifelessdidn't dig terribly deeply sorry06:43
lifelessexcept when  the plan is dramatically different (and it is sometimes)06:43
jtvSeems strange though that this query would work out faster on staging than on production.06:45
lifelessjtv: I've been testing on staging too06:45
lifelessjtv: for added weird value06:45
lifelessjtv: I don't have direct prod access06:45
lifelessjtv: prod has different tuning parameters of course, vs staging - at 4 times the memory :)06:46
jtvOh.  Used to be the same.06:46
jtvThat'll make it hard to tune effectively for production.  I'd really like that plan logging feature for timeouts.06:47
jtvOr oopses in general, perhaps.06:47
lifelessjtv: same06:47
jtvSo we can use ++oops++ to check for flukes.06:47
jtvCan't we ask one of the maintenance squads to do it?06:47
jtvOr the TA?06:48
lifelessyes, it does make predicting a little harder; I tend to have a losa check once I'm happy on staging06:48
lifelessjtv: its a matter of triage06:48
lifelessright now, the biggest analytic problem is that api oopses have no timeline06:48
lifelessa regression06:48
poolieo/ jtv06:58
lifelesswhereartthoustub07:02
lifelessarrrrgh07:22
wgrantOh?07:24
lifelesshttps://bugs.launchpad.net/launchpad/+bug/73905107:24
_mup_Bug #739051: Product:+index timeouts <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/739051 >07:24
henningegood morning07:24
henningeAnd good day to you guys over there on the other side ... ;-)07:25
lifelesshi henninge07:25
lifelesswgrant: see the query.07:25
wgrantMorning henninge.07:25
henningeCan I ask for a review, please?07:26
henningehttps://code.launchpad.net/~henninge/launchpad/devel-744204-escaping-soyuz-base07:26
wgranthenninge: Looking.07:26
henningejavascript, quite simple07:26
henningeoh, that was the branch url. nm07:26
henningehttps://code.launchpad.net/~henninge/launchpad/devel-744204-escaping-soyuz-base/+merge/5697807:26
jtvhi poolie07:31
pooliehi07:32
wgranthenninge: Done.07:33
wgrantlifeless: Still around for mentoring?07:34
lifelesssure07:34
henningewgrant: thanks!07:35
wgrantlifeless: henninge's MP just above, if you could.07:35
henningewgrant: seriously? I can have whitespaces before dots?07:35
henningealso, I did not realized the YUI methods return the node. Thanks.07:36
lifelesshenninge: you can in python too07:36
wgranthenninge: Yup.07:36
lifelesshenninge: e.h. '[] . reverse()'07:36
henningeoh!07:36
wgrant. can't begin an identifier, so it's OK.07:36
henningecool, learn something new every day ;)07:37
henningeso '.' really is more like a binary operator07:37
spivlifeless: or even '[ ] . reverse ( )' for maximum ugly!07:37
lifelessspiv: you forgot the \r\n07:38
rvbawgrant: Hi! I guess you marking my bugs as qa-ok is due to the fact that I'm blocking the rollout and you know my developments are protected by the feature flag anyway ... right?07:45
StevenKExcept that r12786 is marked qa-basd07:46
StevenK*qa-bad07:46
jtvhey rvba—isn't it very early for you?07:46
rvbajtv: not really, 8:4607:46
rvbaStevenK: indeed07:46
rvbajust saw that07:46
wgrantrvba: I checked that they didn't break anything on DF.07:47
wgrantrvba: As for the qa-bad one, the fix should be on qastaging right around now.07:47
wgrantI guess it's being slow because of the staging restore :/07:48
rvbawgrant: appart from the one that you marked qa-bad ... I was in the process of trying to qa them on DF myself ... but I needed to upload a few bogus packages to properly test them.07:48
* wallyworld off to pick up new puppy, back later07:48
LPCIBotProject windmill build #161: FAILURE in 1 hr 6 min: https://lpci.wedontsleep.org/job/windmill/161/07:48
wallyworldwgrant: the assign-non-contrib mp now uses an api call. now i just need to sort of the async stuff07:49
pooliewallyworld, i liked your video07:49
wgrantwallyworld: Great!07:50
wallyworldpoolie: yeah, it was a learning exercise for me. i'm still new to yui07:50
pooliewallyworld, when it checks people who already have bugs assigned, that includes closed bugs?07:50
wallyworldwgrant: i basically just reverted to an earlier version and andded some tests07:50
rvbawgrant: is a fix for the portlet display itself or did you add a protection using the feature flag?07:50
wallyworldadded07:50
wgrantwallyworld: lazr.restful didn't stab you?07:51
wgrantrvba: It's behind the feature flag for now.07:51
wgrantrvba: It's not clear what fixing the portlet display entails.07:51
wallyworldwgrant: nope. i thought it would. when i say reverted, i also added some extra stuff to include the person and pillar names.07:51
rvbawgrant: ok07:51
wallyworldso it's all good07:51
wgrantwallyworld: Ah, right.07:52
wallyworldwgrant: previously the version with the api cal ljust returned true/false without all the other detail07:52
wgrantlifeless: How can I select columns from a With in Storm?07:52
wgrantlifeless: Everywhere else seems to use the With in a condition :(07:52
lifelessuhm07:53
lifelessI think I did this in my latest with patch07:53
wgrantI'm not sure it's possible :(07:53
lifelessor perhaps its what gustavo is asking for07:53
lifelessBranchRevision does it07:53
=== Ursula__ is now known as Ursinha-afk
=== Ursinha-afk is now known as Guest38069
wgrantlifeless: Hmm. Maybe I'll have to define a fake class.07:55
wgrantIt looks like it :(07:55
lifelesswgrant: this is bugtag?07:56
henningeHm, were did the inline diffs in comments on MPs go?07:56
lifelesswgrant: just select columns07:56
lifelesswgrant: Alias(SQL("counts.foo"), "bar")07:56
lifelesswgrant: or some such07:56
wgrantlifeless: Can you do that in a findspec?07:57
lifelesssure07:57
StevenKlifeless: I also came to a conclusion over the weekend. You pushed back at me a little about making request-daily-builds a garbo job -- given the fun I've had with p-s-c, I'm glad I didn't.08:09
lifelessStevenK: So the garbo now parallelises08:10
lifelessStevenK: And will be getting more work put into it08:11
StevenKlifeless: It still gets blocked for 5.5 hours per day.08:11
lifelessStevenK: thats tunableloop that does it, and its configurable per loop08:11
lifelessStevenK: all the tunable loops should get a timeslice every hour, guaranteed08:12
lifelessif they aren't, its a but08:12
lifelessbug*08:12
StevenKlifeless: But they get blocked due to slony madness?08:12
lifelessStevenK: they get blocked by a policy knob08:13
lifelessStevenK: which says 'if this loop will write a lot of rows, running it during e.g. backup will permanently bloat the table and makeit run slowly'08:13
StevenKlifeless: The logs disagree, but I hestitate to paste them.08:13
lifelessStevenK: loops like psc should just tune that08:13
lifelessStevenK: file a bug then08:13
lifelessStevenK: we need to have a solid platform to do things with easily.08:14
lifelessjtv: does serializable ever block on reads ?08:28
jtvlifeless: not that I can think of—actually the locking in serializable is the same as in read-committed by the way.08:28
jtvThere's a detailed listing of lock types in the pg documentation.08:28
lifelessk08:29
lifelessjtv: I'm looking at https://bugs.launchpad.net/launchpad/+bug/73905108:29
_mup_Bug #739051: Product:+index timeouts <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/739051 >08:29
* jtv looks08:29
lifelessjtv: which has an 11 second query, that takes 700ms on all three dbs in prod + similar on staging08:29
lifelessthough its gross that we're doing a fti search08:30
jtvso what makes it an 11-second query?08:30
lifeless+ a %foo%08:30
lifelessjtv: thats the million dollar question08:30
* jtv shakes fist at openid08:30
jtva 404 and a search form, just the things I expected from following a pair of automatically-generated oops links08:31
jtvlifeless: wild guess… fast-changing table in there?  Stats go stale occasionally, query reverts to conservative plan with lots of seq scans?08:35
lifeless4 of the 5 timeouts are on the query08:36
lifelessthe last is high cpu08:36
lifeless22839 hits on the page08:36
jtvIt's reported as high CPU, but could this be one of those extreme db timeouts where the query isn't logged and so the time isn't counted as query time?08:37
lifelessit may be an overloaded appserver08:37
lifelessjtv: we don't have any of those08:37
jtvUsed to.08:37
lifelessjtv: partial queries are reported properly now08:37
lifelessjtv: https://lp-oops.canonical.com/oops.py/?oopsid=1926H1059#statementlog is the cpu one08:37
lifelessjtv: you can see the gap08:38
lifelessI think this was a crashing appserver08:38
lifelessB E G H08:38
lifelessall 4-threaded ones08:38
jtvYup, I see the gap08:38
lifelessaccounting for all the timeouts08:38
lifelessI think the slow queries are the python code within the 'run the query' getting time starved08:39
jtvThat'd explain why the time seems to go arbitrarily into DB or non-DB time.08:41
jtvMakes me wonder though: why relatively consistent delays and why specifically in this one place?08:41
wgrantWe see that on BugTask:+index a lot.08:41
adeuringgood morning08:42
jtvhi adeuring08:42
adeuringhi jtv!08:43
lifelessI will ping mthaddon about progress on removing those servers08:44
jtvThanks for pushing through that long-desired change btw.08:44
lifelessjtv: we had a bunch of servers on wampee crash out earlier today08:45
lifelessjtv: rss up at 1GB, nonresponsive08:46
lifelessjtv: my pleasure, like all things takes time08:46
wgrantDeploy time, yay.08:46
lifelesswe can't rule out actual plan trouble08:47
lifelessbut the 22K successful renders08:47
lifelessmake me doubt that that its anything other than a sick appserver08:47
lifelessso what we need to figure out is how to detect and eviscerate such appservers in advance (assuming the 2-thread config can still run into trouble)08:48
jtvWell like I said, it's possible for a query to be planned differently while stats are out of date.  Could be a canary for vacuums falling behind.  (I think vacuum is where the stats are updated).08:49
StevenKwgrant: Err, in r12792 you merged in the FF stuff -- however, one of them says tal:condition="features/soyuz.derived-series-ui.enabled" and the other has tal:condition="request/features/soyuz.derived-series-ui.enabled"08:50
lifelessall palladium/potassium/gandwana - the old appservers08:50
wgrantStevenK: 'features' is defined in base-layout-macros08:51
wgrantStevenK: So you can only use 'features' directly in a top-level template.08:51
jtvwgrant, StevenK: question about publish-distro… when publish-ftpmaster wants to process only security updates, it uses the script's -s option to indicate the security suites.  But not on the partner archive!  Doesn't partner have security suites?08:57
lifelessstub: hi08:57
stubyo08:57
lifelessstub: 10 /    1  MaloneApplication:+bugs08:58
lifelessstub: I think we may have index bloat again already :(08:58
stubBah. I'll check my shiny new report.08:58
lifelessstub: how are you checking for it ?08:58
lifelessstub: ooh is it online ?08:58
stubI'm about to look :-) Should be08:59
stubFor the master at least. I need to set it up for the slaves.08:59
lifelessstub: are there instructions for regenerating indices for the losas ? [09:00
lifelesshttps://lp-oops.canonical.com/oops.py/?oopsid=1926D1311#longstatements09:01
stubNo. Its something I'll need to do manually. Not sure if I can automate it - parts have to be done outside transactions so needs someone who can workout how to back things out if things go screwy.09:01
wgrantjtv: Partner only has the release pocket.09:01
lifelessstub: if you can document it, then more folk could step through if needed, even if you're on leave / sick09:01
lifelessstub: which is my main concern - higher bus factor09:02
jtvwgrant: so security updates in partner go into the release pocket?09:02
wgrantjtv: Yes.09:02
jtvstub: he means tuk-tuk factor (he doesn't speak Thai)09:02
stubYes, but how do I document how to back out from an unknown state due to an unforeseen screwup?09:02
lifelessstub: you don't09:02
lifelessstub: but you can document the risks you know about, the things that would make you go hmmm09:03
jtvwgrant: thanks… and once we start releasing the debug archive, that will have security suites again right?09:03
stubRight. So I need to do it, or someone else who understands enough to do it such as our 3rd party support.09:03
wgrantjtv: Yes, but they're not security-critical.09:03
lifelessstub: sure; I mean the way I'd approach it is build a new index concurrently with a different name; then drop the old index09:04
jtvwgrant: so the criterion for expediting security updates would be "everything in the security pocket on primary, everything at all in partner, and none in debug."09:04
lifelesswhich would require a single short lock on the table09:04
jtvwgrant: a suite was… <archive>-<pocket>?09:04
wgrantjtv: Probably nothing at all in partner, but either way.09:04
wgrantjtv: suite = (distroseries, pocket)09:05
stubRight. So I guess the failure there is the index not building, which can be documented how to recover.09:05
wgrantBut in practise it's really (archive, distroseries, pocket)09:05
stubOf course, with the right reports we never need that process because we catch the problems proactively.09:05
lifelessstub: right09:05
* stub tries to work out where the dbr is being generated from atm09:05
lifeless~lpqateam09:05
lifelesscrontab09:05
jtvwgrant: thanks… this is turning out to be a nasty piece of hard-coding.09:06
jtvwgrant: it would be a lot simpler if I could leave partner out of the expedited security updates.  So if you say I can, I will.09:06
stublosaping: Can you please update the Launchpad tree on devpad for the ~lpqateam?09:06
stubECHANNEL09:07
lifelessstub: you can sudo to lpqateam I think09:07
lifelessstub: if you can't, I can09:07
wgrantjtv: Please do.09:07
jtv\o/09:07
jtvwgrant: I had another question… is the distscopy version of dists ever used for anything at all besides this script?  ISTM we could rsync the current dists to it _before_ moving it to a new place.  Just to narrow down the horrible-awkward-directory-shuffle-state window for failures a little.09:14
StevenKwgrant: Have you filed a bug about that issue?09:14
=== henninge changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: henninge | https://code.launchpad.net/launchpad-project/+activereviews
wgrantjtv: I don't know of anything else that uses it.09:15
wgrantStevenK: I have a half filled form... does that count?09:15
StevenKHaha09:16
wgrantBug #75724809:19
_mup_Bug #757248: poppy-sftp's signature checking relies on long-term survival of a directory in /tmp <poppy> <regression> <Launchpad itself:Triaged> < https://launchpad.net/bugs/757248 >09:19
StevenKwgrant: Excellent, thanks09:19
=== Ursinha-afk is now known as Ursinha
jtvwgrant: while we're thinking about this… if nothing uses the distscopy version of dists, why the ฟัก don't we run publish-distro on it in-place and simplify the directory shuffle in the publish-ftpmaster script?09:25
* jtv starts diagram to illustrate09:25
wgrantjtv: No idea :/09:26
wgrantProbably roughly "because someone thought that was a good idea 2005"09:27
wgrantin 2005.09:27
jtvwgrant: current → http://people.canonical.com/~jtv/publish-ftparchive-dists.png09:30
wgrantbigjools: Morning.09:30
jtvwgrant: proposed → http://people.canonical.com/~jtv/simplified-publish-ftparchive-dists.png09:30
jtvhi bigjools09:30
bigjoolshello09:30
wgrantbigjools: Did you know that cocoplum's /tmp pruner considers poppy-sftp's gpg.conf to be a nice snack?09:30
bigjoolswgrant: wtf is gpg.conf doing there?09:31
wgrantbigjools: GPGHandler creates a GNUPGHOME in /tmp, with the configured keyserver.09:31
wgrantbigjools: So it gets pruned, and poppy-sftp can no longer see any keys!09:31
wgrantFun for all.09:31
bigjoolsGNUPGHOME should be set to the right place, I remember telling a losa to do that09:32
wgrantHmm?09:32
wgrantGPGHandler overrides GNUPGHOME when it's initialised.09:32
wgrantSetting it in poppy-sftp's env will do no good.09:32
wgrantIt will be clobbered.09:32
bigjoolsthat's cracj09:33
maxbno it's quite sane really - encapsulate the needed setup in the code rather than mandating external setup09:33
wgrantIt's just not very helpful for daemons.09:34
bigjoolsit's not mandating anything, it should be an override09:42
bigjoolsso it's rather insane in fact09:42
bigjoolswgrant: did you sort it out?09:42
wgrantbigjools: We've restored gpg.conf for now.09:43
wgrantbigjools: It will happen again, though.09:43
wgrantThis week some time.09:43
bigjoolsso it needs a code change I suppose09:44
wgrantYeah. I'm not sure what should be done.09:45
bigjoolswe need to stop gpghandler using /tmp09:46
bigjoolssimples09:46
jmlhello from millbank09:58
jmlproduct team is here / huw09:58
lifeless\o/10:01
bigjoolsjtv: did you work out what distscopyroot is for?10:15
bigjoolsand did wgrant see those diagrams?10:15
jtvbigjools: as far as I can make out from the script, all it does is keep the "alternate copy" of dists.10:15
jtvYes, I showed him the pictures.10:15
jtvHe can't think of anything else that distscopy might be used for.10:15
bigjoolsjtv: so we have three copies of the indexes...10:16
jtvTwo.  But they take on 4 different paths.10:16
jtv3 each.10:16
jtvThey alternate.10:16
bigjoolsso distscopyroot contains the indexes from the previous run10:17
jtvSo through one script run, each of these directories is renamed 4 times to assume each of those 4 paths, and they end up back where they started.10:17
jtvYes.10:17
bigjoolsand we rsync to it at the start of each run10:17
jtvYes.10:17
jtvIt's an Ouroboros.10:17
bigjoolscan't see a problem with the new method10:17
bigjoolsbless you10:17
jtvI wasn't sneezing, I was referring to the mythical snake that eats its own tail.10:18
jtvIt's also reminiscent of Heinlein's short story, All You Zombies.10:18
bigjoolsjtv: the only difference now is that distscopyroot can get overridden before a successful run10:20
jtvoverridden?10:20
bigjoolswith the old method it was only changed when the script completed10:20
bigjoolssuccessfully10:20
jtvOr unsuccessfully.10:20
bigjoolsreally?10:20
jtvIf it aborts prematurely, dists.new is moved back there.10:20
bigjoolsinteresting10:21
bigjoolsI wonder if that was a bug!10:21
bigjoolsI can't see any other reason to have dists.new10:21
wgrantIt's not really a bug.10:21
wgrantThe second copy is only a time saver.10:21
wgrantIt doesn't matter if it is broken.10:21
jtvThe rsync should take care of any broken crap in there.10:21
wgrantWorst case the rsync will take a bit longer next time.10:21
bigjoolsit depends on why someone wanted a copy of the indexes from the last run10:21
wgrantbigjools: Because dists isn't regenerated from scratch each time, we need to work in a copy of it.10:22
wgrantBecause d-i images are big, we can't recopy each time.10:22
bigjoolsI know. ..10:22
wgrantSo a second copy is kept, and brought up to date each time.10:22
bigjoolsbut the way it's done is weird10:23
wgrantOh?10:23
bigjoolsjtv: I think your change is ok, FWIW. It doesn't seem to do anything differently10:23
bigjoolswgrant: having a backup the previous run's indexes may have been desirable10:24
bigjoolsbackup of*10:24
wgrantbigjools: It has a special codepath for moving it back before publication has finished, so it was intended that it may not always be a valid copy of the indices.10:25
jtvHmm10:26
bigjoolswgrant: my point was, that could have been a bug10:26
bigjoolsdespite the intentions10:26
wgrantIt seems fairly deliberately.10:26
wgrantMm.10:26
wgrantMaybe.10:26
bigjoolswho knows, that script is a pile of crap10:26
bigjoolsbut it's been like it for many years so JFDI10:26
wgrantLet's hope we can soon say it *was* a pile of crap.10:26
jtvI wonder if this doesn't mean that we can improve turnaround time of security updates further by doing the rsync at the end of the previous run.  That way, its latency is out of the critical path for getting the fixes out.10:26
wgrantjtv: No.10:27
wgrantjtv: We don't want to push that frequently.10:27
wgrantIt's unclear whether expedited security processing is desirable in the first place.10:27
wgrantTHis predates s-i-s.10:27
jtvIt's in the spec.10:27
jtvs-i-s?10:27
wgrantsecurity-in-soyuz10:27
wgrantBack when -security was synced from a dak instance.10:28
bigjoolswgrant: this was done *after* s-i-s10:28
bigjoolsand yes it's desirable10:28
jtvAnd even if it weren't the spec is newer yet and specifies expedited security updates.10:28
bigjoolsthe spec's pretty old :)10:28
jtvWell, "less ancient yet"10:29
bigjoolsI wrote it with Celso about 2.5 years ago10:29
jtvAnyway, I'll just focus on the simpler structure then.10:29
bigjoolscool, thanks for delving into that jtv10:29
* jtv loves to see complexity melt away10:29
jtvThis means no more broad cleanup in a "finally" or "atexit."10:30
bigjools\o/10:32
jtvbigjools: what in publish-ftpmaster exactly produces the Sources.* files?  Is it a-f, or publish-distro, or something else?11:08
bigjoolsjtv: a-f for ubuntu, publish-distro for PPAs11:08
jtvSo a-f in this case.  Thanks.  Almost there with the cleanup, I hope.11:09
bigjoolswoohoo11:09
jtvOh grumble.  What is it that runs a-f?11:09
bigjoolspublish-distro11:09
jtvSo my question was wrong.11:09
bigjoolsheh11:09
jtvCurses.  Something in publish-distro doesn't seem to like the new location.11:30
bigjoolsjtv: using -R ?11:32
jtvYes.11:32
bigjoolsodd11:32
jtvIt's not generating the Sources files, far as I can tell.  But no hint of why.11:32
wgrantjtv: Checked apt.conf?11:33
wgrantIt's generated in ftparchive.py, and is a bit bad.11:33
jtvNo… where would I find it though?11:33
=== henninge is now known as henninge-lunch
bigjoolswgrant: need to bounce an idea off you11:39
wgrantbigjools: Sure.11:39
bigjoolswgrant: some of the derived distros need to work pretty much like PPAs11:40
bigjoolsI think this can be as easy as changing the sources.list sent to the builders11:40
wgrantYeah.11:41
bigjoolsif we have an archive flag, "overlay" or somesuch11:41
bigjoolsthen the initialisation phase will just include the small subset of packages needed11:42
bigjoolsso it sounds sane?11:42
wgrantJust change the archive dependency calculator to include the extra archive, and sources.list and retry-depwait will magically work.11:42
bigjoolsyup11:43
jtvOhhh this is infuriating.  publish-distro fails to produce Sources.* in foo-distscopy/dists but does work if I mv foo-distscopy/dists dists.new ; publish-distro ; mv dists.new foo-distscopy/dists11:43
wgrantjtv: a-f may require it to be within archiveroot.11:43
wgrantOr our config of a-f.11:44
jtvIt's in archiveroot, I think, just not within distsroot.11:44
wgrant'foo-distscopy' is a sibling of the 'foo' archiveroot, right?11:45
* jtv checks11:45
jtvErr yes it is11:45
jtvDamn ".." in paths…11:46
jtvUsing different names works as well.  So it does seem to be a matter of location.11:46
jtvwgrant: I'd be very interested to know why publish-distro can't work outside the archive root, but I'm not too confident that I can find out today.  :(11:56
jtvCertainly nothing seems to be mentioning ".." explicitly.11:56
wgrantjtv: It shouldn't be publish-distro... probably a-f or our config of it.11:57
jtvMaybe it's relative softlinks that break?11:57
wgrantI hope not.11:58
wgrantIt's possible... but unlikely.11:58
jtvSee diskpool.py: creates relative symlinks, but I moved the depth of the directory in the tree.12:01
jtvChanged its depth, I mean.12:01
wgrantIndices should go nowhere near diskpool.12:01
jtvThat's a relief, perhaps.12:04
deryckMorning, all.12:06
=== jtv is now known as jtv-afk
LPCIBotProject windmill build #162: STILL FAILING in 1 hr 5 min: https://lpci.wedontsleep.org/job/windmill/162/13:02
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: henninge, benji | https://code.launchpad.net/launchpad-project/+activereviews
=== henninge-lunch is now known as henninge
benjihenninge: I'm going to do some of the reviews in active-reviews; none are claimed, are you activly working on any of them?13:26
henningeHi benji!13:26
henningebenji: I am working on Huw's (the oldest in the list)13:26
benjiok, I'm glad I asked, I was about to start on that one13:27
=== almaisan-away is now known as al-maisan
henninge;-)13:30
henningebenji: I'll claim it now13:30
=== al-maisan is now known as almaisan-away
benjithanks13:30
=== almaisan-away is now known as al-maisan
deryckadeuring, can you join me in mumble for a second?  Just to mic check before the standup.13:44
adeuringderyck: sure13:44
deryckthanks!13:44
wgrantwallyworld___: Thanks for fixing that up.13:45
wgrantAlthough there is a conflict now :(13:45
wallyworld___wgrant: yeah just saw it. am fixing13:45
wallyworld___wgrant: i'm annoyed with myself that i had myself convinced that there was an issue with the async approach. well there was originally but it got fixed along the way and i didn't realise13:47
wgrantwallyworld___: It's often hard to see that oneself :)13:47
wallyworld___wgrant: yeah, especially when you've seen an issue and don't go back and revisit it later after making changes13:48
Ursinhawgrant, are we suppose to use milestones or are we getting rid of that?13:51
Ursinhasupposed13:51
wgrantUrsinha: lifeless wants to stop.13:52
Ursinhawgrant, but we're not stopping yet13:53
Ursinha?13:53
wgrantUrsinha: Well, now might be a good time, rather than fixing it to point at 11.05 instead... but probably best for lifeless to confirm that. So set it to 11.05 for now?13:53
Ursinhawgrant, yeah, I'll do that now and talk to him late13:54
Ursinhar13:54
Ursinha:)13:54
wallyworld___wgrant: merge conflict fixed13:57
wgrantwallyworld___: Thanks. Will rereview in the morning, unless you really want it now.13:57
wallyworld___wgrant: nope. morning is good13:58
deryckhenninge, ping for standup14:02
deryckhenninge_, ping for standup14:03
henninge_deryck: coming14:03
bigjoolswgrant: steve was saying something about you saying you knew how to make createMissingBuilds quicker?14:07
wgrantbigjools: I knew about the thing making IDS an order of magnitude slower than it needed to be (which StevenK has since fixed), and I have some ideas on optimising createMissingBuilds, but nothing revolutionary.14:08
bigjoolsok, thanks14:08
jcsacketthenninge, benji: can i get a review of https://code.launchpad.net/~jcsackett/launchpad/api-wants-questionset/+merge/5702314:16
benjijcsackett: sure; I'm doing one at the moment, but if it's not claimed when I'm done then I'll do it then.14:17
jcsackettthanks, benji. :-)14:17
abentleyderyck: Many or all of those failure were PEBKAC.  How do I run the YUI tests specifically?14:38
deryckabentley, $BROWSER $PATH_TO_FILE, e.g. firefox lib/lp/app/javascript/test_foo.html14:40
abentleyderyck: no, all of them.14:40
deryckah14:40
deryckabentley, ./bin/test -cvvt test_yuitest --layer=WindmillLayer14:40
abentleyderyck: cool.14:41
deryckabentley, substituting the app-specific windmill layers if you only want some subset.14:41
wallyworldderyck: too bad about the windmill tests being turned off again. i haven't had a chance to look. have you any more info?14:43
deryckwallyworld, no, I just haven't had a chance myself either.  Did Natty upgrade and some pain there and 360 reviews.14:44
deryckwallyworld, hope to look late today or tomorrow.14:44
* deryck is getting *very* frustrated with Windmill again14:44
wallyworldderyck: yeah, natty upgrade pain for me too. let's touch base again in a few days14:45
deryckwallyworld, sounds good.  I'm away W-F this week, if all goes well :-)14:45
wallyworldderyck: cool. most likely next week then :-)14:45
deryckindeed14:45
=== al-maisan is now known as almaisan-away
=== salgado is now known as salgado-lunch
abentleyderyck: Now landing my JS work.15:13
deryckabentley, awesome!  Thanks15:13
abentleyderyck: And failed out with a merge conflict :-(15:14
deryckoh the joys!15:26
* deryck misses the xchat blinking icon in Natty15:26
jmlgary_poster: hi15:35
gary_posterhey jml15:35
jmlgary_poster: on https://dev.launchpad.net/LEP/BetterBugSubscriptionsAndNotifications/FeatureReviewNotes, it says "unsubscribe in anger will be done" for Wednesday15:35
jmlgary_poster: what do you mean by "done" there?15:35
gary_posterjml, yes, that was apparently optimistic :-/15:35
jmlgary_poster: I had assumed so :)15:36
gary_posterjml, that was the only bad usage of "done" AFAIK.  I had intended it to mean coded.15:36
gary_posterjml, I have a pending question of two for you...15:36
gary_posterone of them is the email from gmb15:36
gary_posterabout a bug I can dig up15:36
jmlgary_poster: if a programmer tells me that an egg will be boiled in three minutes from now, I mentally increase that to six hours :)15:37
gary_poster:-)15:37
jmlgary_poster: will look up that email15:37
gary_posterthe other is that I should give you an update on unsubscribe in anger expectations, but I maybe should wait on that one until tomorrow or Wed, when we will have more of that infrastructure in place.15:38
gary_posterthank you15:38
gary_posterjml, I wondered if it would be easier to convey the crux of gmb's email (titled "Bug 424849, batched notifications, fun and games, etc.") orally.  If you think so, I'm happy to Skype/mumble briefly.15:40
_mup_Bug #424849: Launchpad should batch attachment notification emails <lp-bugs> <story-better-bug-notification> <story-better-notification-sending> <Launchpad itself:In Progress by gmb> <apport (Ubuntu):Invalid> < https://launchpad.net/bugs/424849 >15:40
jmlgary_poster: the main thing I don't get is why fixing bug 31586 would make it possible to batch multiple commented attachments.15:41
_mup_Bug #31586: Malone comments are sent in email and forge the address of the person who filed them <email> <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/31586 >15:41
gary_posterjml (I'm against that approach for a couple of reasons but...) it would help because then you could batch up *all* the comments on a particular bug.  So, solution 1 would let us batch comments/attachments from the same person for the same bug, and solution 2 lets us batch comments/attachments from the same bug--it should produce even less email.15:44
jmloh, I see.15:47
jmlgary_poster: sorry, it took me a while to see the obvious, that the email has to come from someone :)15:47
gary_poster:-)15:47
jmlgary_poster: multitasking is the mindkiller.15:47
gary_posterheh, too true15:47
jmlgary_poster: how much work are we looking at if we take option 1?15:50
gary_posterjml, we are guessing one developer, one week,  Maybe two devs, 3 days.  We really try not to make you have to inflate our guesses. :-)  The change itself should be relatively simple, a day-ish, but touching email sending can sometimes affect other parts of LP, so we are adding in time for problems of that nature.15:52
sinzuijcsackett: do you have a few minutes to mumble?15:58
jmlgary_poster: ok. I think we should take option 1 then.15:58
gary_posterjml, ack.  I'll put it on the board.  Thank you!15:58
jmlgary_poster: np.15:59
jcsackettsinzui: sure.16:06
=== salgado-lunch is now known as salgado
=== deryck is now known as deryck[lunch]
=== henninge_ is now known as henninge
henningebenji: I assume you claimed whatever you are working on?17:13
adeuringderyck[lunch]: could you have another look at https://code.launchpad.net/~adeuring/launchpad/bug-746460/+merge/56840 ?17:26
gary_posterhenninge or benji, I have a small-ish JS branch for you.  https://code.launchpad.net/~gary/launchpad/bug750561/+merge/5719517:26
henningegary_poster: here!17:27
gary_poster:-) cool thanks17:27
adeuring...or henninge, could you have a look at https://code.launchpad.net/~adeuring/launchpad/bug-746460/+merge/56840 ?17:28
henningeadeuring: I just accepted gary_poster's but I guess you are closer to EOD. I'll have a look at how big it is.17:29
adeuringhenninge: ok, np17:29
* gary_poster is closer to lunch...and hungry, too!17:30
gary_poster(that means nothing but silliness, in case it's not clear)17:30
deryck[lunch]adeuring, looks fine to me.  I would ask henninge or abentley for a second opinion on that one line removal in lib/lp/translations/tests/test_pofile.py....17:33
deryck[lunch]adeuring, I admit that I don't know the consequences of that either.17:33
adeuringderyck[lunch]: yeah ;)17:33
adeuringhenninge, abentley: It's a small request ;)17:34
henningealready looking at it17:34
=== beuno is now known as beuno-lunch
henningeadeuring: wow, didn't know about multiple "for" loops in list comprehension ...17:40
adeuringhenninge: erm.. where did you find this? (can't remember anything like that... ;)17:41
henningeadeuring: I just saw you only moved so you probably didn't notice.17:41
henninge+    >>> [hoary_package] = [17:41
henninge+    ...     package for series in view.series_batch.batch17:41
henninge+    ...     for package in series.packagings17:41
henninge+    ...     if package.distroseries.name == 'hoary']17:41
adeuringyeah, looks interesing ;)17:42
henningehttp://docs.python.org/tutorial/datastructures.html#list-comprehensions17:42
henningederyck[lunch], adeuring: This is the missing text:17:48
henninge    + Change upstream link17:48
henninge    + Remove upstream link17:48
henningeadeuring: does that fit with the new permissions?17:48
adeuringhenninge: well, I can add it back, but it does not have any effect....17:49
henningeThose two represent the edit and delete icons.17:49
adeuringwell, I would have to modify the test slightly17:49
henningehm?17:49
henningeadeuring: no, that's not what I mean.17:49
henningeadeuring: is the missing of the icons expected?17:49
henningethe way the test is now.17:50
henningeIf so, all is well.17:50
adeuringhenninge: ah, the ellipis stuff? that's expected17:50
henningeadeuring: yes, that is what the ellipsis represented.17:50
adeuringhenninge: and thanks for spottings the real difference ;)17:51
henningewell, it's what deryck[lunch] asked for ... ;-)17:51
adeuringhenninge: there is and odd change in test_pofile. That's our main concern17:51
henningeoh, right17:52
henningemixed that up17:52
henningeadeuring: that one looks like a copy&paste error. Thanks for fixing it.17:58
bigjoolsnight everyone17:58
adeuringhenninge: THANKS FOR FIGURING OUT WHAT WAS GOING ON ;)17:58
=== Ursinha is now known as Ursinha-afk
* adeuring should remove the caps-lock key...18:00
henningeadeuring: r=me on the incremental diff.18:08
adeuringhenninge: cool, thanks!18:08
=== deryck[lunch] is now known as deryck
=== Ursinha-afk is now known as Ursinha
=== beuno-lunch is now known as beuno
benjihenninge: did I claim a review you were already doing? (the garbo logging one)18:39
henningebenji: I had just started when gary and abel asked. So no doubled work.19:12
henningebenji: but it was unclaimed at the time.19:12
benjihenninge: sorry about that, I'll have to be more careful19:14
henningenp19:14
henningegary_poster: still lunching? ;)19:14
gary_posterno henninge :-)19:14
henningegary_poster: I'd like to see your branch in action. Can you give me a URL on dev?19:15
gary_posterhenninge, sure.  It will involve feature flags.  I'll get you a pastebin with details.19:15
henningegary_poster: I already copied the feature flags from production if those are the ones needed.19:16
gary_posterhenninge, ok, well, here are the details anyway :-) http://pastebin.ubuntu.com/592749/19:18
abentleyhenninge / benji, could you please review https://code.launchpad.net/~abentley/launchpad/fix-dummy-translations/+merge/5720819:19
benjiabentley: I'm finishing up a review now, so one of us will get it shortly.19:20
abentleybenji: great, thanks.19:20
henningegary_poster: ah yes, I can see it ;)19:22
gary_poster:-) cool19:22
* henninge remembers that Saturday was international day of Astronomy ...19:23
henningeI think it was international19:23
dobeyhenninge: i think every day is a day of astronomy. :)19:39
henningeyeah!19:39
gary_posterhenninge, FWIW, this is the follow-on branch to the one you are looking at.  https://code.launchpad.net/~gary/launchpad/bug750561-2/+merge/57216 .  It is very similar.19:47
gary_posterI can ask someone else to do it though, I expect it is your EoD already?19:48
henningegary_poster: yes, I will stop working after this.19:48
gary_postercool19:48
henningegary_poster: This bit looks interesting but I don't know what it does.19:48
henningehttp://paste.ubuntu.com/592764/19:48
gary_posterhenninge, this is the machinery I mentioned in the MP that adds the ability of our LPClient test stub to halt execution.  That lets the test see what the state of things looks like after a call has been made to, say, named post, but before the named post has a response and calls the success or failure callback.19:51
gary_posterYou resume the success or failure callback by calling .resume on the stubbed function/method/whatever you want to call it.19:51
gary_poster(And generally, that code is the heart of the LPClient test stub/mock, letting you specify for named_post and patch whether you want them to succeed or fail, and what arguments they should send back; and later letting you check the calls and arguments that it received)19:53
lifelessmoin20:05
lifelessstatik: are we on today?20:07
henningegary_poster: thanks for the explanations. r=me20:09
=== henninge changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: benji | https://code.launchpad.net/launchpad-project/+activereviews
gary_posterthank you henninge!20:12
gary_posterbenji, short-ish one for you.20:13
gary_posterhttps://code.launchpad.net/~gary/launchpad/bug750561-2/+merge/5721620:13
benjigary_poster: k20:14
gary_posterthank s20:14
benjigary_poster: review done20:31
gary_postercool thanks20:35
lifelesssinzui: ping - bug 75330620:44
_mup_Bug #753306: mailman doesn't shut down cleanly <canonical-losa-lp> <Launchpad itself:Triaged> < https://launchpad.net/bugs/753306 >20:44
sinzuiThat looks hard20:44
lifelesssinzui: tom has added a note to it about what the shutdown script runs20:45
sinzuiThat does not look like anything to do with launchapd20:45
lifelesssinzui: I'm figuring you probably know what it should run20:45
lifelesssinzui: strictly speaking its not, but its part of our environment, and not an upstream script or issue20:45
sinzuiI know the pipeline. We have a nice test that shows we reordered it20:46
sinzuiI think the issue here is that I think mailman waits for all the handlers/pipelines to complete what they are doing before shutdown is complete20:46
lifelessbarrrrrry!20:49
lifelesssinzui: so, what command *should* the losas be running to trigger a shutdown, and how long should they budget to wait20:50
lifelesssinzui: oh, good thought bringing barry in. I'll get my butt out now :)20:50
sinzuilifeless: I think I can make changes that barry recommends. He wrote the mailman-lp startup code. He may point out we lost something in a revision and advise me to put it back20:52
jcsackettthanks for the review, benji.20:57
benjimy pleasure20:57
LPCIBotYippie, build fixed!21:05
LPCIBotProject windmill build #163: FIXED in 1 hr 4 min: https://lpci.wedontsleep.org/job/windmill/163/21:05
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
=== Ursinha is now known as Ursinha-afk

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