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

lifeless-> pet store and stuff00:23
lifelessgary-lunch: look at rev 12564 in devel to see how to do a with query with my patched storm00:24
wgrantI tried to create a packageupload(archive, distroseries, status) index on DF. It works for queries like archive=534, distroseries=X, status=Y. But when archive=1 it refuses to use the index. I guess it thinks its stats know better.00:37
lifelessdo you have a sample query ?00:38
wgrantEXPLAIN ANALYZE SELECT PackageUpload.archive, PackageUpload.changesfile, PackageUpload.date_created, PackageUpload.distroseries, PackageUpload.id, PackageUpload.pocket, PackageUpload.signing_key, PackageUpload.status FROM PackageUpload WHERE packageupload.distroseries = 103 AND packageupload.archive = 534 AND packageupload.status IN (0) ORDER BY PackageUpload.id DESC LIMIT 31 OFFSET 0;00:39
wgrantThat uses the index.00:39
wgrantAnd is fast.00:39
wgrants/534/1/, no index, slow.00:39
lifelessgotta run, bbiab00:39
wgrantOh. Now that is interesting.00:50
wgrantIt uses the index if distroseries=10200:51
wgrantBut not 103.00:51
mwhudsonis it the usual thing where it thinks it's going to be looking at most of the table anyway?00:53
wgrantI presume so.00:53
wgrant103 does show up in pg_stats, so that may be it. But other archives that show up there don't see the same issue, so I might have to check out pg_statistics to see what it's doing.00:54
wgrantOr harass stub.00:54
=== Ursinha is now known as Ursinha-afk
gary-lunchcool thanks lifeless01:17
* gary-lunch wonders how he became gary-lunch01:17
StevenKgary-lunch: It's a bit late for lunch, isn't it?01:18
=== gary-lunch is now known as gary_poster
gary_posteryes indeed01:18
StevenKAlmost lunch time here, in fact.01:18
wgrantAh.01:19
wgrantIt will happily use packageupload(archive, distroseries, status, id).01:19
wgrantI guess it must have decided that archive=1, distroseries=103 meant the final sort would be too expensive.01:20
wgrantDespite the fact that there are actually 0 rows.01:20
lifelesswgrant:  Limit  (cost=0.00..954.05 rows=31 width=36) (actual time=263.988..31328.809 rows=1 loops=1)01:25
lifeless   ->  Index Scan Backward using distroreleasequeue_pkey on packageupload  (cost=0.00..93404.35 rows=3035 width=36) (actual time=263.985..31328.804 rows=1 loops=1)01:25
lifeless         Filter: ((distroseries = 103) AND (archive = 1) AND (status = 0))01:25
lifeless Total runtime: 31328.871 ms01:25
lifeless(4 rows)01:25
lifeless1.5 seconds hot01:25
lifelesswgrant: thats qastaging01:25
wgrantlifeless: Right, that's about what I see on mawson.01:26
wgrantExcept about 25% faster.01:26
wgrantI'll talk to stub about unbreaking the indices tonight.01:26
wgrantSince the current ones were designed before archives were introduced...01:27
lifelessyou're adding an index to match the critera more closely01:27
lifelesswhats the explain analyze of the query that (isn't using) the new index look like01:27
lifelesswgrant: can you drop the order by ?01:28
lifelessTime: 37.729 ms01:28
wgrantlifeless: The current indices are not reasonable.01:28
wgrantWe need the order by.01:28
lifelesswgrant: why?01:28
wgrantpackageupload(distroseries, status) does not make sense any more.01:28
wgrantSince you never query PUs by series outside an archive.01:28
lifelesswgrant: sure, I'm not debating that, just looking at whats going on01:29
lifelesswgrant: I meant 'why do we need the order by'01:29
wgrantlifeless: So we don't show them in arbitrary order on DistroSeries:+queue01:29
lifelesswgrant: why would that matter ?01:30
wgrantBecause that would make batching sort of bad.01:30
lifelesswgrant:  SELECT PackageUpload.archive, PackageUpload.changesfile, PackageUpload.date_created, PackageUpload.distroseries, PackageUpload.id, PackageUpload.pocket, PackageUpload.signing_key, PackageUpload.status FROM01:32
lifeless                PackageUpload WHERE packageupload.distroseries = 103 AND packageupload.archive = 1 AND packageupload.status IN (0) ORDER BY packageupload.distroseries, packageupload.status, PackageUpload.date_created desc LIMIT 31 OFFSET 0;01:32
wgrantlifeless: That is cheating.01:33
lifelesswgrant: so is life01:33
wgrantThere's no index on PackageUpload.date_created, so it has no choice.01:33
wgrantIt will be slow if it returns lots of results.01:33
lifelesswgrant: right, so we would not want to do that for every query01:34
lifelesswgrant: but the queue isn't unlimited01:34
lifelesswgrant: and lots could be a few thousand without perf worries01:34
lifelesswgrant: I agree we need to improve the indices01:34
wgrantlifeless: https://launchpad.net/ubuntu/lucid/+queue?queue_state=3&queue_text=01:35
wgrant13000001:35
lifelesswgrant: whats 301:36
wgrantlifeless: Done.01:36
lifelesswe should delete them01:36
wgrantYou could argue that.01:36
lifelesss/c/sh/01:36
wgrantIt requires reworking lots of Soyuz. We should probably do that, but that is a *huge* *huge* thing.01:37
wgrantWe need to develop a strategy.01:37
LPCIBotProject windmill build #37: STILL FAILING in 1 hr 9 min: https://hudson.wedontsleep.org/job/windmill/37/01:37
wgrantOn how we handle history like this.01:37
wgrantAnd apply it everywhere.01:38
StevenKWindmill, you make me very sad.01:38
wgrantStevenK: It's right, though.01:39
lifelesswgrant: so, does the queue *post* need new indices to be fixed?01:40
lifelesswgrant: or would my hack give breathing space?01:40
wgrantlifeless: I personally think that some of this data is useful. The table is small, and it's extremely fast to query with the right indices.01:40
wgrantlifeless: I don't think that hack is useful.01:40
wgrantIt would work.01:40
lifelessok01:40
wgrantBut an index is less of a hack, and works everywhere.01:40
lifeless455 Time Outs01:56
lifelessnice01:56
lifelessbugger01:57
lifeless      23 /   22  POFile:+translate01:57
lifeless20 /    0  LanguageSet:CollectionResource:#languages01:57
wgrantWow.01:58
lifelessah01:58
wgrantBugger?01:58
lifelesswgrant: things we had fixed01:58
wgrantThey weren't deployed yet, were they?01:58
lifelessbut yeah01:58
lifeless9 hours of them01:58
wgrantThey are now.01:58
lifelesstomorrow will give better results again01:58
wgrantYep.01:58
wgrantThis is why I want 12-hourly ones :(01:59
lifelesswgrant: I want a sliding window01:59
wgrantRight.01:59
lifelessplus per-deploy01:59
wgrantBut that needs oops-repository.01:59
wgrant(I suspect)01:59
lifelesswell, can be done in the current code, just a matter of effort01:59
wgrantRight.02:00
lifelessI'm going to look into hbase as an alternative to cassandra02:00
wgrantOh?02:00
lifelessneed to send a raft of emails around02:00
wgrantI haven't heard much about hbase...02:00
wgrantBut it's Apache too, right?02:00
lifelessthat aspect is fine02:00
lifelessthe issue with cassandra is lack of range queries02:01
wgrant:(02:01
wgrantlifeless: Do we expect daemons to survive DB restarts? I know eg. librarian doesn't.02:10
lifelesswgrant: yes02:11
lifelesswgrant: exact implementation to be figured out later02:11
wgrantSo that's a no?02:11
lifelesstoday, restarting the db may wed daemons. If so thats a bug.02:12
wgrantI'm tempted to leave poppy broken in that situation, given that most other daemons will have the same issue.02:12
wgrantCan you see any problem with that?02:14
wgrantIt's not going to try to hold transactions open forever any more, so it shouldn't get killed :)02:15
lifelessif you know of a specific defect, please make sure there is a high bug about it02:15
wgrantI think it's a general defect in all daemons...02:16
lifelesswgrant: I wouldn't assume that02:16
wgrantAnyway, lunch, double poppy cowboy fixing, and then +copy-packages UI optimisations.02:18
wgrantBecause the actual copy operation is now fast :(02:18
lifeless\o/02:18
StevenKwgrant: That timeout was due to UI?02:19
LPCIBotProject windmill build #38: STILL FAILING in 46 min: https://hudson.wedontsleep.org/job/windmill/38/02:24
wgrantStevenK: Yes ;(02:26
wgrantAt least I think so.02:28
wgrantIt's a bit hard to tell exactly what's what.02:29
wgrantBecause the UI stuff generates a lot of queries.02:29
wgrantIt's also not copying binaries, which is a case that is less optimised. But it doesn't seem to get to the actual copies.02:30
wgrantErm.02:30
wgrant"I get a timeout error when trying to copy a few (5+) packages from a ppa"02:30
wgrantBut field.selected_sources has at least 15...02:30
wgrantI suppose that is technically still 5+...02:31
lifeless:>02:31
lifelesswow02:32
lifelessAggregate  (cost=7238627.72..7238627.7302:32
wgrantWhich query's that?02:32
lifelesshttps://lp-oops.canonical.com/oops.py/?oopsid=1895B187002:33
wgrantAh.02:33
lifelesspartitioning the query into two unioned on each fti column gets02:35
lifeless Aggregate  (cost=291.55..291.56 rows=1 width=0)02:35
lifelessI've been dreading this02:36
lifelessbut its time to bite the bullet and do it02:36
lifelessI'll do my administrivia stuff monday02:36
wgrantHeh02:37
lifelessI wonder02:37
lifelessmaybe I'll just ditch the bugtask fti column02:37
wgrantDoes that just index targetnamecache?02:37
lifeless16 more hits02:40
lifelessfor synaptics touchpad02:40
lifelesstargetnamecache and statusexplanation02:40
lifeless-wtf-02:40
wgrantI thought statusexplanation was actually dead now.02:41
wgrantApparently not :/02:41
lifelessCOMMENT ON COLUMN BugTask.statusexplanation IS 'A place to store bug task specific information as free text';02:42
wgrantYou know what it is, right?02:42
lifelessno idea02:42
wgrantYou know how the old task edit form had a comment field?02:43
wgrantThat adds a comment and sets statusexplanation.02:43
wgrantThose changes are also logged in bugactivity.02:43
lifelesslib/lp/bugs/scripts/bugzilla.py uses it02:43
wgrantIf that's what I think it is, it will die.02:43
wgrantI wonder if it still works.02:44
lifelessthe task edit form still exists02:44
lifelessbrowser/bugtask.py has02:44
wgrantYes, but it doesn't need to set statusexplanation.02:44
lifelessif comment_on_change:02:44
lifelessbugtask.statusexplanation = comment_on_change02:44
lifeless select count(*) from bugtask where statusexplanation is null or statusexplanation='';02:45
lifeless count02:45
lifeless--------02:45
lifeless 53132102:45
lifelessselect count(*) from bugtask where statusexplanation is not null;02:45
lifeless count02:45
lifeless--------02:45
lifeless 48000802:45
lifelessbah02:45
wgrantHmmm?02:45
lifelessselect count(*) from bugtask where statusexplanation is not null and statusexplanation != '';02:45
lifeless count02:45
lifeless--------02:45
lifelessso 300K set, 530K unset02:45
lifeless 30019802:45
wgrantRight. Kill it.02:45
wgrantIt has been thoroughly deprecated for more than 5 years.02:46
wgrantWe have these wonderful things called comments to store that information now :)02:46
lifelessbug/8854502:49
lifelessbug 8854502:50
lifelessno mup?02:50
thumperstatusexplanation?02:52
lifelessa discarded idea02:52
StevenKIs it actually used in the codebase at all?02:57
lifelessgrep ftw02:58
wgrantThe only place I've seen it exposed is BugTask:+activity02:58
StevenKlifeless: Isn't there another clean up you wanted to do with BugComment and Bug<name escapes me currently>02:59
lifelessjcsackett is on that02:59
lifelessor at least on nearby stuff02:59
wgrantBugMessage.visible was moved this morning.02:59
StevenKAh yes BugComment versus BugMessage03:00
lifelessthere is a completely redundant python class constructed from bugmessage+message03:00
lifelessif we had separation of concerns - a persistence layer - it would make sense03:00
lifelessbut its purely a Data Object at the moment, valueless.03:00
StevenKlibwebkitgtk-1.0.0-dbg DIALCF!03:01
wgrantStevenK: Why?03:02
StevenK240MiB debug packages make me cranky.03:02
wgrantHah.03:02
StevenKAnd it's Webkit, which I have other issues with.03:03
lifelesslike, it existing?03:06
StevenKlifeless: Is that your issue with it?03:07
lifelessno03:07
lifelessbundled libraries03:07
lifelessbugs03:07
lifelessfootprint03:07
StevenKThat's one of my issues -- my major gripe of it is just how much crap is in it03:07
wgrantI prefer WebKit to Gecko... at least once it has been deGoogled.03:07
lifelessits a whole desktop03:08
wgrantie. had the hundred external libraries excised.03:08
lifelesswhat could be wrong03:08
StevenKWhich gives us wonderful things like the aforementioned 240MiB debug packages.03:08
StevenKwgrant: Oh, Gecko is no better03:08
StevenKFrom the same people who gave us building UIs from XML03:08
StevenKOh crap, now I need to review my lunch.03:08
wgrantUm, most GTK apps now build UIs from XML :)03:08
lifelesswgrant: exactly03:09
StevenKDidn't XUL start that madness?03:09
wgrantIt is unclear that it is madness.03:09
lifelesswgrant: you saw https://code.launchpad.net/~lifeless/storm/with-without-datetime right ?03:10
StevenKAnyway, yay for feeping creaturism03:10
wgrantlifeless: I never looked at the code.03:10
lifelesswgrant: thats fine03:10
lifelesswhats the script that gives committer frequencies in lp03:11
wgrantWhat do you mean? Number of commits by person for a particular branch?03:12
lifelesswithin a timeframe, or per month, or whatever.03:12
lifelessyes03:12
lifelessI can has review? https://code.launchpad.net/~lifeless/launchpad/bug-716774/+merge/5296603:13
wgrantI don't know of anything beyond bzr-stats...03:13
lifelesswgrant: does PoppyFileWriter's validateGPG affect sftp uploads?03:14
wgrantlifeless: No.03:14
wgrantIt's only used in FTP for now.03:14
wgrant(WTF, I know, but convenient)03:14
lifelessthanks03:15
wgrantI guess I should start that IR at some point.03:15
lifelessor ask me to do it03:16
lifelessbut don't sit on it03:16
wgrantI'm sure you have better things to do. I'll do it.03:16
StevenKwgrant: Julian says he couldn't work out how to do it for SFTP uploads. Which made me sad. :_(03:20
wgrant:(03:20
StevenKI'm hoping poppy-{s,}ftp now get a good hard refactoring03:24
StevenK$DEITY knows they deserve it.03:24
wgrantA renaming wouldn't go astray either.03:24
StevenKOh, and death to zope ftp would be nice, too.03:26
wgrantlifeless: An advertised feature is no longer working. Not Critical?03:26
lifelesswgrant: we've never had it live03:28
lifelesswgrant: we tried and it went boom03:28
wgrantIt was working fine for like an hour :P03:28
lifelesswgrant: that doesn't count03:28
wgrant:(03:29
lifelessjulian blogging about it was great enthusiasm, but we probably want to wait for things to be stable before announcing03:29
wgrantIndeed.03:29
lifelesswgrant: point is, if we stopped work on the improvement right now, we haven't actually gone back on anything folk could have started depending on.03:30
lifelessthat said, I think we should push forward and get it going03:30
lifelessit will make a huge difference to usability.03:30
lifelessand that will mean happier and less confused users03:31
lifelesslower support overhead and easier training for new ubuntu devs03:31
wgrantthumper: Hi.03:36
thumperwgrant: hi03:36
wgrantthumper: Could you mentor https://code.launchpad.net/~lifeless/launchpad/bug-716774/+merge/52966?03:36
* thumper looks03:37
wgrantAnyone want to review https://code.launchpad.net/~wgrant/launchpad/poppy-transaction-unbreakage/+merge/52967?03:37
StevenKwgrant: Done. thumper ^03:39
thumperOMG03:40
thumpermy recursive query worked03:40
thumperhttp://pastebin.ubuntu.com/578642/03:40
StevenKAccording to the postgres docs it's iteration, not recursion :_)03:41
thumperdoes postgres have stored procs?03:41
StevenKFrom memory, yes03:42
thumperhmm03:43
StevenKwgrant: Wait. Are you sure you ran bzr add?03:43
thumperdoing the blueprint dependencies in the db has to be better than doing X queries03:43
lifelessthumper: yes03:47
lifelessthumper: you can do that with the storm we have in trunk03:47
thumperlifeless: how?03:47
lifelessstore.with(SQL('RECURSIVE dependencies(id, name, depth) AS (03:47
lifeless        SELECT s.id, s.name, 103:47
lifeless        FROM specification s03:47
lifeless        where s.id = 2042803:47
lifeless      UNION ALL03:47
lifeless        SELECT s.id, s.name, d.depth + 103:48
lifeless        FROM specificationdependency sd, dependencies d, specification s03:48
lifeless        WHERE sd.specification = d.id03:48
lifeless          AND s.id = sd.dependency03:48
lifeless)')03:48
lifelessbah03:48
lifelessstore.with_03:48
lifelessso store.with_(clause).find(Specification)03:48
lifelessor whatever03:48
lifelessprobably03:48
lifelessso store.with_(clause).find(Specification, SQL('Specification.id in (select id from dependencies))')03:49
lifelessthumper: care to review https://code.launchpad.net/~lifeless/launchpad/bug-716774/+merge/52966 ?03:51
thumperlifeless: I have03:52
lifelessoh sweet03:52
lifelessthanks03:52
lifelesssorry I hadn't noticed03:52
* lifeless ec2inates03:52
StevenKWhich just sounds ... wrong.03:52
wgrantStevenK: What did I miss?03:55
StevenKwgrant: It looks to me that you moved all the imports but not the actual method itself?03:55
wgrant211=== renamed file 'lib/lp/bugs/externalbugtracker/isolation.py' => 'lib/lp/services/database/isolation.py'03:55
wgrant212=== renamed file 'lib/lp/bugs/externalbugtracker/tests/test_isolation.py' => 'lib/lp/services/database/tests/test_isolation.py'03:55
StevenKAh ha. Objection withdrawn, the MP is still approved.03:56
thumperI'm actually pretty stoked about that blueprint dependency query03:58
thumpernow to squeeze it into the code somehow03:58
wgrantLet's hope we don't have to revert to pg 8.3 :)03:59
StevenKHaha03:59
thumperwgrant: recursive queries were added in 8.304:00
thumperat least I thought so04:01
StevenKWITH RECURSIVE was added in 8.404:01
wgrantI thought WITH was added in 8.4.04:01
thumperah...04:01
wgrantRight.04:01
thumperI wonder what the likelyhood of that is then...04:01
wgrant004:01
thumper\o/04:01
StevenKthumper: Can haz mentor? :-)04:08
wgrantthumper: Could you mentor https://code.launchpad.net/~wgrant/launchpad/poppy-transaction-unbreakage/+merge/52967?04:08
StevenKHaha04:08
* thumper looks04:08
wgrantThanks.04:09
thumper'tis past wine o'clock on a Friday04:09
thumperyou're lucky :004:09
lifelesswe're not reverting04:09
lifelessnot to 8.304:09
lifelessthat goose has flown04:09
StevenKCan we revert to 9.0? That sounds like FUN.04:10
thumperdone04:11
wgrant9.0 already? Well done.04:11
StevenKDamn it, I just missed a devel build on buildbot04:12
StevenK... by about 30 seconds. :-(04:12
wgrantWe can't roll out until Tuesday, either :(04:12
lifelesstuesday?04:12
wgrantACT public holiday on Monday, and no mthaddon next week.04:13
StevenKHaha, awesome04:13
* thumper wines a little04:15
* thumper AFK04:15
StevenKs/w/wh/04:15
* thumper pokes StevenK in the eye04:16
StevenKOw!04:16
wgrant:(04:50
wgrantDoes BugTask.status serve any useful purpose?04:51
lifelessuhm05:09
lifelessits where we store triaged etc05:09
wgrantOpinion/Invalid/Won'tFix aren't usefully separated, New is implicit, Confirmed is implied by affects, In Progress is effectively implied by assignee, Fix Committed and Fix Released are implied by MP status.05:11
wgrantSo we can replace them all with "valid" and "incomplete" flags.05:11
cody-somervilleor customizable bug statuses. \o/05:12
StevenKwgrant: Right, which works for *us*, but may not work for other projects.05:12
wgrantStevenK: They work for anyone that uses MPs.05:13
wgrantUnless they are abusing statuses, in which case they are wrong :)05:13
cody-somervilleno05:13
cody-somervilleits not 'wrong'. its the system speaking to you.05:13
StevenKcody-somerville: What possible need do you have for customizing bug statuses?05:14
cody-somervilleOh, OEM Services has tons since we abuse bugs for other things.05:14
huwshimiwgrant: Take a look at the statuses proposed on this page: https://dev.launchpad.net/IssueTracker05:14
wgranthuwshimi: Mmm. Better, but still not optimal.05:15
cody-somervilleugh. not better IMHO.05:16
StevenKWhat, two statuses? Fixed and Unfixed? :-P05:16
wgrantcody-somerville: Why?05:17
wgrantThe only significant change is merging Fix Committed and Fix Released.05:17
StevenKI think cody-somerville wants *more* statuses, not less.05:17
lifelessso workflow around bugs is a fascinating topic05:20
cody-somervilleindeed05:23
StevenKOH FER. libwebkitgtk-1.0-0-dbg isn't enough, libwebkitgtk-3.0-0-dbg exists too05:25
wgrantStevenK: Why are you dealing with them?05:26
StevenKLocal mirror sync05:26
wgrantAh.05:27
wgrant:(05:28
wgrantDF doesn't have memcached installed.05:28
cody-somervillebut for what its worth... I think the current set of bug statuses are alright. I'm much more interested and would get much more value  (professionally and personally) from things like build-from-branch and derivative distributions. :)05:29
StevenKcody-somerville: You know recipe builds are "done", right?05:30
wgrantRecipes != BFB05:30
StevenKOh, right.05:30
StevenKThat saddens me.05:30
StevenKlol. OO.o is in NBS05:31
cody-somervillecause although tweaking the bug statuses might make LP better to some degree, it isn't going to make it more competitive against say github or OBS.05:33
cody-somervilleAnyhow, I should try and get some sleep. :) *waves*05:34
* wgrant murders get(Build)StatusSummar(y|ies)(For(Builds|Source(Publication|IdsAndArchive)))05:49
StevenKwgrant: Seriously?05:52
LPCIBotProject windmill build #39: STILL FAILING in 1 hr 9 min: https://hudson.wedontsleep.org/job/windmill/39/05:53
wgrantStevenK: Well, bits of them at least.05:59
StevenKAww06:00
wgrantSourceForge's new platform is interesting.06:00
wgrantRather GitHubish.06:00
wgrantAnd far less awful than their old one, at first glance.06:01
huwshimiwgrant: They've just open sourced their backend too06:07
wgrantYeah, that's the new one.06:07
wgrantCurrently grabbing it...06:07
StevenKHaha, of course you are.06:08
wallyworldwgrant: i can't seem to run any windmill tests locally (to fix the breakage). is there a config item i need to tweak do you know?06:11
wgrantwallyworld: --layer=WindmillLayer06:14
wgrantIt defaults to --layer=!(MailmanLayer|WindmillLayer)06:15
wallyworldwgrant: thanks06:15
wallyworldwas that what you changed to stop the tests by default?06:16
wgrantYeah. It was previously just !MailmanLayer06:16
wgrant(see buildout-templates/bin/test.in)06:17
wgrantwallyworld: I considered just changing the vocab keys to series.name, but I'm not sure how much the form machinery will like that.06:32
wgrantEvening stub.06:33
wallyworldwgrant: you mean to fix the test? i'm still considering how to fix it. shouldn't be too hard06:34
wgrantwallyworld: The test isn't broken.06:34
wgrantwallyworld: The code is.06:34
stubyo06:34
wallyworldwgrant: yeah, can see that :-(06:35
wgrantstub: mawson's garbo-hourly is a bit unhappy. Do I have to manually apply session.sql?06:35
lifelessstub: how hard is it to update fti ?06:36
stubParts of launchpad_session.sql06:36
stubwgrant: What bit is it barfing on?06:36
wgrant -> http://librarian.dogfood.launchpad.net/57720639/nqvma824KMUojGISQIkXotVXlmD.txt (function cursor_fetch(unknown, integer) does not exist06:36
stublifeless: Just edit the data structure at the top of fti.py - it handles creating all the triggers, columns, indexes etc. automatically06:36
lifelessstub: can we update it live?06:37
stublifeless: No. Adding or changing the triggers requires a table lock.06:37
lifelessk06:37
lifelesswas thinking of sneaking up on https://code.launchpad.net/bugs/8854506:39
stubwgrant: So from database/schema/launchpad_session.sql you want CREATE OR REPLACE FUNCTION cursor_fetch and the GRANT EXECUTE ON FUNCTION cursor_fetch06:39
stub(I'd applied this manually to staging and production systems before the code landed but forgot about mawson)06:40
stubwgrant: That needs to be applied to the session database on mawson of course06:41
wgrantRight.06:41
wgrantThanks.06:41
wgrantMuch happier, thanks.06:42
wgrantstub: I also have some concerns about PackageUpload's indices.06:43
stubwgrant: ?06:46
wgrantstub: See the last comment in bug #27695006:47
wgrantI don't think packageupload(distroseries, status) has been very useful in the last ~4 years.06:47
stubwgrant: It seems to be used, but for what I can't tell: http://paste.ubuntu.com/578697/06:53
stubLooks like we haven't deleted any GPG keys for a while though06:54
wgrantstub: I guess it might try to use that if there's no order, even if the archive is constrained.06:55
wgrantIt avoids (archive, distroseries, status) for some values if it has to order by ID.06:55
wgrantBut will use it for others.06:55
StevenKstub: Does that mean the signing_key index is unused?06:55
stubStevenK: It means no lookups are done using signingkey. That index exists to support deleting a row from the gpgkey table (which needs to locate any referencing rows).06:56
StevenKstub: Ah right, which also explains your deletion of GPG keys comment.06:57
StevenKI'm pondering a new key, my current one is 7.5 years old06:58
stubwgrant: Do you have a problem with the table, such as really slow restore times, disk space utilization, or slow insert times?06:59
lifelessslow queries06:59
wgrantstub: Just slow queries.06:59
wgrantI think the existing index is pointless.06:59
wgrantAnd should be replaced.06:59
wgrantThere's an example query in the bug I referenced.06:59
stubIt might make sense to replace it.06:59
stubpoke mup07:00
wgrantIt's been dead most of the day.07:00
wgranthttps://bugs.launchpad.net/launchpad/+bug/27695007:00
stubwgrant: Your suggestion sounds sane. I wouldn't normally make such a specific index without knowing for sure it will be used, but you have already done that research.07:02
wgrant(archive, distroseries, status) queries are done extensively.07:02
stubWe don't have to drop the existing index though - if it becomes unused I'll pick it up next time I do a scan. It will slow down inserts, but won't slow down selects.07:03
stubRight. I don't think they used to, because we didn't used to have ppas etc.07:03
wgrantExactly.07:03
wgrantI think this index is just a few years out of date.07:03
stubBack from when the table was called DistroReleaseQueue it seems07:04
stub(maybe I can rename primary key indexes without pain now in 8.4?)07:04
lifelessstub: does postgresql have a log-slow-queries facility ?07:04
wgrant(I initially tried without id, but the slow view's queries sort by id, and in some conditions it reverts back to the plain id index)07:04
stublifeless: yes07:04
lifelessstub: can we turn that on, set to 15000ms, and get some reports around it ? Ideally we'd tie it back to the request/script07:05
lifelessstub: I'm thinking with all the improvements we've done, we're at the point where starting to track slow queries isn't just insane07:05
wgrantlifeless: You clearly haven't seen the scripts lately.07:05
lifelesswgrant: I'm very worried about script performance07:06
stublog_min_duration_statement. We should enable it for limited users though, perhaps just one appserver, to keep the logs sane.07:07
lifelessstub: by sane, do you mean 'not overwhelming' ?07:07
stubYes07:07
lifelessstub: rather than do it for limited users, lets set a higher minimum07:08
lifelessstub: that way we don't have to keep updating it as more users are added07:08
stublifeless: So it will be full of garbo queries then.07:08
stubWe expect some longer queries for the batch jobs - that is why they are batch jobs.07:09
lifelessstub: I want the backend tasks to be fast too07:09
lifelessstub: for a few reasons - latency, total overhead, mvcc garbage overhead07:10
lifelessstub: so I'm just as interested in garbo, rosetta etc as I am in appservers07:10
stubSo you won't see any appserver queries then, because I'd need to set the timeout to something nuts like 10seconds.07:10
lifelessstub: I was suggesting an initial setting of 15 seconds07:10
lifelessstub: we see 15 second queries on appservers at the moment07:10
lifelesswell, 13 now - cause they hit the timeout07:11
stubI'll turn it on at 15s and see how our logs survive.07:11
lifelessand expire on the server - but we still have a couple of overrides07:12
lifelesscool07:12
stubWe already get the statements killed by timeout btw. They show up as errors in the logs.07:13
lifelesscool07:13
stubparsing the logs sucks though. The format is bogus.07:14
lifelessthe oops reporting system should be telling us about all of the expired ones07:14
lifelessand i see this pattern a lot:07:14
lifelessa few cheap queries07:14
lifelessa mammoth query07:14
lifelessa few cheap queries07:14
lifelessan expired query07:14
stubpgfouine might make a reasonable report even if we don't feed it full logs.07:15
wgrantlifeless: Bugzilla integration? You mean the one-off script that imported Ubuntu Bugzilla?07:18
lifelesswgrant: poppy could run in autocommit mode perhaps07:19
lifelesswgrant: grep for the field, you tell me07:19
stubI'm not seeing any log spam at 15s07:21
wgrantWait 'til the publisher runs :)07:21
stub<update-pkg-cache@launchpad_prod_3:31495> 2011-03-11 07:22:14 UTC LOG:  duration: 88923.523 ms  statement: SELECT COUNT(*) FROM (SELECT DISTINCT BinaryPackageName.id, BinaryPackageName.name FROM BinaryPackageName, BinaryPackagePublishingHistory, BinaryPackageRelease, DistroArchSeries WHERE07:22
stub                    BinaryPackagePublishingHistory.binarypackagerelease =07:22
stub                        BinaryPackageRelease.id AND07:22
stub                    BinaryPackageRelease.binarypackagename =07:22
stub                        BinaryPackageName.id AND07:22
stub                    BinaryPackagePublishingHistory.status IN (1, 2) AND07:22
stub                    BinaryPackagePublishingHistory.pocket = 0 AND07:22
stub                    BinaryPackagePublishingHistory.distroarchseries =07:22
stub                        DistroArchSeries.id AND07:22
stub                    DistroArchSeries.distroseries = 103 AND07:22
stub                    BinaryPackagePublishingHistory.archive IN (1, 534)07:22
stub                     AND (1=1)) AS "_tmp"07:23
stubSo its working.07:23
stubAnd hopefully the publisher doesn't have any queries that evil ;)07:23
wgrantWell, some of its queries take 10 minutes on mawson... they're not quite that bad on prod, though.07:23
lifelessstub: I'd leave it for a day07:23
lifelessreview on monday07:24
stubI'm about to poke the GSAs to twiddle logrotate to guard against this taking us down.07:24
lifelessstub: awesome, thanks07:24
adeuringgood morning08:23
henningeHi adeuring!08:41
adeuringmoin henninge08:41
henningeadeuring: I am almost done with the check list.08:44
adeuringgreat08:45
=== adeuring changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: adeuring | https://code.launchpad.net/launchpad-project/+activereviews
=== almaisan-away is now known as al-maisan
henningeadeuring: pulled, merged, pushed09:03
adeuringcool09:03
henningeAnd it looks really cool, too.09:03
henningeand works well for most items because the views I am linking to use "ReturnToReferrerMixin", so I mostly get back to the details page.09:04
henningeonly the last one doesn't09:04
henningeadeuring: I have to run an errand, be back later.09:05
=== henninge is now known as henninge-bbl
jamlifeless: can you ec2land https://code.launchpad.net/~jameinel/launchpad/loggerhead-732481/+merge/5290209:19
jamor maybe adeuring ^^09:19
adeuringjam: yes, I'll land it.09:20
jamadeuring: thanks.09:20
LPCIBotProject windmill build #40: STILL FAILING in 1 hr 8 min: https://hudson.wedontsleep.org/job/windmill/40/10:07
=== henninge-bbl is now known as henninge
lifelessjam: something that would be nice: a patch to the loggerhead Makefile so that 'make check' runs the test suite with the loggerhead tree from .11:08
=== henninge_ is now known as henninge
=== al-maisan is now known as almaisan-away
deryckMorning, all.12:02
allenapderyck: Good morning :)12:08
allenapderyck: I have a branch that does some work on Javascript building. As an expert in this area, would you have time to review it?12:09
deryckallenap, sure.12:09
allenapderyck: https://code.launchpad.net/~allenap/launchpad/alt-javascript-build/+merge/5300612:09
allenapThank you :)12:09
derycknp12:10
derycklooking now....12:10
jtvAnyone here really familiar with feature flags?  I just can't figure out what the proper way to handle an "enabled" setting is.  Should I set true/false, or on/off?  Should I evaluate its value as boolean, or compare to my chosen "on" string?  How do I clear the flag in a test, and how in production?12:20
jtvThe existing code seems divided on the subject.12:20
wgrantjtv: I standardised it a few weeks back...12:20
wgrantIt should be pretty standard, except for memcache.12:20
wgrantif getFeatureFlag('foo'):12:20
jtvAnd then what are appropriate values for that flag?12:20
wgrantIt's not optimal ('' = False, everything else True), but it's simple and easy to use in TAL.12:21
wgrantWe agreed that it was the least evil solution for now.12:21
jtvCan we set a feature flag to the empty string>12:21
jtv?12:21
wgrantYes.12:21
deryckallenap, looks great, thanks for doing this!  r=me12:22
allenapderyck: Woohoo :) Thank you.12:22
derycknp :-)12:22
jtvwgrant: oh well, it seems to satisfy my tests.  Thanks.12:25
jtvAnd then I guess I can use any string whatsoever to indicate "on": yes, true, enable, on, or even off, disable, die, nothanks, samovar, …12:25
wgrantYes :(12:26
jtvIs the data still entered as a tab-separated text field?  Because that gives extra juice to the whole "blank" thing.12:27
wgrantThe separator can be any whitespace.12:27
allenapIs it me, or is Launchpad very slow right now?12:31
bigjoolsallenap: I don't know, are you slow?12:32
allenapbigjools: Fairly slow, yes.12:32
wgrantIt's slow, but not slower than usual AFAICT.12:32
allenapOkay, thanks. It's not doing anything at all for me now.12:33
bigjoolsmight be a bad appserver12:34
allenapbigjools: Sounds about right... it's okay again now.12:37
jtvwgrant: the feature flags documentation still uses "off" as an example.12:37
wgrantjtv: Where?12:40
wgrantjtv: The docs on /+feature-info should be up to date.12:40
jtvwgrant: https://dev.launchpad.net/FeatureFlags12:40
wgrantjtv: Fixed.12:41
jtvgreat, thanks12:41
jtvAnd the "on|off" bit as well, I see.12:42
jtvadeuring: got a review for you!  https://code.launchpad.net/~jtv/launchpad/bug-733132/+merge/5300912:47
adeuringjtv: I'll look12:47
jtvdankeschön12:47
=== almaisan-away is now known as al-maisan
adeuringjtv: the branch looks good. only one detail: FEATURE_FLAG as a variable name does not tell what the feature is about. Could you rename it to something like ENABLE_DERIVED_SERIES_JOBS ?13:12
jtvadeuring: I'm in two minds about that… doesn't the module it's in do enough to disambiguate it?13:12
jtvI could import it into the test as distroseriesdifferencejob.FEATURE_FLAG13:12
adeuringjtv: well, we could have two feature flags in this module13:13
jtvThat way the name is always disambiguated.13:13
jtvAh I see what you mean.13:13
adeuringI prefer names which tell what is done over how things are done13:14
jtvOkay, then how about ENABLING_FEATURE_FLAG?13:15
jtvBecause it is important to my mind that it is the feature flag, not e.g. a boolean that controls the feature.13:15
jtvIf the test refers to it as distroseriesdifferencejob.ENABLING_FEATURE_FLAG, I think that'd be about as clear as it could be.13:15
adeuringjtv: what about FEATURE_FLAG_ENABLE_DERIVED_JOBS?13:16
jtvGets a bit long, and basically for the purpose of repeating the module name.13:16
adeuringwithout say what is enabled, it looks to me still like a label on an electrial switch just saying "SWITCH" ;)13:16
jtvWell that would make sense in the context of a little circuit board when you know what the board is for, just not what outside part should be attached to the particular piece of wire you're looking at.13:18
adeuringjtv, ok, so... ENABLE_MODULE? or FLAG_ENALBE_MODULE?13:18
jtvIt would have to say "flag," but I don't see why it should say "module."13:19
adeuringwell, I still think that its good to indicate what is enabled13:19
jtvYes, but I'm relying on the "distroseriesdifferencejob" to imply that it's DistroSeriesDifferenceJob that's being enabled.13:21
jtvI don't think it'll confuse anyone, especially since it's not even being exported—it's just the test that refers to it from the outside.13:22
adeuringjtv: ok, for the test distroseriesdifferencejob.WHAETEVER is more or less fine, but _inside_ the module something like FEATURE_FLAG_ENABLE_MODULE would still make more sense to me13:23
jtvOK, I can't say I like it much but you have the advantage of a fresh outside look.  I'll use that.13:25
adeuringjtv: thanks :)13:26
adeuringso, r=me13:26
jtvThanks13:26
bigjoolsgary_poster: another quick buildout question - if we have sourcecode deps in the dists tree but not mentioned in versions.cfg, are they used somewhere else or are they safe to remove?13:35
gary_postermaybe used somewhere else bigjools.  sadly, sourcecode is a separate mechanism13:36
gary_poster(and on call :-) )13:36
bigjoolsgary_poster: darn :/  ok thanks13:36
allenapadeuring: Hi Abel. Could you review a tiny branch for me please? https://code.launchpad.net/~allenap/launchpad/fix-librarian-startup-warnings/+merge/5301813:46
adeuringallenap: sure, I'll look13:48
allenapThanks.13:48
adeuringallenap: r=me13:53
allenapadeuring: Cheers.13:53
wgrantle13:57
wgrantsinzui: Hi.13:58
sinzuihi wgrant13:58
wgrantsinzui: You upgraded lazr.restful to 0.17.4 a couple of days ago, right?13:58
sinzuiI did13:58
wgrant0.17.2 has a regression in exception handling.13:58
wgrantSee #launchpad.13:58
sinzuiwas that fixed in 17.3 by leonardr13:59
wgrantNo.13:59
wgrantIt's still broken in 0.17.4 (which is on prod now)13:59
wgrantOOPS-1896STAGING12814:00
sinzuiWell I am not going to fix that regression by restoring another regression14:00
sinzuiI will need to talk to leonardr14:00
wgrantIndeed, that's what I was going to suggest.14:00
wgrantI haven't filed a bug, since it is 1am.14:01
wgrantCan you poke leonard about this when he appears?14:01
sinzuiMy change was to revert the xhtml-in-json because it was being injected into pages without being escaped14:01
wgrantRight.14:01
wgrantIt just pulled in the exception handling changes too.14:02
sinzui0.17.3 does something interesting with exception handling. It fixed some broken tests I saw in 0.17.214:02
wgrantAhhh.14:02
wgrantI think I see what's going on, maybe.14:02
sinzuiReverting that change breaks the test suite :)14:03
wgrantHmm, no, I don't see it.14:03
sinzuiWhich was also why I was not going to land my work...I hand never seen my tests run successfully.14:03
wgrantBut the 0.17.2 diff looks like a hack :/14:03
wgrantIt also looks like it should be using .response_code, not .status...14:05
LPCIBotProject windmill build #41: STILL FAILING in 1 hr 8 min: https://hudson.wedontsleep.org/job/windmill/41/14:06
sinzuiwgrant: I recall "status" reappeared in response output when I added this version to Lp. I assumed it was because of my change, not leonardr's14:07
wgrantAnyway, leonardr will save the world.14:08
sinzuiwgrant: are you certain 0.17.2 was live? the expose(exception, code) signature was very new. like late last week14:09
wgrantsinzui: We rolled out your change (with 0.17.4) this morning, AFAIK.14:10
sinzuiI had to update my deps to resolve the sugnature change14:10
sinzuiright, and 0.17.3 was never released. But was 0.17.2 really the version in production. 0.17.1 looks like the version I have last week14:11
wgrantHmm? It broke in 0.17.2, and is still broken in 0.17.414:11
wgrantTimeouts OOPS like that staging OOPS I gave above.14:12
wgrant0.17.4 was introduced in r12565, and r12568 is now on production.14:13
abentleyderyck: bzr+ssh://bazaar.launchpad.net/~abentley/launchpad/js-translation14:14
wgrantAnyway, night.14:16
abentleyderyck: http://pastebin.ubuntu.com/578842/14:17
deryckabentley, ci = new CheckItem({identifier: 'id1'})14:20
jmlhow do I search for bugs that don't have certain tags?14:49
james_wjml, https://bugs.launchpad.net/launchpad/+bug/8157514:51
_mup_Bug #81575: no way to search for absence of a tag <bugtag> <lp-bugs> <oem-services> <ubuntu-qa> <Launchpad itself:Fix Released by allenap> < https://launchpad.net/bugs/81575 >14:51
jmljames_w: ta14:54
jcsackettis it bad that i'm excited a db patch i landed took under 10 minutes?15:02
* jcsackett figures it probably is.15:03
sinzuiNot bad15:03
sinzuiwill your patch break everything?15:03
* jml trying out new battery.15:05
jcsackettsinzui: no, my patch fixes messages.15:10
jcsackettsinzui: it was the visibility db patch.15:10
jcsackettsinzui: real question is how long it takes on the weekend super-rebuild.15:11
=== al-maisan is now known as almaisan-away
rvbajcsackett: quick question: how did you know how long your patch took to be applied?15:51
rvbasinzui: thanks for your review ... I think I misunderstood the word 'resubmit' and did put a red mark on my own proposal ;-).15:55
jcsackettdoes staging have different timeout thresholds from production?16:05
sinzuirvba: I'll follow up the review when the diff completes its update16:06
=== matsubara is now known as matsubara-lunch
=== bdmurray_ is now known as bdmurray
deryckhenninge, still around?16:16
henningederyck: yes, for the moment16:17
deryckhenninge, need just a quick ack that this looks sane for displaying "not translated" -- http://people.canonical.com/~deryck/in-upstream-msg.png16:17
deryckhenninge, in your opinion.  not asking for a formal ui review ;)16:17
henningethat looks good, although we use "(not translated yet)" in other places  AFAIR16:18
deryckhenninge, ok, I'll match that.  thanks.16:21
bacyou still around adeuring?16:21
=== bac changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: adeuring, bac | https://code.launchpad.net/launchpad-project/+activereviews
adeuringbac: yes16:21
sinzuirvba: r=me for code and tests16:22
bacadeuring: sorry it took me so long to show up today16:22
adeuringwell, for an hour or so16:22
adeuringbac:  no problem :)16:22
bacadeuring: i'll take wallyworld's branch16:23
adeuringbac: cool, thanks16:23
adeuringbac; I must admit that I simply cducked out from looking at the loggerhead stuff -- I have no real clue about it...16:24
bacadeuring: you're the best judge of what you can do a good job reviewing16:24
rvbasinzui: nice. thx for the careful review. It's precious to me because I can find many layers of different ways to do the same things in the code.16:25
sinzuirvba: yes. We are very bad to removing code/test styles that we decide were bad16:26
rvbasinzui: I'll have to correct my own changes from last week.16:27
=== bac` is now known as bac
=== beuno is now known as beuno-lunch
=== matsubara-lunch is now known as matsubara
=== m4n1sh_ is now known as m4n1sh
deryckadeuring, you still open for reviews?17:22
adeuringderycksure17:22
deryckadeuring, https://code.launchpad.net/~deryck/launchpad/upstream-empty-display-707825/+merge/53050  thanks!17:22
deryckadeuring, I was thinking of taking lunch now, too, but if you want me to hang around for interactive chatter, I can.17:22
adeuringderyck: na, I don't want you to become unnecessarily hungry ;)17:23
deryckheh, thanks!17:23
=== deryck is now known as deryck[lunch]
=== beuno-lunch is now known as beuno
adeuringderyck[lunch]: r=me17:41
LPCIBotProject windmill build #42: STILL FAILING in 1 hr 9 min: https://hudson.wedontsleep.org/job/windmill/42/18:07
=== Ursinha-afk is now known as Ursinha
=== adeuring changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: bac | https://code.launchpad.net/launchpad-project/+activereviews
=== deryck[lunch] is now known as deryck
abentleyderyck: I've written a stub html file to use until henninge and abel's work is ready, but it says "YUI id not defined": http://pastebin.ubuntu.com/578968/19:36
abentleys/id/is19:37
* deryck looks19:37
deryckabentley, paths are wrong in the script links.  Did you copy from the test file?  If so, you're now up one "../" level from before.19:39
abentleyderyck: ah.  Yes, I did.  mutter.19:39
allenapmaxb, jam: Did you get reject messages from launchpad-bugs-owner or launchpad-reviews-owner?20:17
maxboh dear, I deleted them without paying attention. Let me oscillate the status of a MP to send some more20:17
allenapThanks.20:17
maxbReceived: from loganberry.canonical.com (localhost [127.0.0.1]) for <launchpad-bugs@lists.ubuntu.com>; Fri, 11 Mar 2011 20:19:54 +0000 (UTC)20:21
maxbX-Launchpad-Message-Rationale: Reviewer @loggerhead-team20:21
maxballenap: ^20:22
allenapmaxb: Cool, thanks.20:22
sinzuiI worry for the 4 kittens in my house. These old bug views are evil. I sense the Monkey god will seek vengeance :(20:25
allenapmaxb: I've deactivated the membership of ~launchpad from ~loggerhead-reviewers. I'll reply to the thread on launchpad-dev too. I think it's happened because ~launchpad was automatically made a member of ~loggerhead-reviewers when I set it as the owner.20:26
maxballenap: The  X-Launchpad-Message-Rationale: Reviewer @loggerhead-team  makes me doubt this will fix the issue?20:26
allenapmaxb: Was that on a new mp? Perhaps the branch reviewer is copied at mp creation.20:27
maxboh, I see your point.20:27
=== pjdc_ is now known as pjdc
lifelessmatsubara: hi20:52
matsubaralifeless, hi20:52
lifelessmatsubara: how do I land https://code.launchpad.net/~lifeless/oops-tools/limits/+merge/52348 ?20:53
lifelessmatsubara: or were you going to check it passes tests etc? [it may now]20:53
matsubaralifeless, I checked. all tests pass. to land it just set a commit message and set the MP to approved. tarmac will take care of running the test suite and merging on trunk20:54
matsubaraI'll deploy afterwards20:54
lifelessdoing now20:54
matsubaracool. thanks20:54
lifelessdone20:55
matsubaralifeless, looks like the postgresql instance in the tarmac chroot is not working20:58
lifelessmatsubara: why the change to vcs-imports/registry ?21:34
matsubaralifeless, what change?21:34
lifelessmatsubara: you removed ~registry from ~vcs-imports21:34
matsubaralifeless, did I? I deleted ~launchpad-chr but that shouldn't be related21:35
lifelessforwarded to you21:36
matsubaralifeless, don't know what happened there, but I suspect it was because I deleted ~launchpad-chr today21:40
lifelessmight be worth checking that maxb etc can still admin imports21:41
maxbI believe I was/am a direct member of ~vcs-imports21:41
maxbyes, I still seem to have the access21:42
lifelesskk21:42
LPCIBotProject windmill build #43: STILL FAILING in 1 hr 12 min: https://hudson.wedontsleep.org/job/windmill/43/22:26
=== matsubara is now known as matsubara-afk

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