/srv/irclogs.ubuntu.com/2010/08/11/#launchpad-dev.txt

wgrantHm, so staging just slept for 3 hours.00:01
thumperwgrant: everyone needs a break now and then :)00:05
lifelessI'm chatting to elmo about it. Or maybe just depressing him, I dunno.00:06
lifelessthumper: https://lpstats.canonical.com/graphs/OopsEdgeHourly/20100712/20100811/00:07
lifelesshttps://lpstats.canonical.com/graphs/OopsLpnetHourly/20100712/20100811/00:07
lifelesswgrant: so, staging did a 5.5 hour update00:17
wgrantlifeless: Looks like it did a 2.5 hour update, as usual.00:17
wgrantIt normally goes right back to checking for updates...00:18
wgrantOr was this case special, in that it logged completion then did more stuff?00:18
lifelesswgrant: that log doesn't log start + finish00:21
lifelesshttp://www.newscientist.com/article/dn19287-p--np-its-bad-news-for-the-power-of-computing.html00:24
wgrantlifeless: No, but look what it does normally.00:47
wgrantlifeless: It disappears for 2.5 hours, then logs the update.00:47
wgrantThen makes the next 14/44 check.00:47
lifelesshow does one subscribe on the dev wiki? I get an error about permissions01:05
lifelesswhen I do 'subscribeUser'01:05
wgrantlifeless: The subscribe action isn't shown.01:06
wgrantYou have to hack the URL.01:06
wgrant?action=subscribe01:06
lifelessso, we expose a subcribe action that doesn't work, and don't show the one that does?01:06
lifeless /win01:06
wgrantThat's correct.01:06
lifelesscould you please file a bug on that ?01:07
wgrantI think there might be on already.01:07
wgrantLet's see.01:07
wgrant('Subscribe User' is for admins to subscribe others)01:07
wgrantBug #58660101:08
_mup_Bug #586601: dev wiki toolbar has 'subscribe user' but not plain 'subscribe' <Launchpad Development Wiki Moin theme:Triaged> <https://launchpad.net/bugs/586601>01:08
thumperlifeless: I just go to the user preferences and edit the subscribed pages list01:15
* thumper looks for mwh01:31
lifelesshmm, prose is hard.01:52
lifelessI can has code?01:52
lifelessanyone want to read a draft? https://dev.launchpad.net/Performance01:52
lifelesshmm01:59
lifelessstaging go boom ?01:59
* ajmitch reads up on performance02:00
wgrantInteresting.02:01
wgrantI wouldn't have expected the update to finish for a while yet.02:01
wgrantOh, wait, yes it should have.02:01
lifelesswgrant: I'm not sure it has :P02:01
lifelessit still says 964402:02
wgrantIt's been updating to 9646 for nearly two hours.02:02
lifelesswhere are you looking02:02
wgrantsuccessful-updates.txt. 9646 was in db-stable at the time it should have started the last update, at 00:14 BST.02:03
wgrantIt would normally have finished the update a few minutes ago.02:04
wgrantBut it seems to be running slightly late. Or has failed during the restart. One of them.02:05
wgrantAh, it's back.02:05
wgrantr9646.02:05
lifeless\o/02:06
lifelesstime to see if the distroseries page is fixifies02:06
wgrantOddly late.02:06
lifeless\o/02:06
lifelessdidnae timeout02:06
wgrantAlso, why is it that staging takes longer to update than a full production rollout?02:06
lifelessno idea02:06
lifelesscheck the script02:07
lifeless... oh :P02:07
wgrantHeh.02:07
* wgrant tries getBuildRecords.02:07
wgrantHm, and both +distrotask fixes should be active now./02:08
* wgrant tries that too.02:08
wgrantAh, crap.02:15
lifelessnada?02:15
wgrantNo, it's nice and fast.02:15
lifeless\o/02:15
wgrantJust with a bug.02:15
lifeless /o\02:15
lifelesstop oops yesterdat02:17
lifelesson edge02:17
lifeless32 https://api.edge.launchpad.net/1.0/ubuntu/maverick (DistroSeries:EntryResource:getBuildRecords)02:17
wgrantThat should be fixed now.02:17
lifeless63 cases02:17
lifeless https://edge.launchpad.net/ubuntu/maverick/+index (DistroSeries:+index02:18
lifelesssecond at 1102:18
wgrantAlso, I hate doctests, particularly when they're not comprehensive.02:18
lifelesss/sive/sable/ ?02:18
wgrantNo.02:18
wgrantThe only tests for this method are doctests. And they don't cover the case that I missed.02:19
lifelesswhats the bug02:20
wgrantDistribution.guessPackageNames takes a package name, and tries to resolve it to a (sourcepackagename, binarypackagename) pair. It first tries to look up a source with the given name, then tries to find a binary within that source with the given name. If it can't find such a binary, it returns (sourcepackagename, None). If it can't find any published source with that name, it looks for a binary under any source. If it finds such a binary, ...02:22
wgrant... it then takes the binary's source name.02:22
wgrantNow, for that last case, order is critical, since binaries can move between sources.02:23
wgrantSo now 'libgcc1' maps to the 'gcc-3.3' source, rather than 'gcc-4.5' as it should.02:23
wgrantI dropped the (imperfect, but better than nothing) order from the old query.02:23
wgrantOops.02:24
lifelessah02:25
lifelessand perhaps the order is what made it work ?:)02:25
lifelessthumper: you have staging access right ?02:25
wgrantYes :(02:25
wgrantBut there are no tests.02:25
wgrantNasty thing.02:25
lifelessthumper: You might need to do explain analyses for wgrant, I've got to pop out @3:3902:26
lifelessbah 3:3902:26
lifelessbah 3:3002:26
thumperlifeless: I have school parent-teacher interviews this afternoon02:30
lifelessah, well poolie_ has turned up so he can do that too :)02:33
poolie_hi lifeless02:42
poolie_teacher-parent interviews? ok02:42
thumpermwhudson_: got a few minutes?02:42
lifelesspoolie_: no, explain analyze's for wgrant on staging02:42
mwhudson_thumper: yeah02:42
=== mwhudson_ is now known as mwhudson
thumpermwhudson: can you skype?02:43
mwhudsonthumper: perhaps :-)02:43
thumpermwhudson: I have a problem with the sftp acceptance tests02:43
wgrantI can has statement log from OOPS-1684S39?02:43
thumperand trying to work out where to start02:43
poolie_oops02:43
poolie_so lifeless, to update you on feature flags02:43
poolie_i think they passed all tests last night, aside from one to do with twisted test runners that looks timing dependent02:44
mwhudsonthumper: it appears i can skype02:44
poolie_i can't seem to get into my home server from spiv's house02:44
poolie_which is a bit annoying02:44
lifelesswgrant: 27 statements02:48
poolie_can we put wgrant into a team that lets him see oopses?02:48
lifelessno02:48
poolie_wgrant, if you want anything run, just ak02:48
poolie_*ask02:48
wgrantlifeless: I need to see one of the statements.02:48
lifelessthe problem is urls that reference private teams02:48
wgrantWell, a couple of them.02:48
lifelessand in future other things02:48
lifelesswgrant: any in particular, or do you want the full 2702:48
wgrantlifeless: Ideally the full 27.02:48
lifelessenjoy02:51
lifelesspoolie_: until we have automated stripping/identifying of those, we can't share it02:51
thumpermwhudson: found it03:16
thumpermwhudson: I was checking for path.startswith('.bzr/')03:16
thumpermwhudson: and the sftp server steps through '.bzr'03:17
thumperso no trailing slash03:17
poolie_lifeless,  can you try to re-send the feature flags branch, if you're happy with the later changes?03:19
mwhudsonthumper: :-)03:19
poolie_if you didn't do that last night03:19
lifelesspoolie_: 'release-critical' mode - launchpad has a 1 week stall03:20
lifelesspoolie_: no, we can't till friday03:20
lifelesspoolie_: I am happy with your changs though03:26
lifelesspoolie_: but as we want this for development going forward, not for something on lpnet immediately, I think its non-rc03:26
lifelesspoolie_: once its landed we can use it on edge immediately, which will be sufficient till edge->lpnet, and at that point it will be universally available03:27
lifelessspiv: https://bugs.edge.launchpad.net/launchpad-code/+bug/8483803:28
_mup_Bug #84838: code browser should use oops system <Launchpad Bazaar Integration:In Progress by spiv> <https://launchpad.net/bugs/84838>03:28
lifelessspiv: is the bug status stale ?03:28
wgranthttps://code.edge.launchpad.net/~wgrant/launchpad/bug-616154-guessPackageNames-order-fix/+merge/32285 is RC. db-devel closes soon. What do I do?03:29
thumper:(03:31
lifelesswgrant: please add it to https://dev.launchpad.net/CurrentRolloutBlockers03:32
wgrantAh.03:33
thumpermwhudson: it seems that faults raised in the xmlrpc server *DO NOT* cause a transaction.abort03:33
lifelessI'm sending it to ec2 land now03:33
mwhudsonthumper: raised or returned?03:33
mwhudsonthumper: but either way :(03:33
mwhudsonthumper: i can probably tell you where to fix this, btw03:34
thumpermwhudson: I'm tempted to use the @return_fault adapter and have a try except block03:34
thumpermwhudson: fix the cause perhaps?03:34
* thumper shakes head03:34
thumpernot what I ment03:34
thumperfix at the root?03:34
thumperENOTENOUGHSLEEP03:35
lifelessthumper: can you 'approve' that merge above, ec2land is whinging03:35
mwhudsonthumper: PublicXMLRPCPublication.endPublication in servers.py?03:35
lifelessthumper: we need release-critical *and* a normal approve, or it blows up03:35
thumperlifeless: --force03:35
lifelessno03:35
lifelessdifferent bug03:35
lifelesshumour me03:35
thumperah, which?03:35
lifelessec2 land https://code.edge.launchpad.net/~wgrant/launchpad/bug-616154-guessPackageNames-order-fix/+merge/32285 --force03:35
lifelessec2: ERROR: Cannot land branches that haven't got approved code reviews. Get an 'Approved' vote so we can fill in the [r=REVIEWER] section.03:35
lifelessit has an approval from me03:35
lifelessbut its labelled 'release-critical' (which it has to be to get past pqm)03:36
wgrantI suppose I need to mark the original bug qa-bad, too.03:36
wgrantIs there anything special involved in that?03:36
thumperdoen03:36
lifelessthumper: thanks03:36
thumpermwhudson: how do we know whether to commit or abort?03:38
mwhudsonthumper: i'm now confused03:38
mwhudsonthumper: an excellent question03:38
lifelessthumper: https://bugs.edge.launchpad.net/launchpad-foundations/+bug/61616403:39
_mup_Bug #616164: ec2 land refuses to land approved rc patch <Launchpad Foundations:New> <https://launchpad.net/bugs/616164>03:39
thumpermwhudson: publication afterCall03:39
lifelesstransaction.doom() ?03:40
mwhudsonthumper: but it only seems to abort for a read-only request or for a doomed transaction03:40
mwhudsonah right03:40
thumperdoom?03:40
lifelesswhen something goes wrong we doom the transaction03:40
mwhudsonit doesn't seem that simply raising an error causes an abort03:40
lifelessif we try to commit a doom transaction storm blows up as a safety measure03:41
thumpermwhudson: no...03:41
mwhudsonunless there's a doom() in there somewhere03:41
* mwhudson greps03:41
lifelesswhats up?03:42
thumperlifeless: I have a method in the xmlrpc server that tries to create a branch and link it03:42
thumperlifeless: the branch is created, the link fails due to permission checks03:42
thumperI expected the transaction to be aborted03:42
thumperbut it isn't03:42
lifelessfun!03:42
lifelesswhat sort of permission check03:43
thumperlaunchpad.edit on the product03:44
thumperI can manually abort it03:44
thumperbut it seems weird that I'd have to03:44
lifelessdo you catch it ?03:45
thumperI would have thought that if the xmlrpc server is returning a fault, that it would be aborted for me03:45
lifelessor rather how far up is it propogating03:45
thumperlifeless: I catch it to return a fault03:45
lifelessthen you have to abort03:45
lifelessI'm pretty sure we don't glue returned objects to db aborts03:45
thumperI can.03:45
thumperok03:45
lifelessnot saying we shouldn't, just that thats my understanding03:45
thumperfaults are special though aren't they?03:46
mwhudsonreally03:48
mwhudsonwe should fix the problem that makes raising a fault cause an oops in the logs03:48
lifelessthumper: a raised object would trigger an abort I think, not a returned one.03:49
mwhudsonmaybe it should just log an informational oops03:49
lifelessmwhudson: why shouldn't it have the same rules as web server oops03:49
lifelessmwhudson: that is, we apply logic to it ;)03:49
mwhudsonlifeless: not sure quite what you're asking, suspect only having square tuits though03:50
lifelessI mean we don't file OOPS for permission issues on the main appserver03:51
mwhudsonright03:51
lifelessif you try something naughty, tsk, your problem.03:51
thumperclucking bells03:58
* thumper afk for school stuff04:02
spivlifeless: no, in that I still haven't spoken to the losas about the production config for it04:03
lifelesspoolie_: lynne has bought red dead redemption for ps3 :) (and we've bought a ps3)04:03
lifelessspiv: can you please shoot that mail off to losas @ c.c then ? that should be trivial to do...04:03
spivlifeless: ok, although I feel a bit like I'm drowning in distractions from the bzr bug I'm working on :/04:04
lifelessSo, the reason I'm nagging is that its not clear in the bug what needs to happen next; noone else can move it forward without chatting with you.04:05
lifelessIf you make it clear there, someone (me?) will move it forward sometime, otherwise its going to stay in your pile indefinintely.04:05
lifelessAnd I must go, builder to give instructions to.04:07
lifelessBBIAW04:07
poolie_lifeless, i think that means i can't shoot lynne :-(04:08
spivlifeless: that's fine, just grumbling to the world in general rather than you04:08
poolie_being on a ps304:08
spivlifeless: thanks for the nag04:08
poolie_lifeless, nice performance doc, though i have to confess the "3*SD + mean" really squicks me for some pedantic reason04:08
poolie_i wish it just computed the 99% value04:09
poolie_lifeless>> caches (unlike memos) are populated by the first request for the data04:09
poolie_isn't that exactly what a memo does?04:10
=== Ursinha is now known as Ursinha-afk
lifelessspiv: thanks07:24
poolie_<poolie_> lifeless>> caches (unlike memos) are populated by the first request for the data07:27
poolie_<poolie_> isn't that exactly what a memo does?07:27
poolie_also07:27
poolie_<poolie_> lifeless, nice performance doc, though i have to confess the "3*SD + mean" really squicks me for some pedantic reason07:27
poolie_<poolie_> i wish it just computed the 99% value07:27
lifelesspoolie_: so do I07:27
lifelesspoolie_: I plan to hack on it some shortly07:28
poolie_that would be nice07:28
poolie_in particular if we have just a few outlier results (because they do hard io, or they miss a normally-reliable cache) there might be a big difference07:28
poolie_briellant07:28
lifelesspoolie_: you might like the email I just sent off07:30
lifelesswgrant: your branch has landed07:30
lifelesswgrant: sorry, it has ec2 passed, pqm time now07:30
lifelesspoolie_: I'm not sure that 99% != mean+3SD here. I know it *might not*, but actually its pretty accurate so far when I have compared07:31
lifelesspoolie_: as for memoisation vs caching; I'm trying to distinguish things that are redundant that we store in advance vs things that are redundant that we calculate just-in-time-and-remember07:32
lifelesspoolie_: better terms appreciated07:32
wgrantlifeless: Thanks.07:36
jtvlifeless: just made some superficial changes to your new Performance wiki page…  to be clear: are the cases of "its" where I'd expect "it's" mistakes (as I believe they probably are), or is there a rationale behind it?07:43
jtvlifeless: also, it may be worth mentioning the distinction between responsiveness and completion speed earlier on.07:44
stubThe report is two wide already, so +1 replacing columns with something more generally useful.07:46
jtvlifeless: then, where it says the bugs database is write-only, do you mean append-only?07:46
jtvstub: wrong window?07:47
lifelessjtv: thanks07:50
lifelessjtv: I'm terrible on my its'07:50
lifelessjtv: what bit of the distinction would you put earlier? just the idea of responding quickly, doing the work, then completing ?07:52
jtvlifeless: no, the point about getting a response not meaning that you're all done—e.g. "loading the page a bit faster at the cost of having parts follow a bit more slowly is a win in responsiveness whenever the user doesn't feel held up by the slower bits."07:56
jtvI believe you mention this under memoisation, where the relevance isn't immediately clear to me tbh07:57
jtv(look for "red flag")07:57
jtvBTW don't worry about the "it's"; I went through all the itses on the page.07:58
lifelesswgrant: its through pqm now07:58
jtvit's!07:58
jtvit's through pqm!07:59
lifelesssee, terrible07:59
jtv:-)07:59
lifelessjtv: ah yes07:59
lifelessdoing background processing in an interactive context08:00
lifelessthe caveat being that sometimes we have to do it to be 'complete'08:00
jtvlifeless: saw a good point about responsiveness back in the 20th century: the important thing is that you know that things are going on and can sympathize—at the time a flurry of disk seeks was very audible but an http connection to (as I believe the poster put it) Outer Mongolia was not.08:02
lifelesslol! I love it!08:03
lifelessdid they have a wav file of chattering disks ?08:03
jtvSo waiting 10s for disk seeks was fine, but waiting 7s for a page to load was not.08:03
jtvlifeless: this was in the days when you didn't just add some huge binary file just for the hell of it.08:04
jtvIt was also in the days when anyone likely to read the message could easily produce the noise for themselves!08:04
henningejtv: https://code.launchpad.net/~henninge/launchpad/bug-595925-second-attempt08:36
henningejtv: The last revision makes the Windmill test fail in a strange way and I don't have a clue.08:37
jtvhenninge: diff generation is broken today… do you have a diff somewhere?08:41
henningejtv: shure. Hang on...08:43
* henninge turns on speakers for a start08:43
=== almaisan-away is now known as al-maisan
henningejtv: http://paste.ubuntu.com/476320/08:49
* jtv looks08:49
henningejtv: I included the first part from the factory so you can see what makeSuggestion does.08:49
henningejtv: The windmill test produces an OOPS with this change.08:50
henningelemme do that again08:50
adeuringgood morning08:50
jtvhi adeuring08:51
henningeadeuring: Hallo!08:51
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
jtvhenninge: what kind of oops does it give you?08:54
henningejtv: here is the test command and the oops that appears in the windmill browser window:08:54
henningehttp://paste.ubuntu.com/476322/08:54
jtvhenninge: nasty traceback.08:55
henningewhat is a "LocationError" about, anyway?08:55
jtvdamned if I know08:56
jtvBut I would guess that the problem is that we're creating a TM without a pofile.08:56
henningeWe do?08:56
jtvIn this case, yes.08:56
jtvBut we never completed the new +translate page, so we have some hacked-in workarounds that rely on the field being set.08:57
jtvAgain theoretically, we set those completely in-memory without bothering the database, but as I found in my experiments a few months back, nulling the database field will produce oopses.08:58
lifelessstub: remind me where the ppr code is again ?09:00
henningejtv: so I'd have to check the view code to see where it uses tm.pofile?09:01
stubutilities/page-performance-report.py (half are reports are in utilities and half in scripts)09:01
jtvhenninge: it might be anywhere09:01
henningeouch09:01
lifelessstub: thanks09:01
jtvhenninge: otp09:01
jtvhenninge: and so should you be :)09:02
lifelessstub: now, I'm thinking of doing a 'timeout-candidates summary09:02
lifelessstub: showing just page ids and 99%09:02
lifelessstub: is that controlled entirely in the source, or is it going to be partly how its deployed?09:02
lifelessstub: and, do you think such a summary can be published publically ?09:02
stubconsider dropping the varience and stddev columns09:02
stubI can't see what we consider private on the existing report.09:03
lifelessstub: top-urls09:03
stubOh, right.09:03
lifelessthe urls might be for a private team like ~vendor-supplier or something09:03
lifelessstub: 'just page ids and 99%' includes dropping the mean and stddev :)09:04
stubpage-performance-report-daily.sh is the script I run each day to generate the reports in the relevant locations09:04
lifelessok09:05
stublifeless: I mean that the variance and stddev might be irrelevant if we output the 99% on the existing reports09:05
lifelessstub: ack09:05
lifelessstub: uhm, I think they are useful to have somewhere09:05
stubOr maybe JS love to hide unwanted columns might be better09:06
lifelessotoh the graph is a pretty good visual aid for same09:06
lifelesshmm thats interesting09:16
lifelesswhat happened on the 29th https://lpstats.canonical.com/graphs/OopsLpnetHourly/20100712/20100811/09:16
lifelesssomething causing both exceptions and timeouts got changed09:16
lifelessmrevell: I'm happy with your changes to the oops wiki page btw09:18
mrevellHello09:18
lifelessmrevell: thank you for doing them!09:18
stublifeless: maybe me rebuilding the bug full text indexes?09:18
lifelessstub: could be it09:18
lifelessnothing leaps out at me from the production-stable branch changelog09:18
mrevellThanks for writing it lifeless!09:19
bigjoolsmorning all09:20
lifelessmorning bigjools09:20
* bigjools loves seeing last minute RCs09:26
wgrantbigjools: Sorry :(09:27
bigjoolsc'est la vie09:30
lifeless!oops09:39
lifelessstub: am I correct - no tests for the script ?09:44
stublifeless: Yes.09:55
lifelessstub: how can I be sure I haven't stuffed it up ?10:02
lifelessstub: or will you do that if I get you something approximate ?10:02
stubI've run it against a log and looked at the output.10:02
stubWe could write a test for it, but it would be incredibly fragile.10:03
stubSo put if off until it stabalized10:03
lifelesslp:~lifeless/launchpad/foundations - I added a column (sorry!) but it should give us one report most devs can focus on.10:04
lifelesswhich will be pretty short10:04
stubSo that will need a merge proposal10:05
lifelessfiring one up10:06
lifelesshttps://code.edge.launchpad.net/~lifeless/launchpad/foundations/+merge/3229910:08
stubnumpy doesn't have a magic 99th percentile helper?10:10
stubdoesn't look like it10:11
lifelesshttp://docs.scipy.org/doc/numpy/reference/routines.statistics.html is less than completely helpful10:14
elmohttps://pastebin.canonical.com/35707/ <-- it may be trivial/obvious, but there's one I had to hand, FWIW10:18
lifelesselmo: hah! thanks.10:18
lifelessI'm using stddev*3 + mean atm10:18
lifelesswhich may be more useful10:18
lifelessas grabbing the Nth can be much higher/lower than the curve fitted approach10:19
stubBeyond my recollections of high school anyway.10:20
stubNeed food.10:20
bigjoolsmrevell: when logging in to the dev wiki, it doesn't redirect back to the page you were on, do you know if that's fixable?10:58
mrevellbigjools, Yeah, that's a pain. I don't know if it's fixable but I can certainly ask.10:58
bigjoolsok cheers10:59
wgrantbigjools: I would have loved to rewrite the doctest, but I opted for a less invasive change as a last-minute RC!11:01
bigjoolswgrant: I know, it's the right thing in this case11:01
bigjoolsdoesn't stop me being sad about it though :)11:02
wgrantHeh.11:02
lifelessgmb: hi11:18
lifelessgmb: I think it was a bug of yours I touched today - about +filebug timing out doing large blobs.11:18
lifelessgmb: I wanted to check that that is out of the webapp request now ?11:19
gmblifeless, Err, let me check...11:22
gmblifeless, In that case it's just that the dependencies are done. At the moment the polling (such as it is) is by way of a page refresh.11:24
gmbI'll note that on the bug.11:24
lifelessgmb: there were two11:24
lifelessgmb: thanks for adding a note to the one about the polling11:24
lifelessthe other bug I closed off which was tagged timeout because of those blos11:25
lifelessblobs11:25
lifelessI figure that that is fixed, no ?11:25
gmblifeless, Can you give me a number for the other bug?11:25
* gmb might have marked it as read by mistake11:26
lifelesshmm11:27
lifelessgmb: https://bugs.launchpad.net/malone/+bug/35790711:33
_mup_Bug #357907: +filebug is timing out when processing large blobs <timeout> <Launchpad Bugs:Fix Released> <https://launchpad.net/bugs/357907>11:33
gmblifeless, Yes, that's fixed.11:34
lifelessmrevell: hey, so the changes to the +filebug and answers search  - I documented them reasonably well, but there isn't a blog post ready-to-roll with the release.11:42
lifelessmrevell: how do you feel about writing that up, so that in the release folk aren't taken aback ?11:42
lifelessmrevell: failing that, I'll be up for the team leads meeting tomorrow am and can make writing a blog post a priority then, but I may need a hand connecting to the lp blog etc etc, if you could email me the necessary that would be grand.11:44
mrevelllifeless, Heh, I had it on my list for today to email you about those. I can write the posts. To summarise, rather than getting 10 or so results in the dupe-finder you're more likely to get 3 or 4 and the results may be slightly different to what you'd have seen before. Is that right?11:44
lifelessmrevell: user visible behaviour - yes, thats right.11:44
lifelessslightly different *should* be 'more relevant'11:44
lifelessas in, yes its different, but we hope its better too.11:44
lifelessits /also/ much faster.11:44
lifelesslike 15 seconds faster for /ubuntu/+filebug11:45
mrevelllifeless, Cool :) What would be really helpful to me, if you have time, would be a quick email with very rough notes on this. Or just paste them here are you are now :)11:45
lifelessfor many searches11:45
lifelessso the arch is11:45
lifelessarc11:45
lifeless+filebug and answers were both performing terribly, with the search engine at the core11:45
lifelesswe're going to replace the search engine, but that takes time - and by horribly I mean timing out *a lot*. Nearly unusable.11:46
lifelessSo as a band aid we've made the searches with the current engine narrower.11:46
lifelessThis makes it faster, and - due to how we've changed it - slightly more relevant at the same time.11:46
lifelessWe *can* switch this off easily if we have to, so we *do* want feedback about how people find this.11:47
mrevellCool. This is very helpful, thanks. Can you give me some detail of how you've changed it? Also, what's the best way for people to provide feedback to you?11:47
lifelessWe *want* to stick with the band aid for 5-6 months while we replace the search engine.11:47
lifelessThe change specifics11:47
lifelessthe old search did a pre-pass over *every possible hit*, which is 400000 items for ubuntu - thats very slow to do, and then did a search matching *any document* which had a rare search term in it.11:48
lifelessWhere rare == 'turns up < 50% of the possible hits'11:48
lifelessso if you searched for firefox crashes on <website> in flash11:49
lifelesson /ubuntu/+filebug11:49
lifelessit would search for any bug with *any of* 'firefox' (< 50% of bugs are firefox), 'crash' (<50% of bugs say crash), '<website>' (<50%...), 'flash' (< 50%..)11:50
lifelesshowever, *many many* bugs mention firefox, *and* many many bugs mention crash and many many mention flash11:50
lifelessso the total the search return could be 10000 or 100000 quite easily11:51
lifelessand - unlike other search engines - the more terms you typed in, to make it more precise, the *less precise* it became.11:51
lifelessbecause it started bring back bugs from anywhere that happened to mention any search term11:51
lifelessand the relevance weighting - well, it added confusion to it.11:52
lifelessWhat we do now is:11:52
lifelessif you sesarch for firefox crashes on <website> in flash11:52
lifelesswe search for any bug continaing 3 of the 4 non stopwords11:52
lifelessthat is firefix,crashes,website,flash - if a bug mentions any 3, it will be returned.11:52
mrevellThanks Rob.11:54
mrevelllifeless, As for the LP blog ... it's hooked into LP's OpenID stuff, so you need to log in at https://blog.launchpad.net/wp-admin (igoring the invalid cert) and it'll generate an account for you. I can then upgrade that to author status.11:54
lifelesscontacting us about this? launchpad-users list, tweet to launchpadstatus, faccebook page, irc11:55
lifelessI'll take point on any heat11:55
lifelessbut I think we'll all be interested in feedback11:55
lifelessmrevell: I've logged in with openid11:56
deryckMorning, all.11:57
mrevelllifeless, Okay, you should now be able to makes posts on the blog.11:57
mrevellHowdy deryck.11:57
lifelessthanks mrevell11:58
lifelessI'll give that a spin on the next bit I redefine from ground up :)11:59
lifelessgnight11:59
deryckgmb, your heat timeout patch is on staging now?11:59
mrevell:) Night Rob.11:59
=== mpt_ is now known as mpt
lifelessderyck: I qa'd the heat timeout patch12:07
* lifeless finds leaving the keyboard tricky12:07
deryckheh, ok, thanks.12:07
deryckWas just curious since the timeout was blocking other qa for me.12:08
lifelessderyck: (I mentioned it in the patch :P)12:08
lifelesss/patch/bug/12:08
bigjoolswgrant: still around?12:10
wgrantbigjools: Sure.12:12
bigjoolswgrant: your fix got through buildbot, I'm going to see if I can get staging refreshed so you can QA it12:13
wgrantbigjools: That would be excellent. Thanks.12:13
bigjoolswgrant: losas are at lunch I think, are you around much more today?12:21
wgrantbigjools: I'll be around for another 2-3 hours at least.12:22
bigjoolsgreat, thanks12:22
=== didrocks1 is now known as didrocks
deryckI *really* wish we didn't do subscriber notifications in app.12:41
bigjoolstotally12:43
bigjoolsderyck: we have the same problem, indirectly.  When accepting packages that close bugs it calls your notification code.12:44
deryckyeah, it bites everyone.  I think that's what killed sinzui's one-click release work.12:45
wgrantWhat's the time spent on? Creating BugNotificationRecipients?12:47
deryckwgrant, yes, mostly there12:49
sabdflhi folks, do the project aliases enable redirects? if i rename a project from foo to bar, with foo as an alias, will stuff just work? only care about bug links12:49
maxbI know they do for https://launchpad.net/<foo> links12:54
jelmersabdfl: hi. Yes, they enable redirects. https://bugs.launchpad.net/alias/+bug/42 will redirect to https://bugs.launchpad.net/name/+bug/4212:54
_mup_Bug #42: Bug description listed in task is not the correct description <Launchpad Bugs:Fix Released by bradb> <https://launchpad.net/bugs/42>12:54
_mup_Bug #42: Bug description listed in task is not the correct description <Launchpad Bugs:Fix Released by bradb> <https://launchpad.net/bugs/42>12:54
=== matsubara-afk is now known as matsubara
sabdflbrilliant, thanks jelmer12:56
sabdflnow that we've solved bug #42, everything else should be easy :-)12:56
_mup_Bug #42: Bug description listed in task is not the correct description <Launchpad Bugs:Fix Released by bradb> <https://launchpad.net/bugs/42>12:56
wgrantbigjools: Hm, it's not there yet.12:58
bigjools:/12:58
wgrantI need r964812:58
wgrantIt's r9647 now.12:58
bigjoolswgrant: check again in a while, it'll update soon13:01
wgrantbigjools: ... and take 2.5 hours to do so :/13:01
bigjoolswgrant: 20 minutes13:02
wgrantAh, that's a little better.13:02
stubsabdfl: Yes. https://bugs.edge.launchpad.net/launchpad-translations/+bug/615673 for an example.13:13
_mup_Bug #615673: IPOTemplate.path says it's not required <oops> <Launchpad Translations:Triaged> <https://launchpad.net/bugs/615673>13:13
=== al-maisan is now known as almaisan-away
=== mrevell is now known as mrevell-lunch
=== Ursinha-afk is now known as Ursinha
wgrantbigjools: staging's been saying 'Code Update In Progress' for nearly half an hour now...13:44
jelmerstub: hi. Can you allocate a database patch id for me?13:45
stubjelmer: lp:~jelmer/launchpad/613468-xb-ppa-db ?13:46
jelmerstub: yep13:46
stubReviewed. Suspect that won't be landing this cycle though.13:48
marswgrant, staging code updates take an average of 100 minutes13:51
marswe have a graph of it13:51
wgrantmars: It's always down for the whole time?13:52
marsThat I do not know13:52
bigjoolswgrant: ok I'm chasing it, thanks13:59
=== almaisan-away is now known as al-maisan
jelmerstub: No, that wasn't the intention. Thanks.14:00
=== mrevell-lunch is now known as mrevell
bigjoolswgrant: can you QA that bug on dogfood?  it's up to date14:35
bigjoolsstub: did you get any ideas with that query that's timing out?14:35
wgrantbigjools: DF still says r9644.14:37
bigjoolswgrant: ignore it14:37
bigjoolsI didn't rebuild the revision file, it takes too long14:37
wgrantAh, heh.14:37
bigjools(as it rebuilds the wadl too)_14:37
wgrantThe fix is good.14:37
bigjoolsyay14:38
salgadoEdwinGrubbs, IIUC, you'd then run that query once for every superteam, is that right?14:56
EdwinGrubbssalgado: oh, I didn't think about that. If the superteam is a member of another super-super-team, you have to update its teamparticipation also. bleh.14:58
EdwinGrubbssalgado: it might be possible to get that to run in a single query if I just join teamparticipation table with itself. It would be a joining a list of all the new members with all the new superteams.15:00
EdwinGrubbsof course, the performance impact of that could be surprisingly high.15:01
wgrantbigjools: Anything else before I disappear?15:03
bigjoolswgrant: no, thanks for hanging around15:03
bigjoolssleep well15:03
wgrantThanks.15:03
wgrantNight.15:03
stubbigjools: Can you run on dogfood: explain analyze SELECT COUNT(*) FROM BuildFarmJob15:16
stubJOIN PackageBuild ON PackageBuild.build_farm_job = BuildFarmJob.id15:16
stubJOIN Archive ON PackageBuild.archive = Archive.id15:16
stubWHERE BuildFarmJob.builder = 106;15:16
bigjoolsstub: yep, one sec15:17
bigjoolsstub: http://pastebin.ubuntu.com/476455/15:18
stubbigjools: So the weird way of doing the join was slowing things down15:19
bigjoolsfigures15:19
bigjoolsnoodles775: ^15:20
bigjoolsthanks stub15:20
noodles775stub, bigjools: erm, doesn't it need to be a left join? (not all BuildFarmJobs have a related PackageBuild)15:26
noodles775s/have/will have15:27
* noodles775 looks for the code.15:27
stubnoodles775: Hmm15:28
noodles775bigjools, stub: see comment in lp/buildmaster/model/buildfarmjob.py:BuildFarmJobSet.getBuildsForBuilder15:29
stubSo the actual query should just be 'select count(*) from buildfarmjob where builder=106;'15:29
jtvbigjools: then why did you ask in -code?15:30
bigjoolsjtv: because I suck15:30
jtvstub: heh… we both converted the join but you converted to inner-join whereas I left out Archive.  Together we should rule.15:31
noodles775stub: if we updated the count to include private builds (and just display them as 'Private build' on the history, yes. But currently (we don't know the history) it only displays the builds you are allowed to see... hence the joins.15:31
stubI never use implicit outer join so misparse 'left join'15:31
jtvstub: doesn't your version change the zero case though?15:32
stubnoodles775: But that isn't the query we are looking at15:32
jtvAnd it often pays to keep "private, visible" queries completely separate from "public" queries.15:33
noodles775stub: I think it is..., if you check the code, you'll see why what you're expecting is missing (the oops was generated by a df admin, so it doesn't bother adding the extra where clauses)15:33
stubI can't really optimize a partial query15:34
noodles775I'll generate one as a non-admin.15:34
danilosstub, you are lame, I can optimize even bits like "FROM Prod" ;)15:35
jtvdanilos: go play with mysql—the /real/ men are talking here15:36
* danilos blinks and powers up mysql15:37
jtvdanilos: you did realize I was joking, right?  I wouldn't do that to you.15:38
danilos:)15:38
jtv(So once it's started up, please just shut it down again)15:39
danilos(aptitude is still installing it, how do I break that?)15:39
bigjoolsdon't use aptitude? :)15:40
jtvPull all plugs and cables out, then wait for battery to drain if applicable.15:40
noodles775stub: I've added https://pastebin.canonical.com/35735/ to the bug - an oops for the same page when logged in as a non-admin.15:44
stubexplain analyze SELECT COUNT(*) FROM BuildFarmJob15:45
stubLEFT OUTER JOIN PackageBuild ON PackageBuild.build_farm_job = BuildFarmJob.id15:45
stubLEFT OUTER JOIN Archive ON PackageBuild.archive = Archive.id15:45
stubWHERE BuildFarmJob.builder = 106;15:45
stubThat has a much nicer explain on production15:45
jtvstub: I have a feeling I was responsible for the COALESCE…15:53
stubnoodles775: Do you know what the constants would be in the COALESCE(Archive.private, ???) = ???15:53
noodles775stub: nope, I just followed jtv's review.15:53
=== deryck is now known as deryck[lunch]
stubThey wouldn't have been in jtv's review...15:54
jtvstub: it was a boolean15:54
stubTrue or False?15:54
stubI'm guessing False15:54
jtvbigjools would know15:54
bigjoolscan point me at the code for context?15:54
jtvhttps://pastebin.canonical.com/35735/ I believe15:54
* bigjools tries to work out wtf that is in the code15:55
jtvbigjools: this is the bit you asked me about isn't it, where I suggested COALESCE?15:56
stubYes, false15:56
bigjoolsjtv: different query I think15:56
jtvah15:56
stublib/lp/buildmaster/model/buildfarmjob.py15:56
jtvstub: so in that case, Archive.private IS NOT FALSE would do as well?15:57
stubSo we are just trying to return the number of buildfarm jobs that are visible?15:57
bigjoolsyes15:57
bigjoolswe should be returning all of them and displaying private ones differently really, but that's another matter15:57
jtvstub: you're right, the %s must be false15:57
jtvIn which case, leaving out that join can still make sense here15:58
stubexplain analyze16:01
stubSELECT COUNT(DISTINCT BuildFarmJob.id)16:01
stubFROM BuildFarmJob16:01
stubLEFT OUTER JOIN PackageBuild ON PackageBuild.build_farm_job = BuildFarmJob.id16:01
stubLEFT OUTER JOIN Archive ON PackageBuild.archive = Archive.id16:01
stubLEFT OUTER JOIN TeamParticipation ON TeamParticipation.team = Archive.owner16:01
stubWHERE16:01
stub    BuildFarmJob.builder = 10616:01
stub    AND (Archive.private IS FALSE OR TeamParticipation.person = 1)16:01
stub(I'm not sure of who a suitable owner would be, so using '1')16:01
jtv(note to self: I was talking nonsense earlier)16:01
bigjoolsnoodles775: I am guessing that we won't be able to make a branch for this in the next few minutes.16:02
noodles775Thanks stub: I'll try the storm equivalent.16:02
noodles775bigjools: no.16:02
bigjoolsnoodles775: ok, we'll have to release with this broken, and do a re-roll or CP16:02
bigjoolshow it got broken is a good question though!16:03
jtvbigjools: I don't suppose you could dig up an older oops with the pre-broken query?16:04
stubIt might just be the data changing things. My query could suck for instance if we end up with archives owned by a team with a large membership.16:04
noodles775As per the bug, the data that we know changed on dogfood/staging is that we now have other types of BuildFarmJob's... but there could be other data changes too of course.16:05
bigjoolsah of course, new job types trying to get displayed16:06
jtvI don't see job types playing here, at least not directly16:08
jtvbigjools, stub, noodles775: actually, looks to me like the "flattening" of that Archive join at least is very easy to do.  It's explicit in the code.16:12
jtvleft_join_pkg_builds… defined then used immediately, and never again.  Contains the whole drama.16:13
stubMight be worth someone running that explain on dogfood though... the plan on production looks ok, but that isn't terribly useful since the problem is on dogfood.16:14
noodles775jtv: easy to do in storm? Great... can you paste an example? And what do you mean never again? (isn't it required for the later conditions on archive.private?16:15
noodles775stub: doing so now.16:15
jtvnoodles775: just saying there are no boundaries of encapsulation, responsibility etc. to complicate changing this.  Hang on.16:15
=== matsubara is now known as matsubara-lunch
noodles775stub: https://pastebin.canonical.com/35741/16:17
stubok - that seems good for dogfood.16:18
jtvhmm this rain is _cooling_ my laptop, but is it good for the laptop _overall_?16:18
stubThere is an alternative version where we remove the DISTINCT and do the teamparticipation check in a subquery16:18
stubyou have rain? Its hot outside here.16:19
jtvstub: I'm North of you, but not far16:19
jtvNot a lot of rain, mind you; just enough to make the screen a bit harder to read16:20
stubYup. Dry here. I think you have a leak.16:20
jtv(I'm in front of the house, under an awning and further shielded by those big umbrellas we used to have out on the balcony in Din Daeng)16:21
jtvnoodles775: this is definitely not my first litre of beer, so I may not be the right person to rewrite your storm query right now.  But if you look at BuildFarmJobSet.getBuildsForBuilder, you see essentially the whole problem query spelled out, inner-join-nested-in-outer-join and all.  If you can rephrase that, you've got stub's change.16:22
noodles775jtv: yes, I'm in the process of converting it now based on stub's query above.16:23
jtvdelightful16:23
=== Ursinha is now known as Ursinha-lunch
jtvnoodles775: what sort of row counts would you expect out of this?16:27
noodles775jtv: if it helps, the review discussion we had is here: http://irclogs.ubuntu.com/2010/06/16/%23launchpad-reviews.html#t15:2616:27
jtvSo that *was* the Coalesce I suggested, just not to bigjools!16:28
noodles775Yep, that's what I meant earlier when I referred to the review.16:28
jtvright—got it now.16:29
jtvMy God, did I really spell it as FULLYBUILD?16:29
=== salgado is now known as salgado-lunch
=== Ursinha-lunch is now known as Ursinha-brb
leonardrjames_w, question about your launchpadlib test failures17:20
james_whi leonardr17:20
leonardrare you also getting test failures in toplevel.txt where httplib2 prints out debug messages when it's not expected17:20
leonardr?17:20
=== matsubara-lunch is now known as matsubara
=== beuno is now known as beuno-lunch
leonardrwgrant, would you try running the tests with lp:~leonardr/launchpadlib/616055 and see if the test failures all go away?17:42
james_wleonardr: yes, that was one of the bug reports I filed I thought17:46
james_wleonardr: it appears to now GET earlier than the tests are expecting17:46
leonardrjames_w: ok, try the new branch and everything should work17:47
james_wleonardr: your cover letter should probably explain how to get launchpad to use that branch when running the tests. Just running the command there will run the old version.17:50
james_wleonardr: anyway, they are running, I'll let you know after lunch17:54
leonardrjames_w: great17:55
=== beuno-lunch is now known as beuno
=== salgado-lunch is now known as salgado
=== al-maisan is now known as almaisan-away
james_wleonardr: you missed one it seems: http://paste.ubuntu.com/476544/18:58
leonardrjames_w: ah, that's an error in launchpad, not launchpadlib. that's why i didn't see it19:05
leonardrwas that the only one?19:05
james_wleonardr: with -r launchpadlib, yes19:06
leonardrjames_w: oh, actually the launchpad branch i'm working on already fixed that error, _that's_ why i didn't see it19:06
lifelesshttps://devpad.canonical.com/~stub/ppr/edge/latest-daily-timeout-candidates.html19:07
=== Ursinha-brb is now known as Ursinha
* rockstar goes for a walk19:13
bryceh$ make lint-verbose19:19
bryceh...19:19
bryceh./bin/lint.sh: line 163: pocketlint: command not found19:19
brycehaha nevermind19:19
jmllifeless, please review my testr branches19:23
lifelessflacoste: elmo: if you want to move the foundations call up, fine with me - as elmo is sprinting it might be easier/worse19:23
lifelessjml: thanks!19:23
flacosteelmo: i'm free, so it's your call19:24
=== EdwinGrubbs is now known as Edwin-lunch
* jml off19:26
lifelessnight jml19:26
jmlg'night.19:27
jmlI might be back later to land some patches for some testing tools. :)19:27
lifelessUrsinha: I'm sorrry, I haven't written the rollback patch yet19:28
lifelessUrsinha: if its not in your inbox your tomorrow am, please assume I'm swamped and won't get to it19:29
Ursinhalifeless, I can do that, if you don't have plans to do that soon19:29
Ursinhaah, sure19:29
Ursinha:)19:29
lifelessUrsinha: well, if you wanted to do it today that would be awesome19:29
Ursinhalifeless, I can do that19:29
lifeless\o/ thanks19:29
lifelessmthaddon: I kind of wish that https://lpstats.canonical.com/graphs/OopsEdgeHourly/20100712/20100811/ included the request count, to make me feel better :)19:46
lifelessbut I know it would make the graph much less useful19:46
flacostelifeless: given that elmo is in Madrid on a sprint, i'm not sure he'll make the conf call19:58
lifelessok19:58
lifelesswell, we can ring his mobile ;)19:58
flacostelifeless: hmm, do you have an agenda?20:01
lifelessfor the first meeting ? ;)20:01
lifelessrfwtad; lucene;20:02
lifelessthe first implies an 'are we blocked on all lucid stuff, or just per machine', 'are we there yet' style annoying question, which I know he'd just -love-20:02
lifeless:P20:02
flacostelifeless: unless you insist, i'd skip this one :-)20:03
lifelessits fine20:03
lifelessskipped, I'll be back in a bit20:03
=== Edwin-lunch is now known as EdwinGrubbs
lifelessok21:50
lifelesswho really understands the prejoin code21:51
=== matsubara is now known as matsubara-afk
elmoflacoste/lifeless: sorry I didn't intend to make the call but failed at timezone math and was afk at the scheduled time22:22
flacostelifeless: jamesh does22:23
lifelesselmo: do you mean 'did intend' ?22:23
lifelessflacoste: I shall stalk him!22:23
elmolifeless: yes22:23
lifelesselmo: no worries22:23
elmoapparently I also fail at English22:23
lifelessall I had for the meeting I put in the channel :)22:26
elmoAFAIK, lucid stuff is at the 'can do machines any time we want', but the LOSAs want to wait till they aren't sprinting for me to do the upgrades22:27
elmothe lucene one was a little dense for me22:27
lifelesselmo: I want to move forward on evaluating it22:29
elmolifeless: ok - what do you need from me/us?22:30
lifelessneed to coordinate temporary use of a machine or two with the grunt to reindex all of LP's content, to see how it performance and evaluate search results22:30
elmo*choke*22:31
lifelessmay need a slave replica along the lines of staging to read the content to reindex from22:31
elmois that all? :-P22:31
lifelesselmo: or we need to figure out a way to do a sensible evaluation22:31
elmowhat's the grunt?  disk, memory or both?22:31
elmoif you know22:31
lifelesselmo: I'm raising this now so that we can figure out how to do it without panicing ;)22:32
lifelessWell, we don't /really/ know yet.22:32
lifelessDisk wise we need a copy of LP's DB - thats 250GB IIRC? And we'll need ~ that again for the index (to allow learning space)22:33
elmook22:33
elmoI'll let my brain background on WTF to do that22:33
lifelessmemory I have no idea22:33
lifelessit might be so damn great that 1GB will do22:34
elmoand pigs might fly given sufficient thrust22:34
lifelessporcine aviators unite!22:34
lifeless... pigs in space22:34
lifelessanyhow :)22:34
lifelessI suspect we'll need several GB to get the content out of pg efficiently, and lucene will want a few hundred MB, maybe a GB, to index as we go22:35
lifelesswhen we move onto test querying, we'll find out how good the index locality is.22:35
lifelessthere is no schedule for this yet - as I say, I'm raising it to give you plenty of warning22:35
lifelessthe broad plan I have is: evaluate it, and if its as good as all the feedback I've been getting, get a performance profile for it; then we will have some idea about how big a machine we need, and can start to talk deployment/migration/staging etc etc etc22:36
lifelessthe goal is to take a lot of load off pgsql doing this22:37
lifelessso we might even free up a slave box or something : we don't know yet though.22:37
lifelesss/the goal/a goal/22:37
elmosure, ok22:37
=== salgado is now known as salgado-afk
lifelessI'd be happy to evaluate on a really small memory/cpu box, and scale up if its not enough - but that may imply a bunch of fiddling and so on that isn't particularly helpful.22:39
lifelessI will be totally guided by you22:39
wgrantleonardr: Did you really mean me?22:39
=== _mup__ is now known as _mup_
=== Ursinha is now known as Ursinha-bbl
=== jcsackett is now known as jcsackett|afk
lifelesswgrant: was the ppr useful ?23:08
wgrantlifeless: I was just reading it when #launchpad-meeting took my attention, so I forgot.23:09
* wgrant looks.23:09
lifelessthe stats are a little bong - I've sent stub a mp to fix em23:09
wgrantThat is a wiide table.23:09
lifelessyeha23:09
lifelesssort by the 99% column23:09
wgrantThere is no sorting. I guess I'll grab the JS manually.23:10
lifelesshmm23:10
lifelessit should be coming from people.canonical.com23:10
wgrantAh, yes, it is, but Evo doesn't follow external links.23:11
wgrantWorks fine in a web browser.23:11
wgrantThat is an interesting page, certainly.23:12
jmlgood night all23:17
mwhudsonnight jml23:20
leonardrwgrant: sorry, i meant james_w23:23
wgrantAh :)23:23
poolielifeless: back to feature flags for a bit today23:52
lifelesscool23:54

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