[00:00] :-) [00:00] Its beautiful! [00:00] Also, there is this space "&commit= Send Upstream" [00:01] it should not exist I think, so the commit button would change to Send upstream? [00:01] ok, tested. No. [00:02] Anyway its the most awesome thing I've seen. If LP does this by default, we'd all hug you :) [00:02] I think that's fine, that value isn't actually used by bugzilla [00:02] Yeah, I just noticed [00:04] well, it may be a while before LP does this by default, but I'll be working on it. meanwhile the cgi is going to be available for folks [00:04] I'll be interested in seeing how much use it gets [00:06] I'd also be interested in hearing about tangible time savings. I calculated after spending one day forwarding bugs without this tool, vs. one day forwarding bugs with it, I was able to send 3 times as many bugs upstream in a given period of time [00:07] the main constraint for me in achieving an even better ratio was having to manually copy over the attachments [00:09] nigelb, thanks for finding that bug. embarrassing! [00:09] clearly I need to write some tests [00:10] heh [00:10] another advantage when you have a tool like this, people don't go, "Oh, I'll forward it later" [00:10] nigelb, did you install the greasemonkey script? [00:10] they'll just. "hey, it'll take only 10 minutes, why not do it" [00:10] yep [00:11] Nope, I did it manually. [00:11] (this is work computer, can't mess with it :D) [00:12] mm, if/when you can install that gm script, you'll find it REALLY makes it fun and easy to upstream bugs [00:12] Oh! [00:14] how tough would it be to make it available for gnome bugzilla too? [00:14] it should work with gnome bugzilla already [00:14] I only tested on a couple bugs though so am not 100% sure [00:14] gnome has more people forwarding since the apps are mostly in user space [00:14] but I put the support for GNOME in last week. I'd love to get verification that it works [00:14] yep [00:15] it should work for gnome packages that have exactly the same name in launchpad and in gnome bugzilla [00:16] which afaik should cover most packages [00:16] where in the lp branch is the code? [00:16] it's in the scripts directory [00:18] its a very nifty script :) [00:19] thanks, yeah I've gotten a lot of good out of it, and looking forward to it being handy for others [00:19] nigelb, let me know if you test it on a gnome bug [00:22] I will as soon as I can find the time. gotta start working :) [00:22] nigelb, cheers :-) === Ursinha-nom is now known as Ursinha [03:18] lifeless, missed your request -- "partial" oops summaries, as we call, are regenerated every hour === Ursinha is now known as Ursinha-afk [04:26] Ursinha-afk: thanks [04:41] spm: can you time the statement in https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1662O772 ? - the 17 second one, on a slave, and on prod, please? [04:41] sure [04:42] if its slow, grab an explain analyze too :) [04:42] wow. that's... inconsistent. [04:43] enter query into cmd line; hit enter; runs, completes. uparrow+enter; repeat. [04:43] . [04:43] . [04:43] . [04:43] 1.7s, 13.1s, 0.6s, 1.0 [04:44] we might want to fix this [04:44] wtf (where) did 13.1 come from!!! [04:44] was that on a slave or main ? [04:44] main [04:45] what makes that 13.1s even more interesting, i'd have thought the query was still within postgres caching. ie it should be zomg fast. [04:45] so [04:45] guesses: load, index fail, index lock contention [04:45] cache fail... [04:45] if we're under that much pressure, sure. [04:46] we're seeing the oops 180 times a week [04:46] load, unlikely - load average: 8.31, 7.91, 8.14 <== which is pretty low for wildc [04:46] * lifeless mutters about perspective [04:46] note the 'unlikely' qualifier. :-) [04:47] how many cores does it have? [04:47] when you'd had dual 650Mhz CPU proxy firewalls on a 'normal' load of 50-80; still working at 450... [04:47] 16 [04:48] ok, so thats still 8 db threads or similar not executing for a full second [04:48] its not actually great [04:48] later we will have to go into the performance knee for wildc [04:49] right now, we already know that backsup cause an oops spike :P [04:49] ? I thought load was a (rough) measure at the end of a 'tick' of what's executing right now; regardless of how much of the tick they've had? imbw.... [04:49] ie it avergaes out to a vague approximation. [04:49] its blocked ready-to-run processes [04:50] http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages - not telling you to suck eggs, but I've quickly scanned it and its a clear explanation [04:50] heh, I suspect we're using different words to describe the same thing. :-) [04:50] ta [04:52] ok anyhow [04:52] one thread at a time [04:52] :-) [04:52] can you see if it does that slow pattern on a slave [04:54] huh, I was almost going to say o it doesn't, but persistence paid off. most (~ 10 runs ish) were sub 0.3s, 1 x 1.0, 1x 4.5. [04:54] s/ o / no / [04:54] ok [04:54] 8 cores, load average: 1.01, 1.18, 1.15 [04:54] can you get an explain analyse of it slow in both cases ? [04:55] Oooer. it changed! [04:57] wow. I didn't notice. it changed twice. https://pastebin.canonical.com/34873/ [04:57] actually... i think it was different on every run. repasting the entire test [04:58] https://pastebin.canonical.com/34874/ [04:58] *boom* [05:00] yeah. something is *really* screwy, based on my DB understandings if the explain plan can be changed so dramatically like that. I thought these things were cached for high seconds to low minutes for precisely this sort of thing. [05:00] https://pastebin.canonical.com/34875/ to complete the set, wildcherry showed similar behaviour [05:01] ah [05:01] actually I quite distinctly do recall faffing around with Oracle... 10g istr and forcibly getting it to regen plans 'offline' as it were to maximise the speed of certain queries [05:02] its a damned view [05:02] omfg [05:02] excuse me [05:02] no perfectly understandable :-) [05:02] \d publishedpackage :P [05:02] It is pretty unthinkable that'd I've used oracle and actually like it. ;-) [05:03] * spm takes a few deep breaths [05:04] Oh god, publishedpackage? [05:04] Kill it. [05:04] oh not too bad. only 12 joins. [05:04] The *cache table* is being slow? [05:04] in the fast one is its a nested loop [05:04] pg doesn't hve materialized views does it? [05:04] unknown to me [05:04] don't think so [05:05] You can emulate them using triggers, but it doesn't do them itself, no [05:05] so the fast case loops on binarypackagename_name_key on binarypackagename [05:06] the slow case Seq Scan on buildfarmjob (cost=0.00..54641.45 rows=1799245 width=12) (actual time=0.019..1470.653 rows=1799572 loops=1) [05:06] and it gets worse from there [05:06] That table has only been around for a couple of months. [05:06] So the query probably hasn't been looked at in this form before. [05:07] I need to review this, I smell OOD rather than table layout optimisation [05:07] I saw a similar thing last night [05:08] spm: so I'm guessing slight statistics variation -> boom [05:09] lifeless: I guess, but... I'm kinda left wondering why plans aren't locked in stone more; if they even can be. [05:11] spm: do I have sql access to staging, to poke at the tables a bit ? [05:11] perhaps comparing oranges with mandarin's; in oracle land - as I recall it; you'd have a generic query plan with placeholders for the values. there's a specific name, but time and memory fades. the idea being that you just replace the bits you care about; the plan itself is indentical; so you win big on lots of repititions by not doing the analyze phase(s) [05:11] lifeless: perhaps r/o? if not, I can create now and retroactively ask francis for you to have same. [05:12] spm: whatever bjorn had? [05:12] I have 99.99999% no doubt he'll be fine with that. [05:12] everyone except losas and stub has r/o [05:12] I'm sure that will be fine [05:12] rephrase, everyone *with access* has r/o [05:12] if its ever not, well, efuture [05:44] wgrant: so why do you say to delete hte view? [05:45] lifeless: I was wrong. I was thinking it was one of the cache tables. [05:46] But it's not; it's just a view. [05:53] 10 million rows in bpph [05:53] I can has delete? [05:53] You can has indices. [05:53] meh [05:53] I has indices. [05:53] I wants delete. [05:54] also fti needs some serious love [05:54] Deleting history makes me sad. [05:54] What's the FTI on? [05:55] wgrant: keeping stuff isn't free [05:55] and even logn perf hurts after a while [05:55] lifeless: Says he who developed a DVCS which preserves all history :P [05:55] its all about use cases [05:56] actually, I want a good history edit mechanism - I wrote that up a year back or so [06:00] * wgrant still needs someone to land a branch. [06:19] spm: are you able to do iostat/cpu on staging for a query for me? [06:20] wgrant: whats the mp [06:22] lifeless: One of the ones you reviewed a couple of days ago. [06:22] * wgrant hunts. [06:22] https://code.edge.launchpad.net/~wgrant/launchpad/refactor-_dominateBinary/+merge/29667 [06:22] oh, I might need a newer tree [06:22] we'll see [06:23] herh [06:23] lp.registry.windmill.tests.test_person_picker.TesPersonPickerWidget.test_person_picker_widget is failing in my branch [06:24] nice test class name! [06:26] wgrant: its mid kickoff [06:26] lifeless: Thanks. [06:26] losa ping [06:35] how do you debug a failing windmill test? [06:35] WITH A SHOTGUN [06:39] wgrant: its in flight [06:39] lifeless: Even better. [06:40] It *is* the right branch? [06:40] Last night it wasn't. [06:40] i just cp'd your link [06:41] lifeless: it seems "run it until it passes" works :( [06:42] mwhudson: My policy is "run until it passes. if it still doesn't pass, ignore it, because I didn't break it" [06:47] lifeless: sure, on staging DB server as in? [06:52] yes [06:53] the qyry is [06:53] \timing [06:53] SELECT COUNT(CASE WHEN Bug.fti @@ ftq('sphinx') THEN TRUE ELSE null END) FROM Bug, BugTask WHERE BugTask.bug = Bug.id AND BugTask.distribution = 1; [06:56] lifeless: I forgot to time() it; but ~ 10ish seconds. https://pastebin.canonical.com/34879/ for the vmstat [06:57] \timing is your friend :) [06:57] aye... :-/ [06:58] 2nd run - just shy of 9 secs [07:00] ok [07:00] a fucktonne of IO [07:00] spm: can you check whether lucene, solr & pylucene are available in the DC, in the event we were to want to use them. [07:01] are they debug type programs? servers? [07:01] ah the first is the search engine? [07:03] yes [07:03] one stack [07:03] lifeless: looks like, not really. some possibly defaultish libraries; but I'd suggest backporting would be needed. [07:04] rmadison was hopefyul [07:07] i know the divmod folks became extremely angry with lucene [07:07] several years ago now, mind [07:11] spm: it appears to be in universe, to me [07:13] lifeless: that would be my lack of experience with dealing with packages then [07:13] hahahha [07:13] or possibly we don't enable universe on the servers... [07:13] spm: whats our policy on stuff in univers [07:13] e [07:14] actually I can see the solr stuff, I sit corrected. [07:14] heh, lalala me. universe is fine. [07:15] spm: how hard am I hammering the server ? [07:16] 100% on one cpu only [07:16] \o/ [07:16] select * from stat('select fti from Bug') order by ndoc desc, nentry desc,word limit 10; [07:16] how many cpus are there ? [07:16] 8 cores [07:17] only 32g of ram, so i'd expect more io than prod [07:17] whee that local run is evil you've made me do. also 100% [07:18] 0.0% wait state tho [07:39] spm: I'd like to try reindexing bug.fti on staging. [07:39] spm: how do we go about this? [07:40] depends on how intrusive a reindex you mean? if you just mean 'reindex table blah', that's pretty easy. [07:40] spm: or should I do that on dogfood [07:40] spm: we need to drop the bug_fti index and make a new gin one [07:40] something like [07:40] I'd suggest dogfood in the first instance to get an idea of timing [07:40] lifeless: when did test_suite() stop being necessary in launchpad tests? [07:40] (also yay!) [07:41] mwhudson: I don't know, but jtv tested and current zope.testing doesn't seem to need it. [07:41] lifeless: it'd also be my personal recommendation to run any reindexing past stub [07:41] spm: how do I get access to dogfood ? [07:41] maybe zope.testing grew a new feature then [07:41] lifeless: if you don't have already? via RT [07:41] spm: I've spoken to stub about the fti stuff; its basically untuned - he expressed frustration at not having had time to just sit down and zen it === almaisan-away is now known as al-maisan [07:42] heh [07:42] mwhudson: hell, it may be needed still - remove it and check :) [07:42] lifeless: i did [07:42] * spm can picture stub doing the OOOOOmmmmm thing before a DB layout diagram [07:43] spm: dogfood is *completely* useless for timing. [07:43] You know what sort of hardware it's on, right? [07:44] so the thing is [07:44] we have a fast-insert slow-query fti index [07:44] wgrant: I'm think of more an 'minutes vs hours vs days' idea [07:44] there is an alternative index [07:44] not 17.65 minutes. [07:44] the gin index [07:44] spm: dogfood cannot always give a reasonable answer over those three. [07:44] anyhow this isn't urgent [07:44] haha [07:44] I'm just starting to qualify simple-complex answers in this space [07:44] Recall that a DB restore took two weeks a few months ago. [07:45] And the primary publisher takes several hours. [07:45] lifeless: this talk of gin indexes rings faint bells, i think we already use them for something... [07:45] or tried [07:46] still if you talked to stub you're likely much more up to date than me :) === al-maisan is now known as almaisan-away [08:01] mwhudson: yes :) [08:11] lifeless: Are Forbbiddens logged? [08:11] /builders is 403ing sometimes. [08:11] should be [08:11] I don't know if they raise oopses [08:12] they aren't logged as oopses when you're logged in, i think [08:12] mwhudson: So we can't debug them? [08:13] Awesome. [08:13] wgrant: thats not entirely true [08:13] wgrant: i may have been lying there [08:13] lifeless, jam and i looked at the memcached graphs last night [08:13] wgrant: i think bigjools knows the problem though [08:13] as i suppoe you already have before [08:13] wgrant: it's private builds, unsurprisingly [08:13] they seem clearly size-limited [08:13] mwhudson: He suspects private teams. [08:13] wgrant: however, I encourage you, in the theme of improvign things, to add trace logs for this [08:13] and hitting only about 20% of the time [08:14] yeah [08:14] mwhudson: But I can't see any private builds, so I shouldn't see any private teams. [08:14] I don't really have memcache on my radar atm [08:14] so caching more things is likely to make the cache perform worse :) [08:14] its a tool we're not ready for [08:14] It's already overused. [08:14] Caching things that should not be cached. [08:14] i know [08:14] lpmain_staging=> SELECT COUNT(CASE WHEN Bug.fti @@ ftq('sphinx') THEN TRUE ELSE null END) FROM Bug, BugTask WHERE BugTask.bug = Bug.id AND BugTask.distribution = 1; [08:14] count [08:14] i was thinking of letting it be refreshed from the browser by cache-control [08:14] ------- [08:14] 40 [08:14] (1 row) [08:14] Time: 7659.528 ms [08:15] lpmain_staging=> SELECT COUNT(*) from Bug, bugtask where bug.fti @@ ftq('sphinx') and BugTask.bug = Bug.id AND BugTask.distribution = 1; [08:15] count [08:15] i now feel we should add a switch to jut turn it off, and see if the oops rate changes [08:15] ------- [08:15] 40 [08:15] (1 row) [08:15] Time: 526.478 ms [08:15] we can just turn it off [08:15] and no, not pastbinning that :P [08:15] *thats* easy [08:15] poolie: There is lots of stuff that should be cached. [08:15] poolie: But it's not the stuff that's cached at the moment. [08:16] lifeless: those times are, um, different [08:16] lifeless: What's the difference in the plan? [08:16] lifeless, so tbf there are a lot of cache effects on the db server [08:16] wgrant: give you a single guess [08:16] running two queries one after the other and seeing the second is faster does not necessarily prove anything [08:17] (in my limited experience) [08:17] i agree the second looks more sensible [08:17] of course [08:17] I've run 10 of each [08:17] running 4 and having the 4th run an order of magnitude slower tho.... [08:17] but thats a lot more noisy ;) [08:17] * mwhudson gets some 503s and 504s from the apache frontend :( [08:17] ah :) and it's consistent? fairy nuf [08:17] sometimes the slow one is worse [08:18] https://pastebin.canonical.com/34874/ <== for mindblowing enjoyment [08:18] ok, so edge deployment just failed to migrate smoothly ? [08:18] mwhudson: please file a bug [08:18] it's working now [08:18] edge was just updating [08:18] yes [08:18] ah [08:18] this is a bug [08:18] we should fix it, we're going to be doing this *much* more often [08:19] mwhudson: please file it ;) [08:19] lifeless: ok [08:19] * mwhudson waits to see if the bug search times out... [08:20] short of automatically adjusting the 'load balancing' away from each server and waiting for all existing connections to same to timeout, there will be glitches for some folks? [08:20] spm: thats exactly what we should be doing [08:20] Hm. Is there no way to see all of a project's branches? [08:20] code.lp.net/project [08:20] No. [08:21] It's batched. [08:21] But without a navigator. [08:21] So it only shows the first n. [08:21] lifeless: https://bugs.edge.launchpad.net/launchpad-foundations/+bug/608065 [08:21] <_mup_> Bug #608065: get occasional 503s and 504s from apache frontend when edge is updating [08:21] _huh_ [08:21] Ah! [08:21] +branches is batched and has a navigator. [08:21] But isn't linked from anywhere. [08:21] ouch [08:22] mwhudson: Do you know why this is so? [08:22] * mwhudson afks [08:22] wgrant: no [08:22] wgrant, use an api [08:22] :/ [08:23] poolie: There's UI. It's just got no links to it. [08:23] wgrant: you may find https://bugs.edge.launchpad.net/malone/+bug/607776 interesting [08:23] <_mup_> Bug #607776: +filebug-show-similar FTI query timeouts [08:23] then how does it smell? :) [08:24] 'Seq Scan on bugtask' [08:24] WTF [08:24] yes [08:24] case statement fail [08:25] lifeless, why would you even write such a query? [08:25] ORM [08:25] or confusion [08:25] is there some innocuous stortm thing that produces it? [08:25] I don't know; the question is how long it will take to find and fix them all [08:25] * poolie wonders if storm should sometimes generate Warnings [08:26] lifeless: Well, if we take the timeout down to 1s, they should all become fairly clear :P [08:26] wgrant: I want to get the timeout to 5s [08:26] I really love that you are actually concerned about speed, BTW. [08:26] 1 would be ok if we generally completed in 0.1s [08:26] It is something that has been missing from LP for... well... 5 years now. [08:27] mmm [08:27] All I'm offering is a detailed view [08:27] istm storm could also warn about 1=2 [08:27] not sure if it's worth it [08:27] the whole team has cared and been fixing stuff [08:27] its important not to forget that [08:28] yeah it's really inspiring how much the atmosphere was different last week to previously [08:28] True. [08:28] if I am lucky enough to have some experience solving performance issues and dealing with interlocking pessimisations - its because I've created my fair share! [08:28] Haha. [08:30] damn. that's an admission and a half. /me takes a copy for later blackmail potential ;-) [08:31] lifeless: Are you doing DB reviews now in Björn's place? [08:31] yes [08:32] two votes, stub & I [08:32] we've agreed that with one vote it can progress to the tree [08:32] two votes for deployment [08:32] Ah, handy. [08:36] rockstar: Hm, what's particularly difficult about fixing the factory? I saw it broke quite a few tests (which was why i didn't fix it then and there), but nothing that looked terribly hard to fix. [08:36] mwhudson: I'm not going to get to your review - sorry, I'd love to:) - I'll try to drop a couple of thoughts in it today though. [08:36] wgrant, most of our tests are wrong... [08:37] Hah. [08:37] Awesome. [08:37] wgrant, so the tests that aren't breaking are the worst. [08:37] wgrant, it's not "hard" per ce, just tedious, and probably not the best use of my time currently. [08:37] Yep. [08:39] wgrant, there are all sorts of hidden constraints inside soyuz that aren't really documented that I didn't know, and that we're not really exercising in tests anywhere. [08:40] rockstar: lalala not part of Soyuz any more lalala [08:40] wgrant: you're not? [08:40] lifeless: The code isn't. [08:40] soyuz.add(wgrant) [08:40] :P [08:40] lp.buildmaster's owned by everyone now :P [08:40] wgrant, for instance, the build farm gets DOSed if you submit a build that isn't against a distroseries that isn't part of the ubuntu distro. [08:40] wgrant: all code is owned by everyone anyway, in principle. [08:41] I'd like to see more application of that principle :) [08:41] rockstar: Hm, because they have no chroots? [08:41] Or is there something else? [08:41] bad error handling logic [08:41] AIUI [08:42] lifeless: fairy nuff [08:42] Well, of course, it's ex-Soyuz code. [08:42] lifeless, probably a little bit of everything. [08:43] whats the easiest way to join the dots from a page id to code [08:43] I guess which app it's likely to reside in, then grep the app's browser/configure.zcml. [08:43] lifeless, this is another question I had when I first started working on Launchpad that would have been immensely helpful in my ramp up. [08:43] There must be a better way. [08:44] why does Distribution:+filebug need to know SELECT COUNT(*) FROM Bug, BugTask WHERE BugTask.bug = Bug.id AND BugTask.distribution = 1 AND (1=1) ? === almaisan-away is now known as al-maisan [08:51] so next ramp up question [08:52] lib/lp/bugs/templates/bugtarget-filebug-search.pt calls into +filebug with id filebug-search-form [08:52] what maps that back to a new template / api call ? [08:52] grep only finds a js file [08:52] The dupefinder is JS. [08:53] ok [08:53] so its setting up a call into a js function [08:53] lifeless, yes. [08:53] which then calls an api to do the deed [08:54] lifeless, we use the term "api" very liberally, but yes. [08:54] it makes a call to something that isn't formatted in tal :) [08:54] lifeless, yes. [08:54] REST api, model api... [08:54] ok, its a self post [08:55] to the same template with a query [08:55] now... what maps *that* is my next connector to join [08:57] lifeless: Must be in FileBugGuidedView somewhere. I suspect it's inherited from FilebugShowSimilarBugsView. [08:58] (yay, consistent capitalisation...) [08:58] What's the query? [09:08] wgrant: hmm? [09:08] wgrant: sorry, I've clearly confused you [09:08] I'm working on the filebug timeouts [09:08] we're using fti inefficiently [09:09] I've spawned enough bugs to keep everyone busy for a few days, time to pitch in and help [09:09] also [09:09] volunteer needed to do a i18n patch for lp [09:10] lifeless: lib/lp/bugs/model/bugtask.py, findSimilar [09:10] (not findSimilarBugs) [09:10] Hm. [09:10] Hasn't i18n been rejected a few times? [09:10] wgrant: so dots do you join to get to that [09:10] I thought it was very much unwanted. [09:10] wgrant: I thought it was 'too hard' [09:10] wgrant: We have massive i18n in answers [09:10] ETOOMANYTASKSTOOLITTLEDEVELOPERS [09:11] lifeless: Uh, well, I looked at FileBugGuidedView, and saw that it didn't have that functionality. But there's a very suspicious base class: FilebugShowSimilarBugsView [09:11] That calls findSimilar. [09:11] lifeless: So: guesswork. [09:11] what took you to FileBugGuidedView ? [09:12] wgrant: and whats calling into findSimilar [09:12] there are other nuts queries involved [09:12] lifeless, I'm happy to show you how I connect the dots. [09:12] lifeless: FilebugShowSimilarBugsView calls findSimilar. [09:13] But also, there's ++oops++ to see some of the callins. [09:13] I found FileBugGuidedView by checking lib/lp/bugs/browser/configure.zcml [09:13] ok [09:13] I think thats about my new-info buffer for now [09:17] wgrant: did you have a db patch ? [09:17] lifeless: Yeah. But the MP doesn't have a description quite yet. [09:17] * wgrant is just cleaning it up. [09:28] wgrant, do you know how to get the tests to tell me all the queries a test is running? [09:28] rockstar: I just use the postgres log. [09:35] lifeless: Review requested. [09:37] url me up [09:37] lifeless: https://code.edge.launchpad.net/~wgrant/launchpad/link-uploaded-ddebs/+merge/29669 [09:40] what does binarypackagerelease represent [09:41] A Debian binary package. [09:41] ie. a .deb [09:41] Or a .udeb [09:41] Or now a .ddeb [09:41] man, we have terrible names [09:41] You just noticed? [09:41] Would you like a DistroArchSeriesBinaryPackageRelease, which is of course short for DistributionArchitectureSeriesBinaryPackageRelease? [09:41] We have one of those. [09:42] lifeless, those clever landscape devs already wrote a tool to do what we were talking about. [09:42] \o/ [09:43] is it open sourced yet ? [09:44] wgrant: oh, I know. I was just compelled to comment [09:44] its like a class called IntegerInstance [09:44] lifeless, https://pastebin.canonical.com/34889/ [09:44] jml just deleted something along those lines [09:45] check annotate of our tracers module; he may have been over enthusiastic [09:45] anyhow the thing needed is glue <-> scripts [09:51] meep [09:51] once it drops out of cache fti is -realllllllllly- slow [09:51] Even once stub attacks it with his magic wand? [09:52] a wizzards staff has a knob on the end [09:52] Shh. [09:52] lpmain_staging=> explain analyze SELECT COUNT(CASE WHEN Bug.fti @@ ftq('sphinx') THEN TRUE ELSE null END) FROM Bug, BugTask WHERE BugTask.bug = Bug.id AND BugTask.distribution = 1; [09:52] (8 rows) [09:52] Time: 109213.606 ms [09:52] what. [09:53] lpmain_staging=> select count(*) from bug, bugtask where Bug.id = BugTask.bug AND BugTask.distribution = 1 AND Bug.fti @@ ftq('sphinx'); [09:53] Tried the query that has a less awful plan? [09:53] Time: 54666.999 ms [09:53] Ow. [09:53] still [09:53] better is, well, better. [09:53] But still utterly awful. [09:53] shrug [09:53] one step at a time [09:55] Does launchpad_ftest have a different permission file than database/schema/security.cfg [09:55] make schema to reset it [09:56] ftest is built when you do make schema [09:56] and thus only gets permissions built at that point [09:56] rockstar: security.py is run only on launchpad_empty, so it should be the same. [09:56] or whatever :P [09:56] lifeless, that's what I suspected, but it doesn't seem to be working. [09:56] launchpad_ftest is also created when the tests run, according to the postgres logs. [09:57] yeah, I had the names wrong [09:57] launchpad_empty is copied to launchpad_ftest_template [09:57] its been a while [09:57] launchpad_ftest_template has the sampledata loaded into it. [09:57] I remembered the shape :P [09:57] Then the testrunner copies launchpad_ftest_template to launchpad_ftest freshly for every test. [09:57] No permission resetting is done after launchpad_empty, AFAIK. [09:59] (if it was, tests would take a minute or two to set up...) [10:02] They already take a minute or two to set up. [10:03] Each test takes a second or so. [10:03] The initial setup of the test suite around 10 seconds, here. [10:04] Do you use LP_PERSISTENT_TEST_SERVICES? [10:04] garh [10:04] stab stab [10:04] terrible idea. [10:04] It saves time :) [10:04] wgrant, I do. [10:04] Lots of time. [10:04] Almost makes TDD plausible. [10:05] its curing the symptom [10:05] but adding more root causes. [10:09] lifeless, +1 [10:10] "Why am I starting up a librarian when my tests don't need one" === daniloff is now known as danilos [10:12] Yeah, can we please do away with layers? [10:12] good morning [10:13] Evening bigjools. [10:13] g'day wgrant [10:15] lifeless, does this look okay for that branch you reviewed already? http://pastebin.ubuntu.com/466891/ [10:16] bigjools: When you have a moment, can you glance at https://code.edge.launchpad.net/~wgrant/launchpad/link-uploaded-ddebs/+merge/29669 and tell me if you object strongly to its approach? [10:18] looking [10:18] rockstar: yes [10:23] wgrant: good approach, just a few comments [10:23] wgrant: unit tests please, not tests in doctests [10:24] wgrant: also consider factoring out your new code so you can write unit tests for it [10:24] Running the upload processor in tests is something I want to reduce, not increase ;) [10:26] wgrant: finally, my alarm bells go off very strongly when I see removeSecurityProxy being used in code [10:26] bigjools: Fair point. [10:26] In my defense, it's a reasonably large test to rewrite, and I revived this branch from October last year. I'll probably replace nascentupload-ddebs.txt in a separate branch. [10:26] ok [10:26] And yes, I strongly considered factoring that out. [10:27] you should XXX it and file a bug plz [10:27] But it means a significant restructure, so... maybe for another branch. [10:27] that's fine [10:27] thanks for fixing ddebs! [10:27] I want Soyuz cleaned up too, don't worry. [10:27] How can I avoid the rSP use? [10:28] why is it needed? [10:28] BPRs are traditionally immutable. [10:28] But I need to set debug_package on some of them, after I have created them all. [10:29] I guess I could create all the ddebs first, then the debs. Hmm. [10:29] where does the bpr come from? [10:29] as in, what creates the storm obj? [10:29] The set of uploaded BPRs is created. I then create links between some of them. [10:30] Um. [10:30] I forget. [10:30] * wgrant finds. [10:30] if it ultimately comes from getUtility then it's security wrapped [10:30] but this all runs zopeless, so I don't understand why rSP is needed [10:30] are my feet ok there? [10:31] It's Build.createBinaryPackageRelease, so it's wrapped. [10:31] bigjools: It still uses PermissiveSecurityPolicy. [10:31] Zopeless is not Zopeless. [10:31] rockstar: are my feet ok there? [10:31] lifeless, yup. [10:32] I realise - but I thought that since you're not actually logged in, it can't apply security [10:32] PermissiveSecurityPolicy still cares about permissions. It's just that all permissions are implicitly held. [10:32] other than interface checks [10:32] exactly [10:32] And nobody has permission to write to BPR. [10:32] so, why is it grumbling about that [10:32] ah [10:32] that would explain it [10:33] can you create the ddeb first then, and put it in the createBinaryPackageRelease params? [10:33] I remember considering that when I wrote the code late last year... let's see if I can remember why I discarded that idea. [10:33] ok [10:36] stub: hai! [10:36] stub: I have some info on fti for you [10:36] stub: are you home or in transit ? [10:37] lifeless: home [10:37] so, the CASE approach used in nl_search takes about 10 times longer to do a search than a count(*) [10:38] separately from considering whether doing an estimate + a search is worth it vs just doing a ranked search [10:38] stub: are there some tests for nl_search I can build on ? [10:39] I don't know - that was all bug team work. I only know it vaguely. [10:39] ok [10:39] uhm [10:39] I will hunt bjorns [10:40] Huh, I can't remember the reasoning for making people the base parent in recipe traversal. [10:41] Whatever it is, my mind has been changed and I think that's crackful. [10:41] The form should at least inform users that the recipe names are global. [10:42] wgrant, it does now. [10:42] Ah. [10:42] Well, it does when you try and re-use a name. [10:42] The problem is that I want more than one recipe named "daily" ... [10:42] I often try to call a recipe 'trunk'. [10:42] Right. [10:43] It should have also traversed to project or sourcepackage [10:44] "Paul Hummer's daily recipe" is silly [10:44] What happened to ~wgrant/launchpad/+recipe/daily? [10:45] Basically it means that I'm going to invent my own namespace. [10:45] I thought the initial proposal was something like that. [10:45] wgrant, yeah, but there was some reason for not doing it. [10:46] (I'm saying that now that abentley and I have implemented it, that reason is shit) [10:47] Haha. [10:48] ok [10:49] so bugs -> db -> stub -> bjorn -> flacoste [10:49] but I now have enough confidence in the issue: deleting painful code. [10:50] bigjools, could you maybe give me some hints here: https://bugs.edge.launchpad.net/launchpad-code/+bug/591618 [10:50] <_mup_> Bug #591618: Result of SPRBuild assumes distro build [10:50] rockstar: gimme some time, I'm fighting canonicaladmin [10:54] bigjools, it will take AGES to defeat canonicaladmin though! [10:54] rockstar: this is just the battle, for the war, totally [10:54] :) [10:58] adiroiban, jtv, woohoo, +templates works on edge (rendered https://translations.edge.launchpad.net/ubuntu/lucid/+templates in 6.52s) [10:58] danilos: yay! [11:00] danilos: that's with figuring out the menu links just once for the entire page? [11:00] Hmm.... it just timed out for me. [11:01] danilos: sometimes I get a time out on Ubuntu [11:01] openobjects-addons is 0.6s [11:01] adiroiban, jtv: yeah, we still have it time-out occasionally because of the rendering times, but still, it worked for me :) [11:02] karmic consistently times out for me but it does have a lot more templates on there [11:03] I got one loaded! [11:04] On the 3rd attempt though. [11:04] The mouse-over effect doesn't seem to be working... maybe one of the extra files failed to load. [11:05] jtv, adiroiban: I guess we'll either have to fix rendering time (I talked to gary_poster and he mentioned switching to a faster TAL-rendering library chameleon as an option) [11:05] jtv, adiroiban: or batch it :) [11:13] ok rockstar let's check out your branch [11:13] bigjools, it's just a bug, but I have a test in there that I can't get to act like production. [11:13] bigjools, noodles is also sitting right next to me, and so I was going to ask him. [11:14] rockstar: I think what should happen is that canonical_url should return None for a package built in a PPA [11:14] and then you can change the template code to not link it [11:14] bigjools, yes, I know this. [11:14] bigjools, the problem is that I can't reproduce this in a tests. [11:14] ok [11:15] bigjools, so I'm wondering where the formatter is so I can see why it's not linking it in my test. [11:15] release = self.factory.makeSourcePackageRelease( [11:15] source_package_recipe_build=None) [11:15] release.source_package_recipe_build = build [11:15] why 2 lines? [11:15] transaction.commit() - urg :) [11:15] bigjools, good question. [11:15] why do you need to commit? [11:16] rockstar: so I think you also need to assert in that test that the build's archive is a PPA [11:16] bigjools, that test is the result of late afternoon hacking, and trying whatever I can to make it work. [11:16] ok [11:17] does makeRecipeBuild() default to a PPA? [11:18] I think it takes the default archive. [11:18] I'd add the assertion in the test [11:19] bigjools, where is the formatter? I was thinking I would find it after I got the test working, because it wasn't clear. [11:19] rockstar: what formatter? [11:19] The SourcePackageReleaseFormatter in tales.py didn't seem to be it. [11:20] bigjools, the tal formatter for a source package release [11:20] there isn't one [11:20] bigjools, huh? Then how is it getting linked? [11:20] * rockstar cries [11:20] does the template do it? [11:21] anyway, your test is asserting the wrong thing isn't it? [11:21] bigjools, no, it passes it to fmt:link [11:21] ok [11:21] bigjools, no, it's asserting that it's plain text, not linked. [11:21] it's still wrong [11:21] And it SHOULD be failing, but it's not. [11:21] it's not a distribtion package [11:21] so you're asserting that the current state of affairs is correct [11:21] which of course it always is :) [11:22] fmt:link just does canonical_url on the object [11:22] bigjools, so are you saying we should take the whole thing out? Don't even show a release? [11:22] it should say "Package X in PPA blah" [11:23] or something [11:23] is there any other lib.lp.service module that sets a good example for code or test style? [11:23] bigjools, yes, and I'm saying "Where is the code that names out that template?" [11:23] is there a real example I can see? [11:23] I dunno, it's one of yours isn't it? +recipe page? [11:24] bigjools, https://code.edge.launchpad.net/~rockstar/+recipe/daily/+build/348 [11:24] ok let's take a looksee [11:25] ah I see [11:25] rockstar: junk the whole section [11:25] bigjools, the template is just using existing code. I believe abentley even just abstracted the original build index. [11:25] bigjools, really?! [11:25] yes, it doesn't make any sense for a PPA build [11:25] there's no package page on PPAs [11:25] bigjools, it's a good thing you're in a different country, because I REALLY wanna kiss you right now. [11:25] lol [11:26] so "Result:" and the line below it - blow them away [11:26] or if you're in a kissing mood, just blow them [11:26] bigjools, could you comment on the bug with something like that? [11:26] sure [11:26] ...and I'll happily just kill it. [11:28] rockstar: the binary builds are plenty good enough to detail what was built [11:32] bigjools, I agree. [11:36] lifeless, igc says 'congrats' [11:38] poolie: thanks! - tell him best wishes ! [11:48] https://code.edge.launchpad.net/~lifeless/launchpad/malone/+merge/30507 if anyone is interested :) [11:54] bigjools: hi. on my ppa package details page i occasionally see (Newer version available). is this information available in the api? === al-maisan is now known as almaisan-away [11:56] barry: yes [11:56] lifeless: is this the superseded stuff in the build records? [11:57] nah, its a reference to the suite in ubuntu [11:59] lifeless: okay, thanks. i'll try to find it ;) [12:00] I think it's only on the UI actually [12:00] danilo: re chameleon: fwiw, in my measurements last year it saved an average of 15% from page times. not too shabby, but not a silver bullet. in the big picture, for common pages, network and SSL and client-side issues dwarf app-server times; and for most OOPSes we have, db time dwarfs rendering times. but chameleon should help somewhat. It would probably be more of a benefit for big honking pages like the on [12:00] talking about. [12:01] probably was truncated: "but chameleon should help somewhat. It would probably be more of a benefit for big honking pages like the one you were talking about." [12:01] bigjools: ah. what i'm trying to do is script auto-rebuilds for packages in the ppa that are now out of date. basically: search to find them, apt-get source, dch -i, build -S, dput [12:02] barry: ummm, why are you duplicating builds in Ubuntu? [12:03] or are there extra local changes? [12:03] bigjools: they are builds of packages that build-dep on python-all and python-dev-all. i build them in the ppa to pick up python 2.7 [12:03] And to destroy the build farm for 1.5 weeks :) [12:03] exactly [12:04] wgrant: not any more :) [12:04] if you want to do rebuilds, you should use a rebuild archive [12:04] or your good name is going to be mud :) [12:04] bigjools: i really *don't* want to rebuild vast numbers of packages. only about 150 of them [12:04] bigjools: your flaw is assuming i ever had a good name [12:05] barry: ah ok so you're rebuilding packages where its build deps changed? [12:05] barry: ok, s/mud/muddier/ :) [12:05] bigjools: yeah :) [12:05] bigjools: but as updates get thrown in the archive, i have to essentially re-sync them, but i think you can't do that (or can you?) [12:06] rockstar: err sorry I changed your bug status, it said "incomplete" on my browser, honest :) [12:06] we could do with collision detection there [12:06] bigjools: otherwise, apt-get update && apt-get upgrade will pick up the newer, non-py27 versions instead of the py27-built versions i want from my ppa [12:06] Morning, all. [12:07] barry: you can copy from Ubuntu into your PPA very easily using the API [12:07] bigjools: syncSources? [12:07] barry: you can pin on your PPA too [12:07] and syncSources, yes [12:07] bigjools: yeah, i could do that [12:08] pinning would be better [12:08] fewer rebuilds ;) [12:08] bigjools: more (efficient) buildds :) [12:09] in progress ;) [12:09] bigjools: :) [12:09] jelmer and myself are making buildd-manager changes that will rock the world [12:09] bigjools: i'd love to hear more! but it's lunch time so i'll come back and ask [12:12] barry: I've been seeing if I could get buildout tests to pass with 2.7. is there a known issue for Python 2.7 that output from both spawn and subprocess is...held, for some reason? [12:12] For example, given hacked code like this http://pastebin.ubuntu.com/466949/ (and I've hacked to use both spawn and subprocess in tests), including that half second sleep, I get failures like this: http://pastebin.ubuntu.com/466950/ . [12:12] (IOW, the "An error occurred..." should be printed below the output from the subprocess call, but is not). [12:12] So, known? I'm about to give up. [12:13] (2.4, 2.5, 2.6 don't behave this way) [12:22] bigjools: removeSecurityProxy call gone. [12:22] woo [12:22] I shuffled things around a bit, creating the ddebs first and a couple of other bits and pieces. [12:24] argh, I am finding it impossible to read email quicker than it arrives today [12:24] death to email from machines [12:24] email is for people fer chrissake [12:27] lifeless: I've got another candidate to use for Rabbit if it's close to being implemented [12:32] bigjools: it needs someone to put a layer together + lazr-config schema entry for it [12:33] bigjools: at that point we have all the bits in place to iterate. [12:33] cool [12:33] lifeless: I want to put the new distroseries opening code (initialise-from-parent) on it [12:33] Steve is working on making it a Job [12:33] Whatever happened to CHR? [12:36] wgrant, it's still happening, but I think some confusion in the change to the new approach and new days has slipped coverage lately. [12:37] wgrant, it's Edwin's day today, but he's not around yet. [12:38] deryck: when someone updates a bug status, do you detect collisions? (with a second person updating it) [12:39] bigjools, no. we just have the latter one overwrite the first attempt. [12:41] deryck: do you have bugs about that? If not I think I should file one :) [12:41] mtaylor: hi [12:41] bah [12:41] mthaddon: hi [12:42] mthaddon: could you do me a small favour? on staging, up the timeout to 20 seconds, I want to test a theory about whats going on here. [12:42] bigjools, there is a "show edits in real time" bug, which is basically the same, but perhaps your issue is a bit more specific? [12:43] deryck: I changed a status from incomplete to triaged, but because I had not loaded the page recently I didn't see that someone else had changed it from incomplete to in-progress [12:43] so I override his change [12:44] seems like we could simply check the status we're changing from and see if the status on the bug now is still the same [12:45] hmmm, yeah, I think that could use a new bug. That's a simpler change than real time edits and would bring value now. [12:46] deryck: bigjools: landscape has a jobs system too which they say they use for ajax notifications [12:46] lifeless: yeah I replied to their thread [12:46] its slightly different in concept to ours [12:46] cool [12:46] it sounds great [12:46] I'm pulling on this thread [12:46] deryck: ok I'll file a bug for you, cheers [12:46] yeah, it does sound nice. That would make real time edit notifications possible, I believe. [12:47] yeah [12:47] bigjools, thanks. [12:47] separate to mid flight detection [12:47] right [12:47] deryck: BTW my mental picture of you has now shifted unassailably to one where you're playing Dominion and sledging your opponents [12:48] heh [12:48] I perhaps was a bit too relaxed at the epic. I normally hide that part of myself. :-) [12:49] gaming brings out the worst in me. [12:49] deryck: lol [12:50] yeah me too - I hardly play any more. I got asked by neighbours once to stop swearing so loudly. I've since moved to somewhere where I don't have close neighbours. [12:50] heh. I can relate. [12:50] That's Counterstrike for you ... [12:56] food time === almaisan-away is now known as al-maisan [13:06] losa ping [13:16] lifeless: hi [13:16] mthaddon: hi [13:17] mthaddon: I was wondering if you could raise the timeout on staging temporarily, I want to get a full trace of what this does [13:17] that slow query, once its not fighting disk - 300ms [13:19] lifeless: done [13:19] \o/ [13:19] try this [13:19] go to [13:19] https://bugs.staging.launchpad.net/ubuntu/+filebug [13:19] put in a search [13:20] click next [13:20] everyone^ [13:20] lifeless: I increased the softtimeout as well - should I have left that as is? [13:20] WoahJSbug. [13:20] Oh, no, Chromium bug. [13:21] mthaddon: no, thats fine [13:21] mthaddon: the main thing was to get enough headroom to see how it performs on this slower hardware [13:21] I am getting 2-3 second searches [13:21] gary_poster: no bug or change that i know of :/ [13:23] mpt: ^ what do you think? [13:24] deryck: ^ you too, and I think I'll have enough confidence to say we should give this a spin [13:24] lifeless, I tried "Internet doesn't work on Broadcom". It returned decent results (though I have no idea what they're missing), but took 25 seconds. [13:25] lifeless, sorry, me too what? Search at ubuntu filebug on staging? [13:25] mpt: ok; please try again [13:25] deryck: yeah [13:25] lifeless: ola [13:25] mpt: the search index appears to be very big, so not all fitting in memory on staging, which is tiny [13:26] "wobbly windows flicker": ~8 seconds, decent results [13:26] lifeless, where are you physically? [13:26] rockstar: in my room for the moment [13:26] I'll be down shortly [13:26] lifeless, ack. [13:26] * rockstar will be glad to go back to his desk tomorrow [13:27] deryck: so this is a replacement pre-filter for bug searching [13:27] deryck: I haven't audited the full stack, but if we feel this is decent we might want to CP it to prod [13:27] lifeless, yeah, pretty snappy response for me. 2-3 seconds on normal searches. Lots of words returns in 5-6 seconds for me. [13:27] deryck: does it feel comparable to prod for you, or better ? [13:27] [ignoring hardware] [13:28] lifeless, better actually. [13:28] ok [13:28] I shall do the do [13:28] mthaddon: thanks, I'm finished with staging as a test env for this. [13:29] k [13:29] "install eclipse get unmet dependencies error": 13 seconds, and doesn't return bug 603656 at all. [13:29] * rockstar wonders how to capture mpt in a test [13:29] mpt: does it on production ? [13:31] gnarrrrgh [13:32] lifeless, I can't test on production without leaving the beta testers team. On edge, the same search gives me a timeout. [13:32] mpt: click the 'do not redirect me button' [13:32] oh of course [13:32] mpt: if there isn't one, please (har har) file a bug because we should still show that even in a new ajax world [13:32] I don't see that button any more [13:33] It's supposed to be on http://launchpad.net/ right? [13:33] mmm [13:33] I thought so [13:33] mpt, lifeless -- I believe it's a link in the footer now. [13:33] mpt: It's only shown on edge, and it's at the bottom. [13:33] And it's not on the front page. [13:33] The footer for me is "© 2004-2010 Canonical Ltd. • Terms of use • Contact Launchpad Support • System status • Take our survey!" [13:33] and on edge, "© 2004-2010 Canonical Ltd. • Terms of use • Contact Launchpad Support • System status • Take our survey! • r11179 beta site" [13:34] oh, not on the front page [13:34] Right. [13:34] That would be too obvious :) [13:34] The footer doesn't change on other pages for me [13:34] mpt: on the bug filing page [13:35] oh, wait, THAT footer [13:35] bottom right, green [13:35] It's in the non-footer footer. [13:35] Right. [13:35] this is special :( [13:35] The blue one as opposed to the white one [13:35] * mtaylor remembers days when he did web programming... [13:36] times out on prod for me too [13:36] timeout for me too [13:36] so [13:36] prod does not show it either [13:37] ack, barry, thanks for looking [13:38] mpt: thank you very much for playing with it; unless you say 'its a disaster' I'm going to move forward to get it on edge asap [13:38] It's not a disaster [13:38] afaict [13:38] deryck: your opinion? [13:39] gary_poster: np. i'd be interested if you track it down to a bug in python [13:39] lifeless, deryck's opinion may or may not involve comparisons to Windows 7, so tread carefully. [13:39] lifeless, I say move forward on it. If timeouts don't happen on staging, we should be better on edge/prod too. [13:39] yes, if it's better than windows 7 bitches, I'm all in! [13:39] heh [13:40] barry: cool. I dunno if I'll take it that far, but we'll see === Ursinha-afk is now known as Ursinha === Ursinha is now known as Ursinha-brb === flacoste_afk is now known as flacoste [14:29] when do we set things 'fix committed' ? [14:29] ... do we set them to that ? [14:30] lifeless: When the change lands but hasn't been deployed [14:30] lifeless: Scripts will set them for us though [14:32] bigjools: Did you get around to the PPA log parser thing you were looking at a couple of weeks ago. [14:35] wgrant: not yet, sorry. The code and config is all in though, we just need to turn it on [14:36] bigjools: Even the row-limiting config? [14:37] yes [14:43] Excellent. [14:44] life would be so much easier if I could block new bugs on soyuz [14:44] tell you what [14:45] ship code with less bugs, less bugs will be filed ;) [14:47] Or I can use Jedi mind tricks. These aren't the bugs you're looking for. [14:47] * bigjools waves hand [14:48] Do the Jedi mind tricks involve LOSAs and DELETE FROM bugtask? [14:49] no [14:49] :) [14:49] uh what? Sorry, my mind had drifted to Princess Leia and 'that' outfit [14:50] a danish on each ear [14:50] * mthaddon was picturing bacon on Leia's ears... [14:51] * bigjools just spurted a mouthful of coffee [14:52] rotfl [14:53] mthaddon: I didn't know Jono was in Star Wars [14:54] lifeless: really need one more bug status man [14:54] lifeless: fix committed, fix merged and fix released... [14:54] just saying [14:54] meh [14:54] three different things, important to three different sets of people [14:54] less actually [14:55] overly precise is not always good [14:55] committed where, merged where, released where. [14:55] indeed [14:55] really, we want 'done in context' and many contexts: more flexible, more power, nuke bugtasks too [14:55] for that matter - what the hell does "committed" mean [14:55] * lifeless handwaves furiously about stuff in deryck's domain [14:56] * deryck welcomes domain intrusion and hand-wavery [14:56] I just want to know: a) when there's a tree claiming to fix it on launchpad somewhere- when that has hit trunk, and when that has hit a "release" [14:56] hrm [14:56] I should have injected the b and the c there [14:57] imagine them [14:57] sure [14:57] see, that fits my model better :P [14:57] good [14:59] flacoste: btw, I'm changing how answers search works :P [15:02] lifeless: ok, why? [15:04] because its the cause of about 8 seconds overhead on searching bug dups [15:04] its doing work that the fti index should do [15:04] causing a scan of every bug, ever, in the context of the search [15:05] flacoste: the change shouldn't be very visible to users, based on some brief testing we did on staging. [15:05] flacoste: but if we do need to change the ranking we should do that at the tsearch2 layer [15:06] interesting [15:07] how a search within answers cause an 8 seconds overhead on search bug dups? [15:07] the nl_search code [15:07] common code path [15:07] its also causing timeouts in answers [15:08] flacoste: https://code.edge.launchpad.net/~lifeless/launchpad/malone/+merge/30507 - the old code is kept so we can really easily reenable if we don't like this. [15:13] lifeless: ok, the quality of results will decrease significantly [15:13] but let the user determine that [15:13] the slow algorithm is based on MySQL implementation of full text search [15:13] flacoste: I'd like to iterate and make it better [15:13] yeah [15:13] which gives very good result [15:14] plain tsearch2 search sucks [15:14] so what it does to use is due to not using their entire implementation [15:14] s/use/us/ [15:14] which is fast :-) [15:14] we end up scanning every object in the context, across the board. [15:14] which is a lot of work [15:14] - 8 seconds on ubuntu, and growing: for a *single* term [15:14] when we have multiple terms, its worse. [15:15] because we're consulting the fti vector per-row [15:15] per-term [15:15] this is why multi term searches time out more than single term searches [15:15] I am proposing this as a band aid [15:15] get us some headroom [15:15] that's fine [15:16] and we'll either use tsearch2 better, or drop in an entirely dedicated search engine [15:16] great, thanks. [15:16] the replacement query, FWIW, is ~ 500ms on staging [15:17] (once disk IO is excluded) [15:17] and maybe tsearch2 ranking has gotten better over the year [15:17] stub says we haven't tuned it at all [15:17] you're meant to write your own rank function anyhow [15:18] flacoste: thanks; I'm going to focus on the landscape/server guys now for a bit [15:36] gary_poster, ping [15:36] deryck: pong [15:50] lifeless, not sure whether the 'tracer' discussion above got resolved [15:50] lifeless, there's code similar to what's in https://pastebin.canonical.com/34889/ in lp/testing/__init__.py, iirc. [16:07] poolie, iirc you said yesterday you were okay with the current implementation of https://code.edge.launchpad.net/~leonardr/launchpadlib/improve-workflow/+merge/29849. if that's true, can you mark as approved? otherwise, comment with the change you want me to make [16:10] jml: neither am I :) [16:11] lifeless, ok. === Ursinha-brb is now known as Ursinha [16:21] deryck: ping - bug 600934 [16:21] <_mup_> Bug #600934: BugSubscription table need a constraint to prevent people being subscribed twice to the same bug [16:22] lifeless, yup. know it well. wasn't sure if we should have marked it won't fix, but haven't got back to it today yet. [16:23] deryck: seems to me that merging people should merge their subs too, no ? [16:24] the merge code is approachable; wearing my maintainablity / data hygiene hat - this is totally something we should fix [16:25] lifeless, agree. But this wasn't was Brian was looking into, and sinzui seemed to suggest this was difficult to fix. [16:26] we wrote the code in the first place :) [16:26] lifeless, I have argued fixing merge for more than a year. The work is *always* considered out of scope [16:27] sinzui: we're agreed then that we should fix it. [16:27] sinzui: thats plenty for me; I know how scheduling works. If its considered really tricky, I'll happily mentor someone on it. [16:27] No one agrees it it is worth one cycle [16:27] its worth a couple of days, tops. [16:28] sinzui, where does this code live in the tree? [16:28] less ~/Desktop/Downloads/signature.asc [16:28] bah [16:29] I have a script I am considering for a garbo job. to cleanup some of the data /after/ a merge. But the correct solution (and certainly assumed by brian's change) is to make merge an out of proc task that has a chance to succeed. eg, to take 27 patient tries to complete a merge of ~barry [16:30] sinzui: are we hitting write contention ? [16:30] merge should be an out of webapp thing *anyway* [16:30] the whole merge operation, I mean. [16:30] deryck, person merge...but keep in mind. We want to start new features, but we seem to be working on performance instead. [16:30] sinzui: in the eyes of our stakeholders, performance is as much a feature as anything else. [16:31] lifeless, There is too much work to do in a merge to happen in a single request. [16:31] sinzui: ack - agreed. Thus my comment that it shouldn't be done in the webapp transaction *anyway* [16:31] lifeless: I think everyone needs agree with what my team is working on, privacy, timeouts, or merge. [16:32] sinzui: I'm happy to consider the bug in question medium or even low priority [16:32] sinzui: I have no view on its urgency [16:32] lifeless, sinzui -- so if we want the constraint bug kept around to track this, I'm fine, but I think it needs fixing up to generally represent this issue. [16:33] deryck: sounds good to me [16:33] I also do think it's out of scope for our current subscription work, and would call it low priority for the bugs team, compared to everything else. [16:33] sinzui: we have the team leads call this evening and perhaps we can refine what we're doing in that call [16:34] So... auto-fill for tags.. That's an awesome feature that never crossed my mind. [16:34] The bugs are reported every release, the questions are reasked. One issue is number 8 in bug heat: and then there is my old blueprint that gives a broader view of the issues: https://blueprints.edge.launchpad.net/launchpad-registry/+spec/cleansing-deactivated-accounts [16:34] sinzui: what does 8 in heat mean - is that high ? [16:34] It is the 8th item in heat [16:35] ok [16:35] karma bugs collectively dominate registry heat [16:48] leonardr, do it! [17:04] flacoste: what is the mechanism for the call in 2 hours ? [17:07] lifeless: Francis' conf line === beuno is now known as beuno-lunch [17:28] * bigjools shoots and scores, new buildd-manager working on dogfood working like a champ [17:29] jml: don't suppose you fancy reviewing it do you? I fear someone else would vomit at the horrendous twisted hacks. === deryck is now known as deryck[lunch] [17:42] bigjools, sure, but I won't get around to it today [17:42] bigjools, my mind feels like stale custard [17:42] jml: I wasn't expecting you to - thanks very much. Maybe we can mumble over it later this week. === al-maisan is now known as almaisan-away [17:43] jml: there's some dodgy tests that you might be able to help me make nicer [17:45] * jml afk [18:25] jam, rockstar, hi, want to meet for dinner? [18:26] poolie, as long as I don't have to wait much longer. [18:26] * rockstar is starvin' Marvin. [18:26] ready now if you are [18:26] poolie, lemme pack up then. [18:26] i'd like to go to the place on the plaza near here [18:26] the google reviews are good [18:26] poolie: certainly [18:26] poolie, sure, as long as it's fast. [18:27] kk :) [18:27] COME ON! WE HAVE A 5 SECOND TIME OUT! [18:28] poolie: see you in the lobby in about 5min [18:28] great === deryck[lunch] is now known as deryck === beuno-lunch is now known as beuno [18:43] anyone remembers where's the documentation for those query counting functions (or at least what they are) that thumper introduced a while back? [18:49] danilos: assertQueryCount I think [18:50] thumper, thanks (damn missing -i option on my grepping exercise) [18:51] thumper, though, I still can't find it being used anywhere [18:52] danilos: I'm pretty sure it is used in some code tests [18:53] thumper, that's what I was grepping, I guess it's just a long day [18:53] danilos: assertStatementCount [18:53] sorry [18:53] thumper, right, just as I found it inside __init__.py of lib/lp/testing :) [18:55] thumper, np, we should probably move jtv's old query counter for +translate page to this as well [18:55] yup [18:56] thumper, or well, maybe not because that one counts them for the entire request being rendered [19:33] thumper, hi! [20:00] anyone here can help me with setting up launchpad? [20:00] !ask [20:01] i tried "make schema" [20:01] m4n1sh: just ask away, asking for a dedicated helper usually doesn't work in public channels ;) [20:01] Missing ./download-cache. [20:01] Developers: please run utilities/link-external-sourcecode. [20:01] make: *** [download-cache] Error 1 [20:01] have you followed the wiki pages on setting it up [20:01] on running https://dev.launchpad.net/Running [20:01] this page? right? [20:01] thats the second one [20:01] Getting is the first one [20:02] i got the edgde code [20:02] not devel [20:02] *edge [20:02] we don't use the edge code [20:02] we work on devel [20:02] please follow the 'getting' wiki page, you've skipped a lot of steps [20:03] oh crap [20:03] i missed so much [20:03] lifeless, thanks for pointing it out [20:04] np [20:16] thumper: hi [20:16] thumper: uhm, salgado I think it was, was mentioning that the branch listing page is still having trouble with things with lots of bugs linked, or something [20:18] its a little freaky to have windmill opening browser windows in my host os when running tests in my vm [20:18] just saying [20:23] lifeless: file a bug with an oops id and I can check it out [20:37] thumper: I told him just that :) === adiroiban is now known as Ow2 [20:45] rockstar: up still ? [20:51] lifeless, yes. [20:52] #lp-reviews, if you have time [21:28] anyone ever run into a pylint warning that can't be silenced? I added a # pylint: disable-msg=E0221 [21:28] ...and it's still complaining. === almaisan-away is now known as al-maisan === al-maisan is now known as almaisan-away [22:08] I'm off to bed [22:08] gnight [22:08] night [22:11] poolie: i think you picked the bad branch to merge into, as your diff is huge [22:11] i know! [22:11] poolie: that's on https://code.launchpad.net/~mbp/launchpad/flags/+merge/30580 [22:11] lifeless has just pointed that out [22:11] just think [22:11] i know :) [22:11] i actually realized myself [22:11] this *won't happen* anymore in about 6 weeks [22:11] or less. [22:11] * lifeless is really gone. [22:12] never mind the length, feel the quality! [22:12] heh [22:15] uh is this continuing fallout from people renaming branches? [22:15] db-devel seems to be gone [22:24] poolie: gone? [23:18] Hmm. [23:18] * wgrant wonders why ShipIt hasn't been split out yet. [23:19] Even if ISD can't be bothered rewriting it, it could surely just run on a separate DB with an old, static version of LP... [23:19] wgrant: it would help me if it were split out; I could fix two or three LP bugs by deleting data that LP doesn't use but ShipIt does [23:20] Then we could destroy Account, and safely remove stuff without having to check in history if ShipIt used it. [23:21] * rinze waves to wgrant and benji [23:22] Morning rinze. [23:30] wgrant: just lack of tuits i think [23:47] When is the Lucid upgrade happening? [23:48] And is there any OCR happening this week, or should I seek out another reviewer? === Ursinha is now known as Ursinha-dinner [23:51] wgrant: What sort of review do you need/ [23:51] I mean, what kind of branch [23:52] ? [23:52] rinze: It's a nascentupload branch. https://code.edge.launchpad.net/~wgrant/launchpad/link-uploaded-ddebs/+merge/29669 [23:52] bigjools has already approved the direction. [23:54] wgrant: If nobody has done a review before European morning I'll do one. [23:55] rinze: Thanks, that would be great. [23:55] I have a whole stack of other branches on top of this one that I'd like to get landed this cycle.