[00:23] -> pet store and stuff [00:24] gary-lunch: look at rev 12564 in devel to see how to do a with query with my patched storm [00:37] I 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:38] do you have a sample query ? [00:39] EXPLAIN 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] That uses the index. [00:39] And is fast. [00:39] s/534/1/, no index, slow. [00:39] gotta run, bbiab [00:50] Oh. Now that is interesting. [00:51] It uses the index if distroseries=102 [00:51] But not 103. [00:53] is it the usual thing where it thinks it's going to be looking at most of the table anyway? [00:53] I presume so. [00:54] 103 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] Or harass stub. === Ursinha is now known as Ursinha-afk [01:17] cool thanks lifeless [01:17] * gary-lunch wonders how he became gary-lunch [01:18] gary-lunch: It's a bit late for lunch, isn't it? === gary-lunch is now known as gary_poster [01:18] yes indeed [01:18] Almost lunch time here, in fact. [01:19] Ah. [01:19] It will happily use packageupload(archive, distroseries, status, id). [01:20] I guess it must have decided that archive=1, distroseries=103 meant the final sort would be too expensive. [01:20] Despite the fact that there are actually 0 rows. [01:25] wgrant: Limit (cost=0.00..954.05 rows=31 width=36) (actual time=263.988..31328.809 rows=1 loops=1) [01:25] -> 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] Filter: ((distroseries = 103) AND (archive = 1) AND (status = 0)) [01:25] Total runtime: 31328.871 ms [01:25] (4 rows) [01:25] 1.5 seconds hot [01:25] wgrant: thats qastaging [01:26] lifeless: Right, that's about what I see on mawson. [01:26] Except about 25% faster. [01:26] I'll talk to stub about unbreaking the indices tonight. [01:27] Since the current ones were designed before archives were introduced... [01:27] you're adding an index to match the critera more closely [01:27] whats the explain analyze of the query that (isn't using) the new index look like [01:28] wgrant: can you drop the order by ? [01:28] Time: 37.729 ms [01:28] lifeless: The current indices are not reasonable. [01:28] We need the order by. [01:28] wgrant: why? [01:28] packageupload(distroseries, status) does not make sense any more. [01:28] Since you never query PUs by series outside an archive. [01:29] wgrant: sure, I'm not debating that, just looking at whats going on [01:29] wgrant: I meant 'why do we need the order by' [01:29] lifeless: So we don't show them in arbitrary order on DistroSeries:+queue [01:30] wgrant: why would that matter ? [01:30] Because that would make batching sort of bad. [01:32] wgrant: SELECT PackageUpload.archive, PackageUpload.changesfile, PackageUpload.date_created, PackageUpload.distroseries, PackageUpload.id, PackageUpload.pocket, PackageUpload.signing_key, PackageUpload.status FROM [01:32] 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:33] lifeless: That is cheating. [01:33] wgrant: so is life [01:33] There's no index on PackageUpload.date_created, so it has no choice. [01:33] It will be slow if it returns lots of results. [01:34] wgrant: right, so we would not want to do that for every query [01:34] wgrant: but the queue isn't unlimited [01:34] wgrant: and lots could be a few thousand without perf worries [01:34] wgrant: I agree we need to improve the indices [01:35] lifeless: https://launchpad.net/ubuntu/lucid/+queue?queue_state=3&queue_text= [01:35] 130000 [01:36] wgrant: whats 3 [01:36] lifeless: Done. [01:36] we should delete them [01:36] You could argue that. [01:36] s/c/sh/ [01:37] It requires reworking lots of Soyuz. We should probably do that, but that is a *huge* *huge* thing. [01:37] We need to develop a strategy. [01:37] Project windmill build #37: STILL FAILING in 1 hr 9 min: https://hudson.wedontsleep.org/job/windmill/37/ [01:37] On how we handle history like this. [01:38] And apply it everywhere. [01:38] Windmill, you make me very sad. [01:39] StevenK: It's right, though. [01:40] wgrant: so, does the queue *post* need new indices to be fixed? [01:40] wgrant: or would my hack give breathing space? [01:40] lifeless: 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] lifeless: I don't think that hack is useful. [01:40] It would work. [01:40] ok [01:40] But an index is less of a hack, and works everywhere. [01:56] 455 Time Outs [01:56] nice [01:57] bugger [01:57] 23 / 22 POFile:+translate [01:57] 20 / 0 LanguageSet:CollectionResource:#languages [01:58] Wow. [01:58] ah [01:58] Bugger? [01:58] wgrant: things we had fixed [01:58] They weren't deployed yet, were they? [01:58] but yeah [01:58] 9 hours of them [01:58] They are now. [01:58] tomorrow will give better results again [01:58] Yep. [01:59] This is why I want 12-hourly ones :( [01:59] wgrant: I want a sliding window [01:59] Right. [01:59] plus per-deploy [01:59] But that needs oops-repository. [01:59] (I suspect) [01:59] well, can be done in the current code, just a matter of effort [02:00] Right. [02:00] I'm going to look into hbase as an alternative to cassandra [02:00] Oh? [02:00] need to send a raft of emails around [02:00] I haven't heard much about hbase... [02:00] But it's Apache too, right? [02:00] that aspect is fine [02:01] the issue with cassandra is lack of range queries [02:01] :( [02:10] lifeless: Do we expect daemons to survive DB restarts? I know eg. librarian doesn't. [02:11] wgrant: yes [02:11] wgrant: exact implementation to be figured out later [02:11] So that's a no? [02:12] today, restarting the db may wed daemons. If so thats a bug. [02:12] I'm tempted to leave poppy broken in that situation, given that most other daemons will have the same issue. [02:14] Can you see any problem with that? [02:15] It's not going to try to hold transactions open forever any more, so it shouldn't get killed :) [02:15] if you know of a specific defect, please make sure there is a high bug about it [02:16] I think it's a general defect in all daemons... [02:16] wgrant: I wouldn't assume that [02:18] Anyway, lunch, double poppy cowboy fixing, and then +copy-packages UI optimisations. [02:18] Because the actual copy operation is now fast :( [02:18] \o/ [02:19] wgrant: That timeout was due to UI? [02:24] Project windmill build #38: STILL FAILING in 46 min: https://hudson.wedontsleep.org/job/windmill/38/ [02:26] StevenK: Yes ;( [02:28] At least I think so. [02:29] It's a bit hard to tell exactly what's what. [02:29] Because the UI stuff generates a lot of queries. [02:30] It'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] Erm. [02:30] "I get a timeout error when trying to copy a few (5+) packages from a ppa" [02:30] But field.selected_sources has at least 15... [02:31] I suppose that is technically still 5+... [02:31] :> [02:32] wow [02:32] Aggregate (cost=7238627.72..7238627.73 [02:32] Which query's that? [02:33] https://lp-oops.canonical.com/oops.py/?oopsid=1895B1870 [02:33] Ah. [02:35] partitioning the query into two unioned on each fti column gets [02:35] Aggregate (cost=291.55..291.56 rows=1 width=0) [02:36] I've been dreading this [02:36] but its time to bite the bullet and do it [02:36] I'll do my administrivia stuff monday [02:37] Heh [02:37] I wonder [02:37] maybe I'll just ditch the bugtask fti column [02:37] Does that just index targetnamecache? [02:40] 16 more hits [02:40] for synaptics touchpad [02:40] targetnamecache and statusexplanation [02:40] -wtf- [02:41] I thought statusexplanation was actually dead now. [02:41] Apparently not :/ [02:42] COMMENT ON COLUMN BugTask.statusexplanation IS 'A place to store bug task specific information as free text'; [02:42] You know what it is, right? [02:42] no idea [02:43] You know how the old task edit form had a comment field? [02:43] That adds a comment and sets statusexplanation. [02:43] Those changes are also logged in bugactivity. [02:43] lib/lp/bugs/scripts/bugzilla.py uses it [02:43] If that's what I think it is, it will die. [02:44] I wonder if it still works. [02:44] the task edit form still exists [02:44] browser/bugtask.py has [02:44] Yes, but it doesn't need to set statusexplanation. [02:44] if comment_on_change: [02:44] bugtask.statusexplanation = comment_on_change [02:45] select count(*) from bugtask where statusexplanation is null or statusexplanation=''; [02:45] count [02:45] -------- [02:45] 531321 [02:45] select count(*) from bugtask where statusexplanation is not null; [02:45] count [02:45] -------- [02:45] 480008 [02:45] bah [02:45] Hmmm? [02:45] select count(*) from bugtask where statusexplanation is not null and statusexplanation != ''; [02:45] count [02:45] -------- [02:45] so 300K set, 530K unset [02:45] 300198 [02:45] Right. Kill it. [02:46] It has been thoroughly deprecated for more than 5 years. [02:46] We have these wonderful things called comments to store that information now :) [02:49] bug/88545 [02:50] bug 88545 [02:50] no mup? [02:52] statusexplanation? [02:52] a discarded idea [02:57] Is it actually used in the codebase at all? [02:58] grep ftw [02:58] The only place I've seen it exposed is BugTask:+activity [02:59] lifeless: Isn't there another clean up you wanted to do with BugComment and Bug [02:59] jcsackett is on that [02:59] or at least on nearby stuff [02:59] BugMessage.visible was moved this morning. [03:00] Ah yes BugComment versus BugMessage [03:00] there is a completely redundant python class constructed from bugmessage+message [03:00] if we had separation of concerns - a persistence layer - it would make sense [03:00] but its purely a Data Object at the moment, valueless. [03:01] libwebkitgtk-1.0.0-dbg DIALCF! [03:02] StevenK: Why? [03:02] 240MiB debug packages make me cranky. [03:02] Hah. [03:03] And it's Webkit, which I have other issues with. [03:06] like, it existing? [03:07] lifeless: Is that your issue with it? [03:07] no [03:07] bundled libraries [03:07] bugs [03:07] footprint [03:07] That's one of my issues -- my major gripe of it is just how much crap is in it [03:07] I prefer WebKit to Gecko... at least once it has been deGoogled. [03:08] its a whole desktop [03:08] ie. had the hundred external libraries excised. [03:08] what could be wrong [03:08] Which gives us wonderful things like the aforementioned 240MiB debug packages. [03:08] wgrant: Oh, Gecko is no better [03:08] From the same people who gave us building UIs from XML [03:08] Oh crap, now I need to review my lunch. [03:08] Um, most GTK apps now build UIs from XML :) [03:09] wgrant: exactly [03:09] Didn't XUL start that madness? [03:09] It is unclear that it is madness. [03:10] wgrant: you saw https://code.launchpad.net/~lifeless/storm/with-without-datetime right ? [03:10] Anyway, yay for feeping creaturism [03:10] lifeless: I never looked at the code. [03:10] wgrant: thats fine [03:11] whats the script that gives committer frequencies in lp [03:12] What do you mean? Number of commits by person for a particular branch? [03:12] within a timeframe, or per month, or whatever. [03:12] yes [03:13] I can has review? https://code.launchpad.net/~lifeless/launchpad/bug-716774/+merge/52966 [03:13] I don't know of anything beyond bzr-stats... [03:14] wgrant: does PoppyFileWriter's validateGPG affect sftp uploads? [03:14] lifeless: No. [03:14] It's only used in FTP for now. [03:14] (WTF, I know, but convenient) [03:15] thanks [03:15] I guess I should start that IR at some point. [03:16] or ask me to do it [03:16] but don't sit on it [03:16] I'm sure you have better things to do. I'll do it. [03:20] wgrant: Julian says he couldn't work out how to do it for SFTP uploads. Which made me sad. :_( [03:20] :( [03:24] I'm hoping poppy-{s,}ftp now get a good hard refactoring [03:24] $DEITY knows they deserve it. [03:24] A renaming wouldn't go astray either. [03:26] Oh, and death to zope ftp would be nice, too. [03:26] lifeless: An advertised feature is no longer working. Not Critical? [03:28] wgrant: we've never had it live [03:28] wgrant: we tried and it went boom [03:28] It was working fine for like an hour :P [03:28] wgrant: that doesn't count [03:29] :( [03:29] julian blogging about it was great enthusiasm, but we probably want to wait for things to be stable before announcing [03:29] Indeed. [03:30] wgrant: 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] that said, I think we should push forward and get it going [03:30] it will make a huge difference to usability. [03:31] and that will mean happier and less confused users [03:31] lower support overhead and easier training for new ubuntu devs [03:36] thumper: Hi. [03:36] wgrant: hi [03:36] thumper: Could you mentor https://code.launchpad.net/~lifeless/launchpad/bug-716774/+merge/52966? [03:37] * thumper looks [03:37] Anyone want to review https://code.launchpad.net/~wgrant/launchpad/poppy-transaction-unbreakage/+merge/52967? [03:39] wgrant: Done. thumper ^ [03:40] OMG [03:40] my recursive query worked [03:40] http://pastebin.ubuntu.com/578642/ [03:41] According to the postgres docs it's iteration, not recursion :_) [03:41] does postgres have stored procs? [03:42] From memory, yes [03:43] hmm [03:43] wgrant: Wait. Are you sure you ran bzr add? [03:43] doing the blueprint dependencies in the db has to be better than doing X queries [03:47] thumper: yes [03:47] thumper: you can do that with the storm we have in trunk [03:47] lifeless: how? [03:47] store.with(SQL('RECURSIVE dependencies(id, name, depth) AS ( [03:47] SELECT s.id, s.name, 1 [03:47] FROM specification s [03:47] where s.id = 20428 [03:47] UNION ALL [03:48] SELECT s.id, s.name, d.depth + 1 [03:48] FROM specificationdependency sd, dependencies d, specification s [03:48] WHERE sd.specification = d.id [03:48] AND s.id = sd.dependency [03:48] )') [03:48] bah [03:48] store.with_ [03:48] so store.with_(clause).find(Specification) [03:48] or whatever [03:48] probably [03:49] so store.with_(clause).find(Specification, SQL('Specification.id in (select id from dependencies))') [03:51] thumper: care to review https://code.launchpad.net/~lifeless/launchpad/bug-716774/+merge/52966 ? [03:52] lifeless: I have [03:52] oh sweet [03:52] thanks [03:52] sorry I hadn't noticed [03:52] * lifeless ec2inates [03:52] Which just sounds ... wrong. [03:55] StevenK: What did I miss? [03:55] wgrant: It looks to me that you moved all the imports but not the actual method itself? [03:55] 211 === renamed file 'lib/lp/bugs/externalbugtracker/isolation.py' => 'lib/lp/services/database/isolation.py' [03:55] 212 === renamed file 'lib/lp/bugs/externalbugtracker/tests/test_isolation.py' => 'lib/lp/services/database/tests/test_isolation.py' [03:56] Ah ha. Objection withdrawn, the MP is still approved. [03:58] I'm actually pretty stoked about that blueprint dependency query [03:58] now to squeeze it into the code somehow [03:59] Let's hope we don't have to revert to pg 8.3 :) [03:59] Haha [04:00] wgrant: recursive queries were added in 8.3 [04:01] at least I thought so [04:01] WITH RECURSIVE was added in 8.4 [04:01] I thought WITH was added in 8.4. [04:01] ah... [04:01] Right. [04:01] I wonder what the likelyhood of that is then... [04:01] 0 [04:01] \o/ [04:08] thumper: Can haz mentor? :-) [04:08] thumper: Could you mentor https://code.launchpad.net/~wgrant/launchpad/poppy-transaction-unbreakage/+merge/52967? [04:08] Haha [04:08] * thumper looks [04:09] Thanks. [04:09] 'tis past wine o'clock on a Friday [04:09] you're lucky :0 [04:09] we're not reverting [04:09] not to 8.3 [04:09] that goose has flown [04:10] Can we revert to 9.0? That sounds like FUN. [04:11] done [04:11] 9.0 already? Well done. [04:12] Damn it, I just missed a devel build on buildbot [04:12] ... by about 30 seconds. :-( [04:12] We can't roll out until Tuesday, either :( [04:12] tuesday? [04:13] ACT public holiday on Monday, and no mthaddon next week. [04:13] Haha, awesome [04:15] * thumper wines a little [04:15] * thumper AFK [04:15] s/w/wh/ [04:16] * thumper pokes StevenK in the eye [04:16] Ow! [04:50] :( [04:51] Does BugTask.status serve any useful purpose? [05:09] uhm [05:09] its where we store triaged etc [05:11] Opinion/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] So we can replace them all with "valid" and "incomplete" flags. [05:12] or customizable bug statuses. \o/ [05:12] wgrant: Right, which works for *us*, but may not work for other projects. [05:13] StevenK: They work for anyone that uses MPs. [05:13] Unless they are abusing statuses, in which case they are wrong :) [05:13] no [05:13] its not 'wrong'. its the system speaking to you. [05:14] cody-somerville: What possible need do you have for customizing bug statuses? [05:14] Oh, OEM Services has tons since we abuse bugs for other things. [05:14] wgrant: Take a look at the statuses proposed on this page: https://dev.launchpad.net/IssueTracker [05:15] huwshimi: Mmm. Better, but still not optimal. [05:16] ugh. not better IMHO. [05:16] What, two statuses? Fixed and Unfixed? :-P [05:17] cody-somerville: Why? [05:17] The only significant change is merging Fix Committed and Fix Released. [05:17] I think cody-somerville wants *more* statuses, not less. [05:20] so workflow around bugs is a fascinating topic [05:23] indeed [05:25] OH FER. libwebkitgtk-1.0-0-dbg isn't enough, libwebkitgtk-3.0-0-dbg exists too [05:26] StevenK: Why are you dealing with them? [05:26] Local mirror sync [05:27] Ah. [05:28] :( [05:28] DF doesn't have memcached installed. [05:29] but 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:30] cody-somerville: You know recipe builds are "done", right? [05:30] Recipes != BFB [05:30] Oh, right. [05:30] That saddens me. [05:31] lol. OO.o is in NBS [05:33] cause 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:34] Anyhow, I should try and get some sleep. :) *waves* [05:49] * wgrant murders get(Build)StatusSummar(y|ies)(For(Builds|Source(Publication|IdsAndArchive))) [05:52] wgrant: Seriously? [05:53] Project windmill build #39: STILL FAILING in 1 hr 9 min: https://hudson.wedontsleep.org/job/windmill/39/ [05:59] StevenK: Well, bits of them at least. [06:00] Aww [06:00] SourceForge's new platform is interesting. [06:00] Rather GitHubish. [06:01] And far less awful than their old one, at first glance. [06:07] wgrant: They've just open sourced their backend too [06:07] Yeah, that's the new one. [06:07] Currently grabbing it... [06:08] Haha, of course you are. [06:11] wgrant: 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:14] wallyworld: --layer=WindmillLayer [06:15] It defaults to --layer=!(MailmanLayer|WindmillLayer) [06:15] wgrant: thanks [06:16] was that what you changed to stop the tests by default? [06:16] Yeah. It was previously just !MailmanLayer [06:17] (see buildout-templates/bin/test.in) [06:32] wallyworld: I considered just changing the vocab keys to series.name, but I'm not sure how much the form machinery will like that. [06:33] Evening stub. [06:34] wgrant: you mean to fix the test? i'm still considering how to fix it. shouldn't be too hard [06:34] wallyworld: The test isn't broken. [06:34] wallyworld: The code is. [06:34] yo [06:35] wgrant: yeah, can see that :-( [06:35] stub: mawson's garbo-hourly is a bit unhappy. Do I have to manually apply session.sql? [06:36] stub: how hard is it to update fti ? [06:36] Parts of launchpad_session.sql [06:36] wgrant: What bit is it barfing on? [06:36] -> http://librarian.dogfood.launchpad.net/57720639/nqvma824KMUojGISQIkXotVXlmD.txt (function cursor_fetch(unknown, integer) does not exist [06:36] lifeless: Just edit the data structure at the top of fti.py - it handles creating all the triggers, columns, indexes etc. automatically [06:37] stub: can we update it live? [06:37] lifeless: No. Adding or changing the triggers requires a table lock. [06:37] k [06:39] was thinking of sneaking up on https://code.launchpad.net/bugs/88545 [06:39] wgrant: So from database/schema/launchpad_session.sql you want CREATE OR REPLACE FUNCTION cursor_fetch and the GRANT EXECUTE ON FUNCTION cursor_fetch [06:40] (I'd applied this manually to staging and production systems before the code landed but forgot about mawson) [06:41] wgrant: That needs to be applied to the session database on mawson of course [06:41] Right. [06:41] Thanks. [06:42] Much happier, thanks. [06:43] stub: I also have some concerns about PackageUpload's indices. [06:46] wgrant: ? [06:47] stub: See the last comment in bug #276950 [06:47] I don't think packageupload(distroseries, status) has been very useful in the last ~4 years. [06:53] wgrant: It seems to be used, but for what I can't tell: http://paste.ubuntu.com/578697/ [06:54] Looks like we haven't deleted any GPG keys for a while though [06:55] stub: I guess it might try to use that if there's no order, even if the archive is constrained. [06:55] It avoids (archive, distroseries, status) for some values if it has to order by ID. [06:55] But will use it for others. [06:55] stub: Does that mean the signing_key index is unused? [06:56] StevenK: 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:57] stub: Ah right, which also explains your deletion of GPG keys comment. [06:58] I'm pondering a new key, my current one is 7.5 years old [06:59] wgrant: Do you have a problem with the table, such as really slow restore times, disk space utilization, or slow insert times? [06:59] slow queries [06:59] stub: Just slow queries. [06:59] I think the existing index is pointless. [06:59] And should be replaced. [06:59] There's an example query in the bug I referenced. [06:59] It might make sense to replace it. [07:00] poke mup [07:00] It's been dead most of the day. [07:00] https://bugs.launchpad.net/launchpad/+bug/276950 [07:02] wgrant: 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] (archive, distroseries, status) queries are done extensively. [07:03] We 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] Right. I don't think they used to, because we didn't used to have ppas etc. [07:03] Exactly. [07:03] I think this index is just a few years out of date. [07:04] Back from when the table was called DistroReleaseQueue it seems [07:04] (maybe I can rename primary key indexes without pain now in 8.4?) [07:04] stub: does postgresql have a log-slow-queries facility ? [07:04] (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] lifeless: yes [07:05] stub: can we turn that on, set to 15000ms, and get some reports around it ? Ideally we'd tie it back to the request/script [07:05] stub: I'm thinking with all the improvements we've done, we're at the point where starting to track slow queries isn't just insane [07:05] lifeless: You clearly haven't seen the scripts lately. [07:06] wgrant: I'm very worried about script performance [07:07] log_min_duration_statement. We should enable it for limited users though, perhaps just one appserver, to keep the logs sane. [07:07] stub: by sane, do you mean 'not overwhelming' ? [07:07] Yes [07:08] stub: rather than do it for limited users, lets set a higher minimum [07:08] stub: that way we don't have to keep updating it as more users are added [07:08] lifeless: So it will be full of garbo queries then. [07:09] We expect some longer queries for the batch jobs - that is why they are batch jobs. [07:09] stub: I want the backend tasks to be fast too [07:10] stub: for a few reasons - latency, total overhead, mvcc garbage overhead [07:10] stub: so I'm just as interested in garbo, rosetta etc as I am in appservers [07:10] So you won't see any appserver queries then, because I'd need to set the timeout to something nuts like 10seconds. [07:10] stub: I was suggesting an initial setting of 15 seconds [07:10] stub: we see 15 second queries on appservers at the moment [07:11] well, 13 now - cause they hit the timeout [07:11] I'll turn it on at 15s and see how our logs survive. [07:12] and expire on the server - but we still have a couple of overrides [07:12] cool [07:13] We already get the statements killed by timeout btw. They show up as errors in the logs. [07:13] cool [07:14] parsing the logs sucks though. The format is bogus. [07:14] the oops reporting system should be telling us about all of the expired ones [07:14] and i see this pattern a lot: [07:14] a few cheap queries [07:14] a mammoth query [07:14] a few cheap queries [07:14] an expired query [07:15] pgfouine might make a reasonable report even if we don't feed it full logs. [07:18] lifeless: Bugzilla integration? You mean the one-off script that imported Ubuntu Bugzilla? [07:19] wgrant: poppy could run in autocommit mode perhaps [07:19] wgrant: grep for the field, you tell me [07:21] I'm not seeing any log spam at 15s [07:21] Wait 'til the publisher runs :) [07:22] 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 WHERE [07:22] BinaryPackagePublishingHistory.binarypackagerelease = [07:22] BinaryPackageRelease.id AND [07:22] BinaryPackageRelease.binarypackagename = [07:22] BinaryPackageName.id AND [07:22] BinaryPackagePublishingHistory.status IN (1, 2) AND [07:22] BinaryPackagePublishingHistory.pocket = 0 AND [07:22] BinaryPackagePublishingHistory.distroarchseries = [07:22] DistroArchSeries.id AND [07:22] DistroArchSeries.distroseries = 103 AND [07:22] BinaryPackagePublishingHistory.archive IN (1, 534) [07:23] AND (1=1)) AS "_tmp" [07:23] So its working. [07:23] And hopefully the publisher doesn't have any queries that evil ;) [07:23] Well, some of its queries take 10 minutes on mawson... they're not quite that bad on prod, though. [07:23] stub: I'd leave it for a day [07:24] review on monday [07:24] I'm about to poke the GSAs to twiddle logrotate to guard against this taking us down. [07:24] stub: awesome, thanks [08:23] good morning [08:41] Hi adeuring! [08:41] moin henninge [08:44] adeuring: I am almost done with the check list. [08:45] great === 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 [09:03] adeuring: pulled, merged, pushed [09:03] cool [09:03] And it looks really cool, too. [09:04] and 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] only the last one doesn't [09:05] adeuring: I have to run an errand, be back later. === henninge is now known as henninge-bbl [09:19] lifeless: can you ec2land https://code.launchpad.net/~jameinel/launchpad/loggerhead-732481/+merge/52902 [09:19] or maybe adeuring ^^ [09:20] jam: yes, I'll land it. [09:20] adeuring: thanks. [10:07] Project windmill build #40: STILL FAILING in 1 hr 8 min: https://hudson.wedontsleep.org/job/windmill/40/ === henninge-bbl is now known as henninge [11:08] jam: something that would be nice: a patch to the loggerhead Makefile so that 'make check' runs the test suite with the loggerhead tree from . === henninge_ is now known as henninge === al-maisan is now known as almaisan-away [12:02] Morning, all. [12:08] deryck: Good morning :) [12:09] deryck: 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] allenap, sure. [12:09] deryck: https://code.launchpad.net/~allenap/launchpad/alt-javascript-build/+merge/53006 [12:09] Thank you :) [12:10] np [12:10] looking now.... [12:20] Anyone 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] The existing code seems divided on the subject. [12:20] jtv: I standardised it a few weeks back... [12:20] It should be pretty standard, except for memcache. [12:20] if getFeatureFlag('foo'): [12:20] And then what are appropriate values for that flag? [12:21] It's not optimal ('' = False, everything else True), but it's simple and easy to use in TAL. [12:21] We agreed that it was the least evil solution for now. [12:21] Can we set a feature flag to the empty string> [12:21] ? [12:21] Yes. [12:22] allenap, looks great, thanks for doing this! r=me [12:22] deryck: Woohoo :) Thank you. [12:22] np :-) [12:25] wgrant: oh well, it seems to satisfy my tests. Thanks. [12:25] And then I guess I can use any string whatsoever to indicate "on": yes, true, enable, on, or even off, disable, die, nothanks, samovar, … [12:26] Yes :( [12:27] Is the data still entered as a tab-separated text field? Because that gives extra juice to the whole "blank" thing. [12:27] The separator can be any whitespace. [12:31] Is it me, or is Launchpad very slow right now? [12:32] allenap: I don't know, are you slow? [12:32] bigjools: Fairly slow, yes. [12:32] It's slow, but not slower than usual AFAICT. [12:33] Okay, thanks. It's not doing anything at all for me now. [12:34] might be a bad appserver [12:37] bigjools: Sounds about right... it's okay again now. [12:37] wgrant: the feature flags documentation still uses "off" as an example. [12:40] jtv: Where? [12:40] jtv: The docs on /+feature-info should be up to date. [12:40] wgrant: https://dev.launchpad.net/FeatureFlags [12:41] jtv: Fixed. [12:41] great, thanks [12:42] And the "on|off" bit as well, I see. [12:47] adeuring: got a review for you! https://code.launchpad.net/~jtv/launchpad/bug-733132/+merge/53009 [12:47] jtv: I'll look [12:47] dankeschön === almaisan-away is now known as al-maisan [13:12] jtv: 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] adeuring: I'm in two minds about that… doesn't the module it's in do enough to disambiguate it? [13:12] I could import it into the test as distroseriesdifferencejob.FEATURE_FLAG [13:13] jtv: well, we could have two feature flags in this module [13:13] That way the name is always disambiguated. [13:13] Ah I see what you mean. [13:14] I prefer names which tell what is done over how things are done [13:15] Okay, then how about ENABLING_FEATURE_FLAG? [13:15] Because it is important to my mind that it is the feature flag, not e.g. a boolean that controls the feature. [13:15] If the test refers to it as distroseriesdifferencejob.ENABLING_FEATURE_FLAG, I think that'd be about as clear as it could be. [13:16] jtv: what about FEATURE_FLAG_ENABLE_DERIVED_JOBS? [13:16] Gets a bit long, and basically for the purpose of repeating the module name. [13:16] without say what is enabled, it looks to me still like a label on an electrial switch just saying "SWITCH" ;) [13:18] Well 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] jtv, ok, so... ENABLE_MODULE? or FLAG_ENALBE_MODULE? [13:19] It would have to say "flag," but I don't see why it should say "module." [13:19] well, I still think that its good to indicate what is enabled [13:21] Yes, but I'm relying on the "distroseriesdifferencejob" to imply that it's DistroSeriesDifferenceJob that's being enabled. [13:22] I 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:23] jtv: 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 me [13:25] OK, I can't say I like it much but you have the advantage of a fresh outside look. I'll use that. [13:26] jtv: thanks :) [13:26] so, r=me [13:26] Thanks [13:35] gary_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:36] maybe used somewhere else bigjools. sadly, sourcecode is a separate mechanism [13:36] (and on call :-) ) [13:36] gary_poster: darn :/ ok thanks [13:46] adeuring: Hi Abel. Could you review a tiny branch for me please? https://code.launchpad.net/~allenap/launchpad/fix-librarian-startup-warnings/+merge/53018 [13:48] allenap: sure, I'll look [13:48] Thanks. [13:53] allenap: r=me [13:53] adeuring: Cheers. [13:57] le [13:58] sinzui: Hi. [13:58] hi wgrant [13:58] sinzui: You upgraded lazr.restful to 0.17.4 a couple of days ago, right? [13:58] I did [13:58] 0.17.2 has a regression in exception handling. [13:58] See #launchpad. [13:59] was that fixed in 17.3 by leonardr [13:59] No. [13:59] It's still broken in 0.17.4 (which is on prod now) [14:00] OOPS-1896STAGING128 [14:00] Well I am not going to fix that regression by restoring another regression [14:00] I will need to talk to leonardr [14:00] Indeed, that's what I was going to suggest. [14:01] I haven't filed a bug, since it is 1am. [14:01] Can you poke leonard about this when he appears? [14:01] My change was to revert the xhtml-in-json because it was being injected into pages without being escaped [14:01] Right. [14:02] It just pulled in the exception handling changes too. [14:02] 0.17.3 does something interesting with exception handling. It fixed some broken tests I saw in 0.17.2 [14:02] Ahhh. [14:02] I think I see what's going on, maybe. [14:03] Reverting that change breaks the test suite :) [14:03] Hmm, no, I don't see it. [14:03] Which was also why I was not going to land my work...I hand never seen my tests run successfully. [14:03] But the 0.17.2 diff looks like a hack :/ [14:05] It also looks like it should be using .response_code, not .status... [14:06] Project windmill build #41: STILL FAILING in 1 hr 8 min: https://hudson.wedontsleep.org/job/windmill/41/ [14:07] wgrant: I recall "status" reappeared in response output when I added this version to Lp. I assumed it was because of my change, not leonardr's [14:08] Anyway, leonardr will save the world. [14:09] wgrant: are you certain 0.17.2 was live? the expose(exception, code) signature was very new. like late last week [14:10] sinzui: We rolled out your change (with 0.17.4) this morning, AFAIK. [14:10] I had to update my deps to resolve the sugnature change [14:11] right, 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 week [14:11] Hmm? It broke in 0.17.2, and is still broken in 0.17.4 [14:12] Timeouts OOPS like that staging OOPS I gave above. [14:13] 0.17.4 was introduced in r12565, and r12568 is now on production. [14:14] deryck: bzr+ssh://bazaar.launchpad.net/~abentley/launchpad/js-translation [14:16] Anyway, night. [14:17] deryck: http://pastebin.ubuntu.com/578842/ [14:20] abentley, ci = new CheckItem({identifier: 'id1'}) [14:49] how do I search for bugs that don't have certain tags? [14:51] jml, https://bugs.launchpad.net/launchpad/+bug/81575 [14:51] <_mup_> Bug #81575: no way to search for absence of a tag < https://launchpad.net/bugs/81575 > [14:54] james_w: ta [15:02] is it bad that i'm excited a db patch i landed took under 10 minutes? [15:03] * jcsackett figures it probably is. [15:03] Not bad [15:03] will your patch break everything? [15:05] * jml trying out new battery. [15:10] sinzui: no, my patch fixes messages. [15:10] sinzui: it was the visibility db patch. [15:11] sinzui: real question is how long it takes on the weekend super-rebuild. === al-maisan is now known as almaisan-away [15:51] jcsackett: quick question: how did you know how long your patch took to be applied? [15:55] sinzui: thanks for your review ... I think I misunderstood the word 'resubmit' and did put a red mark on my own proposal ;-). [16:05] does staging have different timeout thresholds from production? [16:06] rvba: I'll follow up the review when the diff completes its update === matsubara is now known as matsubara-lunch === bdmurray_ is now known as bdmurray [16:16] henninge, still around? [16:17] deryck: yes, for the moment [16:17] henninge, need just a quick ack that this looks sane for displaying "not translated" -- http://people.canonical.com/~deryck/in-upstream-msg.png [16:17] henninge, in your opinion. not asking for a formal ui review ;) [16:18] that looks good, although we use "(not translated yet)" in other places AFAIR [16:21] henninge, ok, I'll match that. thanks. [16:21] you still around adeuring? === 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 [16:21] bac: yes [16:22] rvba: r=me for code and tests [16:22] adeuring: sorry it took me so long to show up today [16:22] well, for an hour or so [16:22] bac: no problem :) [16:23] adeuring: i'll take wallyworld's branch [16:23] bac: cool, thanks [16:24] bac; I must admit that I simply cducked out from looking at the loggerhead stuff -- I have no real clue about it... [16:24] adeuring: you're the best judge of what you can do a good job reviewing [16:25] sinzui: 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:26] rvba: yes. We are very bad to removing code/test styles that we decide were bad [16:27] sinzui: I'll have to correct my own changes from last week. === 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 [17:22] adeuring, you still open for reviews? [17:22] derycksure [17:22] adeuring, https://code.launchpad.net/~deryck/launchpad/upstream-empty-display-707825/+merge/53050 thanks! [17:22] adeuring, I was thinking of taking lunch now, too, but if you want me to hang around for interactive chatter, I can. [17:23] deryck: na, I don't want you to become unnecessarily hungry ;) [17:23] heh, thanks! === deryck is now known as deryck[lunch] === beuno-lunch is now known as beuno [17:41] deryck[lunch]: r=me [18:07] Project windmill build #42: STILL FAILING in 1 hr 9 min: https://hudson.wedontsleep.org/job/windmill/42/ === 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 [19:36] deryck: 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:37] s/id/is [19:37] * deryck looks [19:39] abentley, 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] deryck: ah. Yes, I did. mutter. [20:17] maxb, jam: Did you get reject messages from launchpad-bugs-owner or launchpad-reviews-owner? [20:17] oh dear, I deleted them without paying attention. Let me oscillate the status of a MP to send some more [20:17] Thanks. [20:21] Received: from loganberry.canonical.com (localhost [127.0.0.1]) for ; Fri, 11 Mar 2011 20:19:54 +0000 (UTC) [20:21] X-Launchpad-Message-Rationale: Reviewer @loggerhead-team [20:22] allenap: ^ [20:22] maxb: Cool, thanks. [20:25] I worry for the 4 kittens in my house. These old bug views are evil. I sense the Monkey god will seek vengeance :( [20:26] maxb: 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] allenap: The X-Launchpad-Message-Rationale: Reviewer @loggerhead-team makes me doubt this will fix the issue? [20:27] maxb: Was that on a new mp? Perhaps the branch reviewer is copied at mp creation. [20:27] oh, I see your point. === pjdc_ is now known as pjdc [20:52] matsubara: hi [20:52] lifeless, hi [20:53] matsubara: how do I land https://code.launchpad.net/~lifeless/oops-tools/limits/+merge/52348 ? [20:53] matsubara: or were you going to check it passes tests etc? [it may now] [20:54] lifeless, 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 trunk [20:54] I'll deploy afterwards [20:54] doing now [20:54] cool. thanks [20:55] done [20:58] lifeless, looks like the postgresql instance in the tarmac chroot is not working [21:34] matsubara: why the change to vcs-imports/registry ? [21:34] lifeless, what change? [21:34] matsubara: you removed ~registry from ~vcs-imports [21:35] lifeless, did I? I deleted ~launchpad-chr but that shouldn't be related [21:36] forwarded to you [21:40] lifeless, don't know what happened there, but I suspect it was because I deleted ~launchpad-chr today [21:41] might be worth checking that maxb etc can still admin imports [21:41] I believe I was/am a direct member of ~vcs-imports [21:42] yes, I still seem to have the access [21:42] kk [22:26] Project windmill build #43: STILL FAILING in 1 hr 12 min: https://hudson.wedontsleep.org/job/windmill/43/ === matsubara is now known as matsubara-afk