/srv/irclogs.ubuntu.com/2010/07/24/#launchpad-dev.txt

benjiXXX?00:09
benjioops, wrong chan00:09
=== al-maisan is now known as almaisan-away
=== Ursinha is now known as Guest97483
=== Ursinha-bbl is now known as Ursinha
wgrantMorning lifeless.06:02
wgrantYour hostname confounds me.06:02
lifelessI'm at denhaag06:03
lifelessor in den haag06:03
lifelessGNU Hackers Meeting is on today + tomorrow06:04
wgrantAhh, forgot that.06:04
lifeless:P06:04
lifelessso I know have a very good handle on search06:04
lifelessit *may* be a tsearch2 bug06:04
wgrantExcellent!06:04
lifelessor it may be structural and unfixable06:04
wgrant:(06:05
lifeless[unfixable in tsearch2]06:05
wgrantAh.06:05
lifelessshort version: fti selectivity is important to speed06:06
lifeless[duh]06:06
wgrantRemarkable!06:06
lifelesslonger version: having a where clause with an index that doesn't support the order clause is slow06:06
lifelessunless the selectivity is fantastic06:07
lifelessmore detail still06:09
lifelesswe're doing an foo|bar|baz query06:09
lifelessso that we don't filter out bugs that only match 2 out of three terms.06:09
lifelessguess what this does to selectivity.06:09
lifelesswgrant: lpmain_staging=> SELECT count(*) FROM Bug, BugTask WHERE Bug.id = BugTask.bug AND BugTask.distribution = 1 AND Bug.fti @@ ftq('depend|eclips|error|get|instal|unmet') AND (Bug.private = FALSE OR EXISTS ( SELECT BugSubscription.bug FROM BugSubscription, TeamParticipation WHERE TeamParticipation.person = 2 AND BugSubscription.person = TeamParticipation.team AND BugSubscription.bug = Bug.id)) AND (1=1) LIMIT 40 OFFSET 0;06:33
lifeless count06:33
lifeless--------06:33
lifeless 21699506:33
lifelessTime: 4862.303 ms06:33
lifelesslpmain_staging=> SELECT count(*) FROM Bug, BugTask WHERE Bug.id = BugTask.bug AND BugTask.distribution = 1 AND Bug.fti @@ ftq('depend&eclips&error&get&instal|&unmet') AND (Bug.private = FALSE OR EXISTS ( SELECT BugSubscription.bug FROM BugSubscription, TeamParticipation WHERE TeamParticipation.person = 2 AND BugSubscription.person = TeamParticipation.team AND BugSubscription.bug = Bug.id)) AND (1=1) LIMIT 40 OFFSET 0;06:34
lifeless  204006:34
lifelessTime: 403.075 ms06:34
wgrantlifeless: Ow.06:35
wgrantIs that mostly due to differing indices, or mostly due to having to scan through 200000 rows?06:35
lifelessordered by bug.heat: 383ms06:35
lifelessbingo was a doggo06:35
wgrantPardon?06:35
lifeless200000 rows + fti overhead (it is slower) and you're expanding not reducing the workset06:36
lifelessoh, and it is also why the search is near useless06:36
wgrantRight.06:36
wgrantlifeless: One thing: you have 'instal|&unmet' in the second query.06:37
wgrantThat looks like a mistake.06:37
lifelessok06:38
lifeless62ms06:38
wgrantIs that missing a digit?06:38
lifelessno06:38
lifelesslpmain_staging=> SELECT bug.id FROM Bug, BugTask WHERE Bug.id = BugTask.bug AND BugTask.distribution = 1 AND Bug.fti @@ ftq('depend&eclips&error&get&instal&unmet') AND (Bug.private = FALSE OR EXISTS ( SELECT BugSubscription.bug FROM BugSubscription, TeamParticipation WHERE TeamParticipation.person = 2 AND BugSubscription.person = TeamParticipation.team AND BugSubscription.bug = Bug.id)) AND (1=1) order by bug.heat LIMIT 40 OFFSET 0;06:38
lifelessTime: 62.308 ms06:39
wgrantWow.06:39
wgrantWhat if you order by rank?06:39
lifeless64 with the old query as the rank06:40
lifeless42 with the new06:40
lifelessof course, this is because there are no bugs matching the query06:41
lifelesswhat I want to do is to encode 'allow a missing term' into the fti06:41
wgrantHeh.06:41
lifelessas a stopgap06:41
wgrantThat might work.06:42
wgrantHow do other people do search?06:42
lifelessquikcly06:43
lifelesslucene is pretty popular06:43
wgrantYeah, that's the main one I'm aware of.06:44
lifelesstsearch2 has the advantage of being in-db (simple) but that mean replicating it, wide rows, and less ability to isolate surges in load on other areas from it06:44
lifelesslucandra is apparently nice, but cassandra is a support nightmare atm06:44
wgrantDo any other teams within Canonical have search experience?06:45
wgrantI can't think of any :(06:45
lifelessthere are some particular individuals06:46
lifelessI'm speaking with them06:46
lifelessand going to send out a more general mail once I marshall all my data and ideas06:46
wgrantExcellent.06:46
* wgrant vanishes.06:47
lifelessciao06:47
lifelessok06:48
lifelessskipping one term in each group06:48
lifeless679ms06:48
lifelessSELECT bug.id FROM Bug, BugTask , ftq('(depend&eclips&error&get&instal&unmet)|(error&get&instal&unmet)|(depend&eclips&get&instal&unmet)|(depend&eclips&error&instal&unmet)|(depend&eclips&error&get&unmet)|(depend&eclips&error&get&instal)') as query WHERE Bug.id = BugTask.bug AND BugTask.distribution = 1 AND Bug.fti @@ query AND (Bug.private = FALSE OR EXISTS ( SELECT BugSubscription.bug FROM BugSubscription, TeamParticipation WHERE TeamPartici06:48
lifelessTime: 679.074 ms06:48
* wgrant hates dodgy testrunners.09:30
wgrantI broke a test pretty badly,09:31
wgrantAt the end it said:09:31
wgrantCould not communicate with subprocess09:31
wgrantYet:09:31
wgrantTotal: 63 tests, 0 failures, 0 errors in 1 minutes 1.856 seconds.09:31
jelmerwgrant: :-/09:36
lifelesswgrant: thats probably a reinvocation + failure to report to subunit properly issue09:36
wgrantlifeless: I believe so, yes.09:37
wgrantBut it still seems that the top-level runner should not handle 'Could not communicate with subprocess' as an absence of tests.09:38
lifelessack09:38
lifelessplease fix! [really]09:38
* wgrant has been nowhere near the testrunners.09:38
lifelessso ? its just code :)09:39
* lifeless tries to provoke a bzr-hacker-ethos09:39
wgrantHeh.09:39
lifelessreally09:39
lifelessjelmer pointed this out to me just now, that he sees less partitioning in the bzr team than the lp team : yet the bzr codebase is pretty close to the lp one in size09:40
wgrantOh, I'm not scared of touching other parts of LP.09:40
wgrantBut the testrunner isn't.09:40
lifelesswhat risks do you see in touching it ?09:40
wgrantWell, for one thing I don't know how to change the eggs.09:41
lifelesswgrant: ok, so lets recurse on that - here is what I do: I edit in place, then when happy with the result I do an upstream patch separately.09:42
wgrantAh.09:42
lifelesschanging the eggs after that is just edit the version config, and add the tar/egg to the download cache09:42
lifelessapparently buildout.cfg can do much better, but it appears that two or three people only know how it works, which adds to the barriers.09:43
wgrantHeh.09:43
* lifeless was a lot happier with dropping stuff in src, but - tradeoffs09:43
james_wsketch: in the tree you are working on: bzr branch lp:zope.testrunner (or anything to get it's code version controlled), edit buildout.cfg to set develop to be ". zope.testrunner"10:24
james_wthis will tell buildout that you are hacking on both projects in parallel, and it won't use distributed eggs for them10:24
james_wthere are a couple of gotchas, so it can be worth editing setup.py in zope.testrunner to bump the version, and then edit versions.cfg to have that version for zope.testrunner10:25
james_wthat's because buildout doesn't ensure that develop targets don't take precedence over everything else10:25
james_wI've never tested that in lp, but that's the process I worked out elsewhere10:26
lifelessjames_w: _please_ make this more visible to the team - consider adding to doc/buildout or the wiki or both!10:26
lifelessI'm begging you:)10:26
james_wI don't know about getting a patched egg in to launchpad, I think there's documentation on it10:26
lifelessyes, that step is known10:26
james_wlifeless: doc/buildout already talks about develop, but as an explanation of the key, I assume that we want instructions on doing it too?10:29
lifelessits a little brief10:31
lifelesswritten by someone that knows it, I suspect10:31
james_wI can write something up, but I would need to test it, and I have to go checkout now10:31
lifelesshave a good trip10:31
james_wlifeless: heh, thanks for pointing out my redundant code in the oops thing10:32
james_wlifeless: do I have your rs to land that change via ec2?10:32
lifelessyes10:32
lifelessr= in fact10:33
james_wthanks10:33
james_wI'll get to that once I'm back somewhere with internet10:33
lifelessno rush10:34
james_wI was thinking that it should probably remove the intentionally triggered oopses, but if something odd happens it could get very confusing10:37
james_w(in the tests for this feature)10:37
wgrantlifeless: Do we have testscenarios support in LP?10:59
wgrant(thanks for the review)10:59
lifelesswgrant: trivial to add it11:01
lifelessrmadison python-testresources11:01
lifelesspython-testresources |    0.1-1.2 | hardy/universe | all11:01
lifelesspython-testresources |    0.1-1.2 | jaunty/universe | all11:01
lifelesspython-testresources |      0.2-1 | karmic/universe | all11:01
lifelesspython-testresources |    0.2.4-1 | lucid/universe | all11:01
lifelessI think its api compatible with 0.111:02
wgrantlifeless: Launchpad hates packages.11:03
wgrantDespite managing them...11:03
lifelesswgrant: we have dep packages for a reason11:03
wgrantTrue.11:03
lifelesswe still add the dep to buildout for clarity11:09
lifelesshi mars20:27
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away

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