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

thumpercan you use with_ on a storm select?00:12
lifelessyes00:13
thumperyup00:13
thumperhmm... I'm wondering how though00:14
lifelesswell, maybe you mean something different than I do00:15
lifelessI suggest starting with my use of it00:15
thumperlifeless: I have it working on the general store.find00:15
thumperbut now I need a subselect for blueprint exclusion00:15
thumperI've got the underlying sql tested on staging00:15
thumperso I know that the syntax I want is allowed00:16
thumperjust trying to get it into storm00:16
lifelesswgrant: you mean stevenk's patch ?00:25
wgrantlifeless: Yes.00:25
lifelessthumper: I'm not sure what you're talking about here00:26
thumperlifeless: that's ok00:26
lifelessthumper: but I wrote something to gary that /might/ be relevant so I'm going to forward it to you00:26
thumperok00:26
lifelessthumper: if it doesn't seem relevant, perhaps you can pastebin me some details about what you're trying to glue together00:27
thumperlifeless: I'm chatting with jamesh on #storm00:28
lifelessnow we're getting somehwere https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1899E29#repeatedstatements00:38
thumperlifeless: if I have problems, I'll poke you00:46
lifelessthumper: I hope the reformulation of the subselect is useful to you00:46
thumperlifeless: it is actually00:46
lifelessthumper: it will run faster because it doesn't need to look at specification00:47
thumperlifeless: yep, got that00:47
lifelesscool00:47
lifelesswgrant: were you going to tackle NBT this week ? wondering if I should ignore oopses on it00:48
lifelesshmm00:56
lifelessneed to test [r=lifeless][bug=732481] [bug=732496] oops_middleware should call start_response for success, even if there is no body.00:56
StevenKIsn't that a fix for the haproxy call?00:57
lifelessn00:57
lifelessno00:57
lifelessits a fix for head00:57
StevenK... which haproxy calls? :-)00:58
lifelessnot at the moment00:58
StevenKwgrant: Er, yes it is.01:07
wgrantStevenK: Aren't the DSD scripts not running yet?01:08
StevenKwgrant: DSD.new() calls update(), which calls _updateVersionsAndStatus(), which calls _updateBaseVersion()?01:08
StevenKAh, well, that is likely true01:09
wgrantlifeless: I will probably get around to deleting it this week.01:09
StevenKI was going to QA that on mawson, after I find a good victum01:09
thumperanyone know of a place in the code where we do "like" queries with storm?01:14
wallyworld_thumper: registry.model.distribution.Distribution.searchSourcePackageCaches01:21
thumperOMG, this vocab was so... broken01:26
wallyworld_which vocab?01:26
lifelessnote that we should not do like queries01:26
lifelessthey are slow01:26
lifelessfti or exact matches only01:26
thumperlifeless: how do I find what text is indexed for blueprints?01:28
lifelesslook in database/schema/fti.py01:28
lifelessname, title, summary, whiteboard01:28
thumperlifeless: how do we do a fti query in storm?01:30
lifelessSQL(...) or use the fti helpers01:30
thumperlifeless: also, is the fti case insensitive?01:31
lifelessI think it is01:31
thumperin which case the like queries that were used, were useless01:32
thumperas they were covered by the fti anyway01:32
lifelessnot surprising01:32
mwhudsonyay lp.blueprints!01:34
thumperlifeless: in order to say "id not in (...)" we use Not(Table.Column.is_in(...)) ?01:34
* thumper tries to remember left joins in storm01:36
mwhudsonthumper: if you're looking at SpecificationDepCandidatesVocabulary, those LIKEs look completely pointless01:37
thumpermwhudson: yes, I've figured that out01:37
mwhudsonfor at least two reasons :)01:37
mwhudsonwow01:37
mwhudsonthought they might be so pointless that the query planner can turn them into =01:38
lifelessthumper: I've not needed to say 'id not in' using storm syntax01:39
lifelessthumper: and tbh, storm syntax vs literal sql is rarely an improvement IMO01:39
lifelessthumper: other than the object deserialisation, I don't find writing the expressions using storm to be generally beneficial01:40
lifelessthumper: I guess I mean: write it in the simplest way possible01:40
* thumper doesn't need the left joins01:41
thumperd'uh01:41
thumperWTF do we have an __iter__ on our IHugeVocabulary?01:42
thumperthat's just stupid01:42
thumperI know that we "technically" need it01:42
lifelesswe have __iter__ on Distribution01:42
lifelessand thats equally bogus01:43
thumperbut having to provide an implementation is fucked up01:43
thumperlifeless: I agree that __iter__ on any model class is bogus01:43
mwhudsonit helps accidentally OOM the appservers?01:43
lifelessthumper: we shouldn't have __iter__ on things that we don't expect actual complete iteration of01:43
lifelessthumper: but removing it may be problematic01:43
lifelessthumper: __iter__ on model classes is fine, *if* the model is a container01:44
* mwhudson remembers a bug to do with materializing a list containing all Persons01:44
thumperlifeless: the reason we need it there is because IVocabulary defines an __iter__01:44
lifelessDistribution isn't obviously a container of any one specific thing01:44
thumperI'm pretty sure we don't use it though01:44
lifelessthumper: yes, I know - IVocabulary is buggy01:44
* thumper will raise not implemented01:44
wgrantI thought HugeVocabulary existed mostly to avoid having __iter__ :./01:44
lifelesswgrant: yes, but we didn't fix zopes assumptions01:44
lifelessanyone want to eyeball https://code.launchpad.net/~lifeless/launchpad/bug-711104/+merge/53188 before I land it ?02:32
wallyworld_what's the magic command to run yui tests?02:33
* wallyworld_ goes to look on the wiki02:33
wallyworld_ah, it's manual - load it up in a browser02:36
thumper:(02:53
* thumper skips fixing that design problem02:53
thumperpart one: https://code.launchpad.net/~thumper/launchpad/blueprint-dependencies/+merge/5319103:23
lifelessthumper: Thanks03:23
thumpernp03:23
* lifeless gambles on lp-land03:23
StevenKlifeless: Re facebook, PICTURES!03:24
lifelessthumper: so my refactored clause was slightly wrong ?03:25
lifelessthumper: ( I don't see why you need specification s there at all03:25
thumperlifeless: it is needed in the next bit :)03:25
thumperlifeless: https://code.launchpad.net/~thumper/launchpad/blueprint-dependency-vocabulary/+merge/5319203:26
* thumper afk for shopping and kids ice-skating03:26
thumperback later03:26
lifelessthumper: still don't see it03:27
thumperlifeless: leave a comment, I'll get back to you03:27
* thumper needs to go now03:27
lifelesskk03:27
huwshimilifeless: The last few days I've really noticed a speedup on Launchpad. Did you do something significant or am I only just noticing?03:27
lifelesshuwshimi: we've brought some more appserver instances online, and moved to an active-passive haproxy config, and we landed a bunch more fixes late last week03:28
wgrantThe latency on top of generation time and RTT is normally <100ms now, which is nice.03:30
huwshimilifeless: It's awesome, I'm finding I'm waiting for pages now instead of clicking on links and going elsewhere while they load.03:31
huwshimiwgrant: That's great. That was like 2.5 seconds before right?03:31
wgrantI frequently saw it up to 2s, yeah.03:31
lifelesswe still have queues03:32
lifelessbut its a lot better03:32
lifelessit will be up to 2 weeks before we get the next stage of fixing this done03:32
wgrantlifeless: It's been 5 years.03:32
wgrant2 weekse isn't that bad.03:33
huwshimiI feel like we might actually get there with our speed :)03:33
StevenKlifeless and wgrant beat you with feeling that.03:34
lifelesswell03:34
wgrantEeh, 6 months ago I knew it was hopeless.03:34
wgrantNow I'm not so sure.03:34
pooliehere's a slightly interesting thing:03:35
lifelesswgrant: we're a great team, as long as we give ourselves the space to do things, we can move mountains03:35
pooliegoogle search results contain the url https://code.launchpad.net/bugs/49014803:35
_mup_Bug #490148: License details for "Other" are displayed even if not selected <chr> <confusing-ui> <lp-registry> <qa-ok> <Launchpad itself:Fix Released by sinzui> < https://launchpad.net/bugs/490148 >03:35
pooliehi wgrant, huwshimi, lifeless03:35
wgrantpoolie: That's a bit interesting.03:35
StevenKpoolie: Hi! Are you back from holidays?03:35
huwshimipoolie: Hey mate03:36
pooliei am back03:36
poolieit was good03:36
pooliesearching for {launchpad licence field} fwiw03:36
lifelesspoolie: hi03:37
StevenKwgrant: Given DSD.base_source_pub() only searches the child for the SPPH, do you think there is value in having it also search the parent?03:38
wgrantStevenK: It should search both archives.03:38
wgrantIt will normally only be in the parent.03:38
wgrantRarely the child.03:39
StevenKRight, so I'll change it to search the parent first, and fall back to the child.03:39
huwshimipoolie: That's strange. It appears you can replace that subdomain with others and it still works (although I tried with blueprints.lp and it didn't load the subscribers list).03:39
StevenKAs it is today, I thought it was a little naive.03:39
pooliehuwshimi, i would guess that we send a "moved temporarily" from that url to the real location03:40
huwshimipoolie: I think they must be indexing on the wrong url. For code.lp it redirects to bugs.lp (blueprints.lp didn't)03:40
poolieand google therefore caches the orginila03:40
huwshimipoolie: Yeah that was my guess03:40
pooliestrange03:40
lifelesshuwshimi: most things are published in all domains03:40
pooliei wonder where they first found a link to that thing03:40
lifelesshuwshimi: only a few things aren't (and that results in bug reports)03:40
poolieperhaps someone made up that url by hand and google decided it was more important03:40
huwshimilifeless: Which makes me think our subdomains are even more redundant :)03:41
lifelesshuwshimi: right03:42
lifelesshuwshimi: as I said, for me at least, its mainly a technical exercise for removing if/when jml wants us to03:42
lifelesswe'd certainly save on redundant ssl handshakes and js overhead03:42
huwshimilifeless: Is this something we should start putting a LEP together for?03:45
StevenKwgrant: Can haz help crafting a query?03:46
lifelesshuwshimi: only if we want to do it03:46
wgrantStevenK: I'm not here, but OK.03:46
huwshimilifeless: So do we need to talk to jml about it then?03:47
lifelesshuwshimi: I think there are three aspects to it03:47
StevenKwgrant: I'd like to find all SPPHs that are in both Ubuntu and Debian that have changelogs set, 'AND spph.status IN (1, 2)' and have the same SPN.03:47
wgrant1) Kill them.03:47
wgrant2) Kill them.03:47
wgrant3) Kill them.03:47
lifelessthere is a political aspect: in the past mark was very pro this layout03:47
wgrantThose are the three aspects.03:47
wgrantStevenK: So you can find good things to test with?03:48
lifelessthere is a technical aspect: what exact actions are needed to /permit/ consolidation03:48
lifelessand there is a design aspect: how should things that are currently different in the same relpath on different domains look03:48
StevenKwgrant: Right.03:48
lifelesslastly, there is the scheduling thing: how important is this : when should we do it03:49
lifelesshuwshimi: so, last I spoke to jml its not at the top of the roster - and I don't think its a one-man task (but I may be wrong)03:49
lifelesshuwshimi: I don't think putting a lot of effort into things that aren't schedule-next priority is sensible03:50
lifelessif the schedulability of it is related to the size of the task, then investing long enough to figure out the size is worth doing03:50
huwshimilifeless: Is this topic on a list of things that need to happen then?03:51
lifelesshuwshimi: we practice a LEAN approach of not queuing things up if we can avoid it03:52
wgrantStevenK: SELECT spn.name FROM sourcepackagename spn JOIN sourcepackagerelease sprd ON sprd.name = spn.id JOIN sourcepackagepublishinghistory spphd ON spphd.sourcepackagerelease = sprd.id JOIN sourcepackagerelease spru ON spru.name = spn.id JOIN sourcepackagepublishinghistory spphu ON spphu.spr = spru.id WHERE spru.changelog IS NOT NULL AND sprd.changelog IS NOT NULL AND spphu.status IN (1, 2) AND spphd.status IN (1, 2);03:52
wgrants/spphu.spr/spphu.sourcepackagerelease/03:53
huwshimilifeless: OK, as long as we remember to talk about it :)03:53
wgrantAnd you want to actually constrain the archives too.03:53
StevenKwgrant: *and* I have to run it through sed? :-(03:53
lifelesshuwshimi: so no - its not on any list : because we're trying not to have such lists :) - I'm aware of the discussion, and jml /may/ have a list somewhere with it on it03:53
wgrantAND spphu.archive = 1 AND spphd.archive = 303:53
lifelesshuwshimi: there may well be a bug saying 'this makes things slower'03:53
lifelesshuwshimi: (and if there isn't such a bug, such a bug would be reasonable to have)03:54
StevenKERROR:  operator does not exist: name = integer03:55
StevenKLINE 2: ...           sourcepackagerelease sprd ON sprd.name = spn.id J...03:55
lifelessgrr testfix03:55
StevenKwgrant: ^03:55
lifelessStevenK: nameID03:55
wgrantStevenK: sourcepackagename, not name.03:55
lifelessor yeah03:55
lifelessI strongly encourage not using reference columns in queries.03:56
lifelessthis will help us when we start to detangle the layers03:56
wgrantlifeless: This is SQL.03:56
lifelessoh03:56
lifeless:)03:56
lifelessFailure in test /srv/buildbot/slaves/launchpad/lucid-devel/build/lib/canonical/lazr/tests/../doc/pidfile.txt03:57
lifelessTraceback (most recent call last):03:57
lifeless  File "/usr/lib/python2.6/unittest.py", line 279, in run03:57
lifeless    testMethod()03:57
lifeless  File "/usr/lib/python2.6/doctest.py", line 2152, in runTest03:57
lifeless    raise self.failureException(self.format_failure(new.getvalue()))03:57
lifelessAssertionError: Failed doctest test for pidfile.txt03:57
lifeless  File "/srv/buildbot/slaves/launchpad/lucid-devel/build/lib/canonical/lazr/tests/../doc/pidfile.txt", line 003:57
StevenKwgrant: Ah, right.03:57
lifelessanyone seen that before?03:58
StevenKIt could have said "This column doesn't exist, you berk."03:58
lifelessStevenK: did you have 'name' or 'spr.name' ?03:58
huwshimilifeless: I can't find a bug like that. I can report one, but you would be able to write a much better description of the problem if you want to and have the time.03:58
lifelesshuwshimi: sure, I can do that03:59
huwshimilifeless: Thanks mate03:59
StevenKlifeless: sprd.name, so it should be sprd.sourcepackagename, as wgrant pointed out.03:59
lifelessStevenK: was wondering about the context the sql parser had04:00
StevenK... 14,000 rows. I don't believe you, SQL04:01
lifelesshuwshimi: its covered in https://bugs.launchpad.net/launchpad/+bug/70313404:01
_mup_Bug #703134: Launchpads SSL performance is substandard <Launchpad itself:Triaged> < https://launchpad.net/bugs/703134 >04:01
StevenKI think we should edit the bug number to be 10 or something :-P04:03
lifelessbug 10 ?04:04
_mup_Bug #10: It says "displaying matching bugs 1 to 8 of 8", but there is 9 <lp-bugs> <Launchpad itself:Invalid> < https://launchpad.net/bugs/10 >04:04
lifelesshah. 'are'04:04
lifelessin the isf call on thursday we talked about the ssl cache sharing component - its a prerequisite for LVS, and LVS is up second on (IIRC) spads' queue04:05
wgrantHow is that a prereq?04:06
wgrantMm, I guess.04:07
lifelesswgrant: browsers don't switch ip per-request with round-robin setups04:07
wgrantAnyway, /me vanishes.04:07
lifelessso its [relatively] rare to do ssl renegotiates04:07
lifelesslvs would make it a common event unless we did source ip pinning (but you don't want to do that because of the impact of nat'd conferences)04:07
lifelesshuwshimi: I like that you've been writing up a bunch of docs04:22
huwshimilifeless: Starting to. It's mostly just stubs and a collection of links to other places... but I have to start somewhere.04:25
huwshimilifeless: I'm trying to add things as I think about them04:25
lifelesshuwshimi: one thing I'd like to suggest04:28
lifelesshuwshimi: more things to remember makes development harder04:28
lifelesshuwshimi: if possible, finding ways to make things automatic would be better than proscribing how things should be04:28
lifelesshuwshimi: e.g. if all popup forms automatically set their first entry widget as focus, that would be a no brainer win04:28
huwshimilifeless: Yes, that was exactly my thought04:31
huwshimilifeless:  I do want to list the rules for the way things should behave though04:31
lifelesshuwshimi: it may be nitpicking, but its probably worth rephrasing from 'rule' to 'sane default which solve problem X'04:34
lifelesshuwshimi: this future proofs discussions: if problem X goes away, the default to solve it is clearly not relevant, whereas rules tend to age less gracefully IME04:35
huwshimilifeless: Nitpick away :)04:36
huwshimilifeless: So I want to have documentation with those guidelines about how to solve or how they are already solved within Launchpad04:37
lifelesshuwshimi: I basically think we're rule heavy: we /still/ have way to many nonfunctional review rules, and I'm jumping the gun trying to avoid the same problem in a different guise04:37
lifelesssigh04:41
huwshimilifeless: That makes sense, I wonder how we can make sure we have a consistent interface if we don't have a bunch of guidelines that should be followed though.04:41
lifeless10/33 POFile:+translate04:41
huwshimilifeless: Or am I misunderstanding something04:42
lifelesshuwshimi: less code, more reuse04:42
lifelesshuwshimi: additionally, i don't think following guidelines results in a high quality interface: I find it extremely weird that consistency is axiomatic with ease of use and high quality04:42
lifelesshuwshimi: ease of use is directly measurable as is quality : clarity, performance, uptake of information are all measurable04:43
lifelesshuwshimi: time to perform task, time to learn task etc04:44
lifelesshuwshimi: as a for-instance on less-code,more-reuse: one of the genius things gnome's desktop stack did years ago was to ditch pixel positioning for widgets: instead it uses packing horizontally and vertically: the /default/ for a developer using the toolkit will be to be consistent with most other gnome apps04:47
huwshimilifeless: What I'm trying to solve is that we don't really have enough docs on what we do or why we do them (for UI stuff). For example, I've been reviewing a form that rvba is working on. He would have know exactly how to create the form without a fair bit of back and forward over the last week if there was a doc he could have looked at that said "when creating a form don't use tables, use classes instead of inline04:49
huwshimistyles and here's where to look for appropriate styles".04:49
lifelesshuwshimi: so I think this breaks into a few issues04:51
lifelesshuwshimi: firstly, we're way to manual in our forms :( - long term issue04:51
lifelesshuwshimi: secondly, there isn't really a 'right place' to cargo cult from.04:51
lifelessby which I mean its massively easier to take a good form from elsewhere and adjust than to start from scratch, but there isn't a 'known good' form that is fully ajaxified, uses all the right styles etc etc04:52
lifelessthere *are such forms*, but nothing guiding folk to them04:52
lifelessI would have expected bigjools to guide rvba to the right place though04:52
lifelesshuwshimi: using classes seems like standard html-since-2005 to me though, rather than something we need to formally write down :)04:53
huwshimilifeless: Actually this is just a small filter form, of which we have a few, but this one had an extra option which none of the others do, so this was a special case that ended up being quite a bit more complex.04:54
huwshimilifeless: except that we do have a lot of inline styles. So when he wanted to know what to do he looked at our existing code and noticed a lot of inline styles and assumed that was ok04:55
lifelesshuwshimi: this correlates with what I am saying04:55
lifelesshuwshimi: its *easier* to copy existing stuff than to follow procedures about what we *should* do04:55
lifelesshuwshimi: so to get new contributions to be as we want them, its most effective to fix our existing stuff04:56
lifelesshuwshimi: cheat sheets can still be useful, but I guarantee the first step isn't read-the-cheat-sheet04:56
huwshimilifeless: I totally agree with all that, I just think it is helpful to also have some docs to refer to. Maybe though I need think about having them very general rather than specific cases04:57
lifelesshuwshimi: lets say you retain 10% of stuff you read once04:58
lifelesshuwshimi: think about how much stuff you read when you started04:58
lifelesshuwshimi: and how much of the details you remember now :)04:58
lifelesshuwshimi: I'm not saying 'do not write docs' : I started saying I'm glad you are writing docs up04:58
lifelesshuwshimi: I am saying: rules that must be followed become a process burden, so we should demand *real value* from any rules we add.04:59
lifelesshuwshimi: *and*04:59
lifelesshuwshimi: making a few /really good/ forms and offering them up as 'copy this' examples (e.g. via the list, in your docs etc) would be a really good way to help your improvements propogate05:00
huwshimilifeless: Alright that sounds good.05:00
lifelesshuwshimi: I've done something similar with my query scaling tests: I took a single example that was in the code base from a while back, generalised and reused it, and wrote it up on the mailing list - other folk are writing such tests now05:01
lifelesshuwshimi: and the infrastructure has incrementally improved to make writing them easier.05:01
lifelesshuwshimi: I simultaneously tried some rule-based improvements, which have had approximately zero impact on the code base: the communication, examples, and continual focus on the one thing have however had a massive impact.05:02
huwshimilifeless: I guess really most people don't refer to docs unless they get stuck with something.05:06
huwshimilifeless: Or they really don't know where to begin05:07
StevenKDidn't Julian add a boolean that we can use to check if something returned any rows? I can't recall what it is called.05:09
lifelesshuwshimi: exactly05:16
lifelessStevenK: its __nonzero__ and only on sqlobjecresultset : don't use it.05:16
lifelessStevenK: storm result sets have .empty()05:17
lifelessStevenK: but note that this is a query: *if* you are going to ask for any rows, just ask, don't check for emptiness05:17
lifelesshere stubby stubby stubby05:22
lifelessStevenK: can you run a query on df for me05:23
StevenKCertainly05:23
lifelessI'd like an explain analyze of05:23
lifelesshttps://bugs.launchpad.net/launchpad/+bug/734642/comments/305:23
_mup_Bug #734642: POFile:+translate timeouts <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/734642 >05:23
lifelessI'm looking for cold cache performance05:23
StevenKCan't get much colder than DF05:24
lifelessright05:24
lifelessit is about 30 times faster than the current hot performance05:24
lifelessbut if its not hotter cold, the win isn't very important05:24
lifelesss/hotter/faster/05:25
StevenKlifeless: 1345.664 ms, do you want the output?05:26
lifelessplease05:27
lifelessI wonder if we just need a tonne of ram05:27
StevenKLet me apologise in advance, I didn't turn off the pager, so it's going to look like crap, and re-running it won't give the same values05:27
lifelessthats fine05:28
lifelesspastebomb away05:28
StevenKhttp://pastebin.ubuntu.com/580007/05:28
lifelessthanks05:29
lifelessso, no worse05:29
lifelessbut not substantially better05:29
StevenKlifeless: I'd welcome your comments on https://code.launchpad.net/~stevenk/launchpad/dsd-base_source_pub-search-parent/+merge/53194 . Mostly interested in your thoughts re lines 27-51 of the diff05:31
lifelessStevenK: commented06:00
lifelessStevenK: not pubs.empty() would be better than using count() btw06:00
lifelessStevenK: only use count() if you need a count and won't be querying all the rows.06:01
StevenKlifeless: Thanks, I've taken your suggestion with a little tweak.06:07
=== StevenK changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
=== jtv is now known as jtv-eat
=== almaisan-away is now known as al-maisan
=== jtv-eat is now known as jtv
lifelessjtv: you might like the new plan in bug 73464207:36
_mup_Bug #734642: POFile:+translate timeouts <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/734642 >07:36
rvbastub: Hi Stuart. I've just done my first db changing branch and I'd like you to review it when you get a chance.08:21
rvbaIt's been approved by sinzui and the change is really not controversial but since I'm fairly new to the code (joined Canonical 2 weeks ago) please don't hesitate to give me any recommandation.08:21
rvbahttps://code.launchpad.net/~rvb/launchpad/db-add-distro-registrant/+merge/5300108:21
stubyup.08:21
stubyer - this one looked trivial08:22
rvbastub: it is yes.08:22
jtvlifeless: Took me a while to decypher what you pasted there… do you think it's the WITH that does it?  Or is it mostly that the "potmsgset <> $INT" check moved from the TM part to the POTMsgSet part?  I'm pretty sure we had it in the POTMsgSet part at one point.08:22
lifelessjtv: its the with08:22
jtvJust acting as an optimization barrier?08:23
lifelessjtv: comment 2 is the first iteration of the with, and when I then move the potmsgset I cap the upper estimate too08:23
stubrvba: So people decided to keep both owner and registrant, or will owner be dropped in the future?08:23
jtvFrankly I don't even see much reason to have the potmsgset <> $INT check… because we query the ones with potmsgset = $INT separately anyway.08:23
lifelesswith alone is 350->690 or whatever, with + move potmsgset is 350..35008:23
jtvlifeless: are those numbers estimated costs?08:24
lifelessjtv: yeah08:25
rvbastub: Owner will stay and be the field still used for perm checking (owner = maintainer for distributions). Registrant is just a historical record of who created the object.08:25
thumperhttps://code.launchpad.net/~thumper/launchpad/blueprint-dependency-vocabulary/+merge/53192 anyone?08:25
lifelessjtv: actual execution with the with is ~ 30 times faster than the existing query08:25
jtvThat's great.  It's too hard to read so I'll just take your word for it.08:25
lifelessjtv: :>08:25
lifelessjtv: with seems to be a very useful thing, was the main point08:25
jtvSo… any takes on implementing it?08:25
lifelessjtv: I figured you'd be interested with your joint rosetta + postgresql interests08:26
jtvOf course I am!  But I'm on feature rotation.  :(08:26
lifelessjtv: Its about 15 minutes to code up, I'll do it tomorrow morning if noone beats me to it08:26
jtvGreat, thanks!08:26
jtvCan I take it the "with" mainly serves as a way to force the planner to materialize that subquery?08:27
lifelessit creates a temporary table08:28
lifelessso yes, in this context I think that that is what its doing08:28
stubrvba: Is 'registry' actually a good default registrant of the existing Distributions? We might want to be more selective if it gives any genuine power.08:30
lifelessthe registrant is just to make our db work a bit harder rendering the thing08:30
lifelessmeep yesterday was busy08:32
lifelessnon-opstats pages: 757447908:32
rvbastub: AFAIK the whole idea (sinzui is the one driving this) was to separate clearly who registered the object (and this should not give real power) and who the maintainer is. The only use of the registrant field is to display inside the 'Registered by' slot.08:32
stubSounds fine.08:32
rvbathis might sound silly (and only made to have an extra query) but I think it makes sense because the same thing will have to be done for distroseries.08:33
stubApproved. Some things to change listed in the review.08:33
rvbahere is sinzui's opinion on this (for distroseries):08:35
rvbasinzui "Since distros series do not have a direct owner, it seemed okay in the past to reuse the field for registrant. but owner is intended to be mutable. It is not possible BTW to change a series owner. We removed the field from edit forms"08:35
stubIt sounds silly if we will only ever have Distributions registered by the registry team (which is silliness we have done for years unfortunately). If random users can register distributions, fine.08:35
lifelessheh, i just tried to use 'y' to archive this channel :P08:36
rvbaI'm not sure it's very frequent for random users to register distributions... but AFAIK the whole thing is to cleanup the owner field for distro, distroseries (and also productseries and productrelease) which has been 'reused' in the past to store other things (sometimes the registrant) than what it should store.08:39
rvbalifeless: you're right when you say that the current displayed registrant for a distro is the owner. And if we want the changes to be without effect on existing distro we should use the owner instead of ~registry. But I think sinzui's point was that in order to normalise the registrant of objects we should set it to ~registry in the migration script.08:44
lifelessrvba: why normalise it?08:49
lifelessrvba: surely the existing data is more accurate than ~registry08:49
rvbalifeless: since this is a read-only field I guess it's really not a problem to set the registrant to user instead of ~registry.08:50
rvbaand it might be more informative ....08:50
rvbalifeless: I think sinzui's argument of cleaning things up really makes sense. But as you can imagine, being still fairly new to the code, I can't say that I have a personal opinion on this.08:50
rvbalifeless: but I really understand your point08:50
lifelessrvba: setting it to registry would discard what data we have08:51
lifelessI think its wrong.08:51
rvbalifeless: right08:51
lifelessif we want it to be registry it would be a lot easier to just hardcode that in the templates :)08:51
rvbalifeless: it wont be registry for newly created objects08:51
StevenKhenninge: Hi! Are you good to be OCR today?08:52
adeuringgood morning08:52
lifelessrvba: I know, but if we don't want it to be registry for new ones, we don't need it to be registry for old ones :)08:52
rvbalifeless: again, I really understand your point.08:52
henningeStevenK: I am.08:52
=== henninge changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: henninge | https://code.launchpad.net/launchpad-project/+activereviews
StevenKhenninge: Are you up for reviewing https://code.launchpad.net/~stevenk/launchpad/dsd-base_source_pub-search-parent/+merge/53194 ?08:53
henningeStevenK: sure ;)08:53
lifelessrvba: where does that leave us?08:54
rvbalifeless: I'll just make sure with sinzui (he's really the one driving this) that there is no secret reason why he wanted to set the registrant to ~registry :-)08:54
rvbalifeless: but I think you're right08:54
thumperlifeless: where's that page that shows the revisions blocking the rollout?08:55
rvbalifeless: is that ok with you?08:55
lifelesshttps://devpad.canonical.com/~lpqateam/qa_reports/deployment-stable.html08:55
lifelessrvba: sounds great08:55
thumperta08:55
lifelessrvba: I suggest optimistically changing it now to get stubs ack on the update script change08:55
rvbalifeless: ok08:56
thumperlifeless: when is the next rollout?08:56
rvbaI'm actually doing it right now.08:56
lifelessthumper: I have one up on LPS08:56
lifelessthumper: but we have no losa until US come on09:00
henningeStevenK: Sounds to me like there is a "not" missing somewhere in this comment:09:01
henninge 98+        # Passing in a base version to makeDistroSeriesDifference() creates09:01
henninge99+        # it in both distroseries, so we need to do it ourselves.09:01
lifelesshenninge: the test is testing the case where one side is missing the base09:02
lifelesshenninge: so the statement is correct09:02
thumper:(09:02
lifelessthumper: I enquired about gsa vg doing it, but they felt uncomfortable09:03
henningehm, then I don't understand it09:03
thumperfair enough09:03
StevenKhenninge: Would you prefer I re-word it?09:03
henningelifeless: wht is "do it" referring to?09:03
henningeStevenK: I don't think I understand the comment yet09:04
StevenKhenninge: "do it" in that context refers to creating the publication.09:04
lifelessthumper: what rev do you want live ?09:06
thumper1257109:06
StevenKThe deployment is for 12582, so that's okay09:08
StevenKI want 12569 deployed, so I've also been looking.09:08
henningeStevenK: I am sorry, I may be missing some understanding about DSDs here and the implication of that comment.09:13
henningewhich kind of tells me I might not be understanding what this branch is all about in the first place ...09:14
StevenKhenninge: Okay, so makeDistroSeriesDifference() can take a 'base' version in the versions dict. That will create a publication in both the parent and the child distroseries. I don't want it to do that, so I need to create the publication myself in only the child.09:14
StevenKhenninge: The reason for the change is that it is much more likely for the parent distroseries to contain the base publication than for the child too -- hence the change to look in the parent first.09:15
StevenK"than for the child to" even09:16
lifelessthumper: are both your bp branches ready for review?09:16
lifelessthumper: if so I can eyeball your second one for you09:16
henningeStevenK: but you are doing that *after* the call to make DistroSeriesDifference, so does that change its behavior?09:16
StevenKhenninge: Not at all, but it is why I have to call ds_diff.update() after doing so.09:17
henningeah!09:17
StevenKDoh, forgot to triage09:18
henningeStevenK: so "update" will remove the base version from the parent?09:19
StevenKhenninge: update tells the DSD "stuff has changed, please look again and update your internals as necessary"09:19
henningeI understand that bit.09:19
StevenKhenninge: I think you're close -- do you want a have a quick chat on Mumble to close the gap?09:20
henningeStevenK: that would be helpful, I think09:20
henningelet me set that up real quick09:21
bigjoolswgrant: hello.  Did you see OOPS-1897PPA11 ?09:21
StevenKbigjools: It's a public holiday in VIC today09:22
wgrantbigjools: As StevenK said, I'm not here today.09:22
wgrantBut let me look.09:22
bigjoolsthose lazy victorians09:22
StevenKHaha. Sarah said exactly the same thing.09:22
bigjools:)09:22
wgrantbigjools: Isn't that just the usual unsigned changes file?09:23
bigjoolswgrant: hard to tell from that oops09:23
bigjoolsalso OOPS-1898PPA509:23
wgrantMissing Files section usually is.09:23
wgrantbigjools: That was a manually constructed changes file.09:23
wgrantHad only a dsc and a deb.09:23
bigjools1st one is "InvalidEmailAddress: master@ussr.htv4"09:23
wgrantI presume that's relevant.09:23
wgrantOh, got them mixed up.09:24
wgrantRight, I was looking at 1897PPA5 instead of 1897PPA1109:24
bigjoolsboth look like bugs either way, we should respond to the uploader09:24
bigjoolssomeone is causing Archive:+delete to time out as well :/09:24
wgrantlifeless filed a bug on Archive:+delete earlier.09:25
bigjoolscool09:25
wgrantBoth are bugs, yes.09:25
lifelesssome guy tried to delete packages09:25
lifelessthat timed out09:25
rvbastub: lifeless just pushed the corrections (https://code.launchpad.net/~rvb/launchpad/db-add-distro-registrant/+merge/53001)09:25
lifelessso he tried to delete his ppa with 435 active publications09:25
lifeless9 seconds in one update statement09:26
lifelessbigjools: I've got a patch up for oops-tools that will get rid of the 'top 10' limit on exceptions09:27
bigjoolsOo09:27
lifelessbigjools: once thats live I plan to get rid of the dedicated soyuz report, because we'll see them easily in the main report.09:27
bigjoolssounds sensible :)09:27
bigjoolslifeless: as long as they stick out like very sore thumb, that's ok09:28
lifelessbigjools: well, how about we get the patch live, wait a day, and I'll see how it looks to you09:29
lifelessbigjools: AFAICT you're the only person wanting a broken out soyuz report now09:29
lifelessbigjools: if it looks clear enough in the main report, we can then close off the dedicated report. If its not clear enough, we can revisit in another few weeks.09:30
bigjoolslifeless: so there's a few OOPSes that should not be oopses and there's bugs filed about that.  When they are fixed, *any* oops after that is genuine and critical.  As long as they are obvious in the report I have no issues.09:31
bigjoolslifeless: that's a good plan09:31
LPCIBotProject windmill build #47: STILL FAILING in 1 hr 15 min: https://hudson.wedontsleep.org/job/windmill/47/09:43
StevenKhenninge: Thank you for the review. :-)09:50
henninge_StevenK: you are welcome ;)10:03
=== henninge_ is now known as henninge
lifelessmpt: oh hai10:05
mptlifeless, hi ho10:05
lifelessmpt: how did that paperwork go?10:05
mptlifeless, excellent, thank you, I have a shiny new passport10:05
jmlGood morning Launchpadders10:06
lifelessmpt: cool10:06
lifelessjml: hai10:06
lifelessmpt: how is lp coming along, from your disinterested perspective ;)10:06
* bigjools waves at jml10:07
mptlifeless, more speed is good. I haven't noticed any other changes recently.10:07
mptOh, except that heading color changed for some reason.10:08
lifelessmpt: are you noticing speed changes?10:08
stubrvba: The repush is fine too. I think you are good to send it off to ec2 to land.10:08
rvbastub: great, just need a few words with sinzui about this (he's driving this) and I'll land it.10:09
lifelesshmm10:09
lifelessisd branch mangler probably doesn't do what they want ><10:09
mptlifeless, no, more like I'm no longer noticing slowness. I guess the bane of performance work is that if you do it right, people end up not noticing.10:09
=== jam1 is now known as jam
lifelessmpt: thats excellent new10:10
lifelesss10:10
lifelessmpt: theres another step to get to 'snappy'10:10
mptyes10:10
lifelessmpt: but eliminating the negative feeling is still a big step forward10:10
mptI still notice that <https://bugs.launchpad.net/ubuntu> takes a while10:11
jmlmpt: sometimes that bane comes to UX work too10:12
mptoh, sure10:12
jml(incidentally, what is the proper verb for 'bane'?)10:12
mptI hope there isn't one10:12
lifelessmpt: thats https://bugs.launchpad.net/launchpad/+bug/61840610:13
_mup_Bug #618406: Distribution:+bugs-index time outs <lp-bugs> <pg83> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/618406 >10:13
mptLaunchpad's default font size is tiny now10:13
lifelessmpt: we're going to drop the bugtask.id secondary sort, which makes the query 2000 times cheaper10:14
mptI always have to Ctrl + after arriving10:14
lifelessyeah10:15
lifelesssinzui has a Plan10:15
jamlifeless: is there something I'm supposed to be subscribed to so that I get notification when I can QA a given fix?10:31
jamI don't want to be holding up the pipeline, but it often just seems like guesswork to me10:31
lifelessjam: the bug10:34
jamlifeless: so when it changes to "qa-needstesting" it is supposed to be readi?10:34
jamready10:34
lifelesshttps://bugs.launchpad.net/launchpad/+bug/732481/comments/610:34
_mup_Bug #732481: internal error trying to serve HEAD <qa-untestable> <Launchpad itself:Fix Committed by jameinel> <loggerhead:Invalid> < https://launchpad.net/bugs/732481 >10:34
lifelessthats done by a bot that watches what is deployed to qastaging and staging10:35
lifelesswhen it comments, the fix is on qastaging and testable - and needs testing10:35
lifelessallenap: speaking of qa10:35
=== al-maisan is now known as almaisan-away
allenaplifeless: The js thing? I'm doing that now, as much as I can, and I'll be sending out an email shortly to request some help.10:41
bigjoolsgah, we really need to fix bug change conflicts10:44
* bigjools identifies a 4-digit bug that will need to be fixed for derived distros11:04
deryckMorning, all.11:04
gmballenap: The changes to the way that lp.js is built don't have anything to do with the error that I'm seeing on https://launchpad.net/launchpad, do they?11:05
gmbUncaught TypeError: Cannot read property 'pillar' of undefined11:05
lifelessgmb: no11:06
lifelessgmb: allenap's changes deployd have not been11:06
gmbAh, right.11:06
gmbBugger, that means danilos and I have to Do Work.11:06
allenapWhat he said :)11:06
gmbThanks anyway.11:06
lifelessjml: lp:~tseaver/subunit/py3-hacks may interest you11:16
jmllifeless: yeah, it deos.11:17
rvbahenninge: Hi, I'd appreciate a review of https://code.launchpad.net/~rvb/launchpad/fix-missing-addseries-link/+merge/5321911:17
rvbahenninge: really trivial refactoring of a few tests.11:18
henningervba: I am happy to do that11:26
rvbahenninge: thx11:26
bigjoolsDoes anyone have any thought on how useful it is to have a Subscribers portlet on a bug page?11:33
gmballenap: I see a lot more stuff in my JS console today on lp.dev. Is that something to do with your changes?11:35
allenapgmb: Can you paste? In what environment?11:36
allenapbigjools: You want to ditch it?11:37
gmballenap: Firebug or WebKit. Paste coming up...11:37
wgrantbigjools: I think the direct subscriber list is handy... the structural subscribers not so much.11:37
gmballenap: This kind of stuff: http://pastebin.ubuntu.com/580089/11:37
bigjoolsI agree with wgrant11:37
bigjoolsit takes up loads of space and it's fairly useless11:37
allenapI'm with wgrant on that, though it might be interesting to know if someone has a structural subscription when adding them as a direct subscriber.11:37
wgrantI want to be able to see the strucsub list.11:37
wgrantBut not always.11:38
wgrantThere should be a button or something.11:38
allenapgmb: Is this in dev?11:38
gmballenap: Yes11:38
allenapgmb: That's probably because it uses the debug builds of YUI by default. That's a bit too noisy isn't it? That's readily fixable. If it's a problem I'll file a bug.11:39
gmballenap: That would be great, thanks. Can you tell me how to make it STFU for the sake of the debugging I'm doing now?11:40
allenapgmb: No idea :)11:41
allenapgmb: Let me see...11:41
gmballenap: I'm happy to prod at stuff until it shuts up, I just thought that you might know. Unless "readily fixable" is Norfolk-speak for "Eh, I dunno."11:42
allenapgmb: Can you try the following as a workaround? make clean_js; make JS_BUILD=min jsbuild_lazr; make JS_BUILD= -W jsbuild_lazr jsbuild11:49
gmbSure.11:49
gmballenap: That worked. Thanks.11:50
allenapgmb: Woohoo :)11:50
allenapgmb: I'll reply to my message to the list to let others know.11:50
gmballenap: Thankee kindly.11:51
allenapgmb: Btw, if you s/min/raw/ then it'll unminify lazr.js too.11:56
gmballenap: Cool, ta11:56
henningervba: Approved but with a few formatting issues that I'd like you to fix, please.12:03
rvbahenninge: will do, thx.12:04
=== henninge is now known as henninge-lunch
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: henninge, benji | https://code.launchpad.net/launchpad-project/+activereviews
=== matsubara-afk is now known as matsubara
jtvbenji, are you up for a review?  https://code.launchpad.net/~jtv/launchpad/bug-733245/+merge/5323012:24
benjijtv: sure12:25
jtvgreat12:25
jtvbigjools: I guess I'll need help from someone privileged to Q/A the creation of DSDs during package publication.12:33
wgrantjtv: What sort of performance penalty does that entail?12:46
jtvwgrant: whatever it takes to compute base_version, basically, plus change12:57
wgrantjtv: Erm.12:58
wgrantCan't do that while creating the publication.12:58
jtvOh sorry, right, I create jobs, not DSDs.12:58
wgrantRight. How expensive is that?12:58
jtvMy head was still in a different branch.  :)12:58
jtvShouldn't be very expensive… just create a tiny little record holding the distribution, distroseries, and a little bit of json that holds the sourcepackagename id.12:59
jtvOh, and check for duplicates first.12:59
wgrantDoes it query for existing ones?12:59
wgrantRight.12:59
jtvYes12:59
wgrantHopefully that's cheap.12:59
benjijtv: I'm done with https://code.launchpad.net/~jtv/launchpad/bug-733245/+merge/5323013:00
jtvIt's something we can add an index for.13:00
jtvthanks benji!13:00
* jtv reloads13:00
benjinp13:00
danilosanyway knows anything about how LP loads JS and specifically, when/how does LP.links.me and LP.cache gets preloaded? (I see links['me'] is defined in lib/canonical/launchpad/rest/me.py through some event magic, but that doesn't really tell me how that gets assembled into JS)13:00
deryckhenninge-lunch, adeuring -- is standup time now for you guys?  Or in an hour?13:00
* deryck suspects DST fail13:01
danilosderyck, Europe's got another two weeks of non-DST time, yay :)13:01
deryckah, fun calendaring ahead then13:01
deryck:-)13:02
adeuringderyck: I assumed the standup starts in 56 minutes13:04
deryckadeuring: ok, cool.  Since abentley and I can't have it without you guys, we'll do it then. ;) :)13:05
deryckadeuring: we're okay to keep it at this time, until you and henninge-lunch join DST in a couple weeks.13:05
adeuringderyck: well, I wouldn't mind to do it right now, but i think henning has lunvch right now13:05
deryckadeuring: no worries.  Probably easier to keep it the same for you guys.13:06
StevenKI'm on my way to bed, would someone mind forcing db-devel and mailing the list -- it failed to checkout source code.13:15
danilosderyck, hi, do you know if there is a special event that is triggered when LP data is populated in JS? (i.e. LP.links.me, LP.cache)13:15
danilosderyck, or, how can one ensure that his code runs only after that happens? (asking you because you have touched some JS lately, I understand that this may be inappropriate :)13:15
abentleyderyck: is there a way to run a launchpad.dev instance using the un-minified javascript?13:18
deryckabentley: get latest devel and run `make JS_BUILD=raw clean_js jsbuild`13:22
deryckand thank allenap for that :-)13:22
deryckabentley: if you want more log output you can do "debug" instead of "raw."  I think it does debug by default right now.13:23
abentleyderyck: Cool.  I just saw that too.13:23
deryckdanilos: I don't think there is any event when the cache is setup.  thumper added a bunch of event stuff for in page updates a couple weeks back, but I haven't looked at it yet.  So don't know for sure.13:24
danilosderyck, right, so what I have is basically some page setup code that wants has a conditional on whether user is logged in (using LP.clients.me === undefined as the check); got any better suggestions for that?13:25
deryckdanilos: I would have done it that way, too.13:26
danilosderyck, except that it doesn't work because it is undefined all the time, and gets populated later (or so it seems) :(13:26
danilosanyway, thanks, won't bother you any longer about this, I guess it's all the same for all of us :)13:26
deryckhmmm13:26
deryckdanilos: ah, right.  It's probably not populated until domready itself.  So you're in a race with it.13:27
deryckdanilos: if thumper's work didn't add and event for that.  it would be pretty easy to add one to the client code and hook into it.13:28
danilosderyck, yeah, so what I want to do is have that code fire something like "lp-event" and than use that, but I don't even know where that code is :)13:28
deryckright13:28
deryckit's in lib/lp/app/javascript/client.js I think13:28
deryckdanilos: yeah, that's it:  lib/lp/app/javascript/client.js13:29
danilosderyck, yep, found it now, I was looking for clients.me stuff, when it's all about the "cache"13:30
deryckright13:30
deryckdanilos: so it looks like this is setup manually in lib/lp/app/templates/base-layout-macros.pt.  I would think a sniff for it would work.  Did you check it as:   LP.links.me === undefined ?13:36
danilosderyck, yes13:37
deryckdanilos: after domready?13:38
danilosderyck, well, it works just fine if you are not inside domready event handler (i.e. after it really loads :)13:38
deryckdanilos: ok, that was going to be my next question, if doing it after load mattered?  if it works after load, then I'd do that.13:39
danilosderyck, right, that's what I want to do but just need to figure how to best do it13:40
danilosderyck, so, do you think it would be outrageous to fire something like "lp-ready" even in base-layout-macros.pt when all LP elements are loaded?13:42
daniloss/even/event/13:42
deryckdanilos: I think that would be fine.  The problem you might have, though, is that the links and cache objects are constructed outside of YUI.  So I'm not sure of the timing if you add a YUI block after them.  Seems like it should work, though.13:45
danilosderyck, right, I'll try it out and see if it seems stable13:46
deryckdanilos: ok, cool.  good luck with it!13:46
danilosthanks :)13:47
LPCIBotProject windmill build #48: STILL FAILING in 1 hr 9 min: https://hudson.wedontsleep.org/job/windmill/48/13:52
danilosderyck, actually, domready was not the problem! we forgot to make the event handler for domready a closure, so it was run right after it was passed14:00
danilosderyck, I figured that out when I noticed that even with my event I was getting undefined14:01
=== henninge-lunch is now known as henninge
deryckdanilos: ah, good catch.  So that makes it simpler for you now, too! :-)14:08
danilosderyck, yeah, ta14:10
deryckI'm working on Windmill today.  See if I can get it stable enough to re-enable.14:17
deryckJust FYI, for anyone watching the Jenkins builds and concerned.14:17
jcsackettbac: ping.14:19
bachi jcsackett14:19
jcsacketthi, bac. so, about that lp.registry.pillar.14:19
jcsackettonce upon a time, that was using a separate "activate_collapsible_div" function defined in a file called pillar.js14:20
jcsackettbut it was later realized that activate_collapsible could just be refactored to allow a more general case.14:20
jcsackettthat refactor done, i appear to have then forgotten to kill that call in the template, and didn't see an error b/c the functionality i was looking at still worked.14:21
jcsackettso, you should be able to totally whack that in what you're looking at and see no ill effect, bac.14:21
bacjcsackett: understandable.14:21
bacjcsackett: ok.14:21
baci'm landing a branch today so i'll include the whackage14:21
jcsackettawesome.14:21
jcsackettand sorry for the confusion on this part; i just had to look 40 revisions deep in a really confused branch of mine to figure it out. :-)14:22
jcsackettbac: i replied to the email thread so the rest of your team is up to date.14:25
bacthanks again14:26
jcsackettno worries. my mess in the first place, sorry you stepped in it. :-)14:26
henningeadeuring: I am here, btw.14:26
henninge;)14:26
=== james_w` is now known as james_w
henningeadeuring: nu aba14:29
abentleyadeuring: so this model method you want.  I think it could be a method on TranslationMergeJob that accepted a Packaging and returned the JobStatus of the next pending or running job.  It would return None if there was no matching job.  How does that sound?14:47
adeuringabentley: right, that would work. But we start from a package context, so we would also need a package method "list pending translation merge jobs"14:49
adeuringwell, ok, that coudl also be done in browser code...14:49
abentleyadeuring: Why do you want a list?14:50
abentleyadeuring: I meant that it would be a classmethod on TranslationMergeJob.14:50
adeuringabentley: I just thought that we basically do a SQL query, and that returns a sequence14:50
adeuringand right, a classmethod for TMJob would be fine.14:51
sinzuirvba: I replied to your emails. I hope I helped.14:51
abentleyWe would do an sql query, and that would return a sequence, but you don't want a sequence, so why are you asking for a method that returns a sequence?14:52
rvbasinzui: I'm reading them right now14:52
rvbasinzui: do you want to talk to Rob about the ~registry thing? (the branch is really to land but I really can wait for the final thought on this ;-))14:53
sinzuiNo14:53
rvbasinzui: ok then14:53
=== matsubara is now known as matsubara-lunch
rvbasinzui: (question unrelated to the whole registrant thing): is there a reason why "make lint" does not use format-imports to warn about imports needing to be formatted?15:27
sinzuirvba: no reason.15:27
sinzuirvba: I certainly could. and do the copyright update too15:28
sinzuis/I/It/15:28
rvbasinzui: I'll do it then, and thus take this opportunity to lean a little bit more about the build system15:28
rvbasinzui: copyright update? you mean automatically warn about the date in the header?15:29
sinzuirvba: utilities/update-copyright will update all the dates in the changed files if they need it15:30
rvbaI like the idea of "make lint" not doing anything by itself but warning, and maybe giving commands to be executed to do the actual stuff ...15:30
rvbasinzui: should the format be done automatically or just warn (like make lint already does with the sample data files)?15:31
bacbenji: can you review https://code.launchpad.net/~bac/launchpad/accordion-style/+merge/53259?15:33
benjibac: sure15:33
bacbenji: great, thanks.  i'm going to have to be gone a bit but can answer questions when i return15:33
sinzuirvba: It would be lovely if it could do it automatically. I think that would be surprising though. The the scripts behave differently when there are uncommitted files in the tree. I think lint should warn when when everything is committed.15:34
benjik15:34
danilossinzui, hi, fwiw, I think the sharing stuff you CCed jtv and me about is best known by henninge and/or deryck (it seems to be the new stuff they worked on)15:36
rvbasinzui: sounds strange to break existing habits though ... why not create a "make format" that would do this, then if new tools are added to the tool set, they could be added here.15:36
sinzuidanilos: okay, i will do that now. Thank you.15:37
sinzuirvba: +1 `make format` that does code cleaning15:37
rvbasinzui: ok15:37
sinzuirvba: our linter uses pocket-lint which also has code cleanup features like fixing whitespace, line endings, doctests, css etc...15:38
rvbasinzui: I saw that you are the driver for the project yes, that's why I was asking you15:39
jmlsinzui: do you want to have a call today?15:44
sinzuiI have nothing to bring today. Maybe next week?15:45
jmlsinzui: sure.15:45
sinzuirvba: okay. pull tip. I landed a fix for py 2.7 recently. I have not packaged it. I thought I wold do it over the weekend, but I needed to not hack for a could days to collect my mind.15:47
rvbasinzui: you mean in pocket-lint?15:49
sinzuirvba: yes. Lp is using an older version.15:55
rvbalatest revision was on 2011-03-0315:56
sinzuirvba: yes15:58
sinzuijcsackett: do you have a few minutes to discuss my branch to enable the person merge job: http://pastebin.ubuntu.com/580164/15:59
jcsackettsinzui: ten minutes, then sure.16:01
sinzuiokay thanks16:01
gary_posterhey deryck, can you by chance point me to some JS somewhere that I can decipher that manipulates something that is exported as a CollectionField, or in some other way point me to figuring out the preferred way to delete something from a CollectionField in js?16:02
gary_posterheh, sorry for the convoluted sentence16:02
deryckheh, np. thinking....16:02
gary_posterdidn't sleep well last night :-/16:02
gary_posterLooks like maybe we don't do that now, and we need to add a method on Collection in client.js to do it "right"?16:07
deryckgary_poster: was just about to reply with that same statement.  I don't see that we do it anywhere.  We mostly fetch objects directly and mess with them.16:09
gary_posterok deryck, thank you!16:11
derycknp!16:11
jcsackettsinzui: i am on mumble.16:13
=== deryck is now known as deryck[lunch]
=== matsubara-lunch is now known as matsubara
=== m4n1sh_ is now known as m4n1sh
=== deryck[lunch] is now known as deryck
matsubaraAn indirect member of a team that owns a private branch can't access the private branch. Shouldn't the user be allowed? Is there a restriction for indirect members?17:43
abentleyderyck: I've gotten though the display side of doing the checklist, about to move onto the webservice part.  I sent you an email with some screenshots.  Just wanted to get your take on it.17:44
deryckabentley: yes, just about to respond....  looked at the screenshots and they looked great.  Just wanted to peak at the code before I responded.17:44
abentleyderyck: cool.17:44
deryckabentley: yeah, I think this is good.  Any specific questions?17:50
abentleyderyck: how do I test the controller, especially once I wire it up to do AJAX?17:50
abentleyderyck: Is there a better way to set/unset the "unseen" class?17:52
deryckabentley: ok, so re: testing with AJAX, look at Y.Mock.  http://developer.yahoo.com/yui/3/test/#mockobjects  And lib/lp/soyuz/javascript/tests/lp_dynamic_dom_updater.js is an example.17:54
deryckabentley: and as for the unseen stuff, I think that's fine what you have.  I think I would call it toggle_unseen, or something like that, just to be clear what it does.  But it's a fine approach to do it that way.17:55
deryckwe always use add/removeClass17:55
abentleyderyck: I wouldn't call it toggle_unseen, because "toggle" to me means that it changes the state to the opposite every time you call it.  This one sets the state.17:56
deryckabentley: ok, but it is unsetting unseen, i.e. making the thing seen if needed, yes?17:57
abentleyderyck: Yes.  The state is the presence or absence of the "unseen" class on the element.17:57
deryckabentley: so that you can use one function to turn the class on or off, right?  set_unseen, to me, implies we're only ever making the thing unseen.  Maybe toggle isn't the right word, but I think the name could be clearer.17:59
deryckabentley: but this is a minor thing, obviously.17:59
abentleyderyck: I'd like to make the name clearer, but it's hard to express what it does succinctly.18:00
deryckabentley: fair enough18:00
deryckset_or_remove_class_unseen_depending_on_state ;)18:01
deryckbut since it's js, we can call it -- sorcudos18:01
abentleyderyck: he he.18:01
abentleyderyck: I could invert the logic and call it set_visibility.18:03
deryckindeed.  that would work.18:04
deryckso much  nicer than my name.18:05
abentleyderyck: done.18:12
abentleyWhat about mocking the DOM for those Y.one calls?18:12
abentleyderyck: ^18:12
deryckabentley: on call now, sorry18:13
abentleyderyck: ack.18:13
deryckabentley: so mocking the DOM.... do you mean using Y.Mock, or just having some similar HTML in the test html file to interact with?18:28
abentleyderyck: Oh, I see.  I should be able to just plunk the same code in the test html file, and then interrogate the test file's DOM.18:29
deryckabentley: yes, exactly.  That's how we usually do it.18:30
abentleyderyck: Great.18:30
abentleyderyck: btw, there's already a function to add/remove arbitrary classes on Y.Node: toggleClass.18:31
deryckabentley: ah, nice.  I didn't even know that.  so much there.18:31
abentleyderyck: By default, it changes the state to the opposite, but you can specify True or False.18:32
deryckcool18:32
lifelessmoin moin18:32
lifelessallenap: hey18:35
lifelessallenap: is 12584 ok now?18:35
lifelessallenap: if not, how long are you proposing we wait to be confident ?18:36
lifelessderyck: are you able to qa rev 12586 ?18:36
derycklifeless: yes, going to get it before I EOD today.  starting in about 10 minutes on it.18:37
lifelessderyck: :)18:40
ToyKeeperI'm not sure if it was mentioned by number, but I'm hoping to resolve bug #734995 soonish for a project this week.18:42
_mup_Bug #734995: access denied for group branches (canonical-isd-hackers/oops-tools/isd-oops) <Launchpad itself:New> < https://launchpad.net/bugs/734995 >18:42
=== matsubara is now known as matsubara-afk
thumperderyck, danilos: I really wanted to get to add a "lp:user:loggedin" event19:51
thumperwith the idea that we had a single check point19:52
thumperand the rest of the code just used that event19:52
deryckyeah, that would be cool19:52
thumperthen, if we ever got around to it19:52
thumperwe could have an ajax login19:52
thumperand have the page morph19:52
sinzuiLet's change login to sign in first so that the link matches the words on the SSO pages19:54
* thumper goes to make a mega-coffee19:58
derycksinzui: I haven't had a chance to review that email you sent.  Long queues today of reviews, questions, etc.  I'll look tonight or early AM tomorrow.20:04
sinzuideryck: thanks. rvba is looking for confirmation that my suggestion is sane.20:04
deryckah20:04
leonardrsinzui, thanks so much for chasing down those test failures. i'm looking at the code now20:04
derycklater on, everyone!20:06
sinzuileonardr: I think I should have sent my changes to ec2. I hope I did not break anything in the so-called fix20:07
leonardrsinzui: ec2 land?20:07
leonardrthose test failures don't look related to the bug that was filed. i'll try to reproduce20:08
sinzuileonardr: `utilities/ec2 test launchpad=devel` will test and send you the report.20:19
leonardrsinzui: the remaining error is a problem in the way the test is written20:20
leonardryou are explicitly passing in None for the 'version' argument20:20
sinzui\o/ I suck20:22
leonardrsinzui: http://pastebin.ubuntu.com/580280/20:24
leonardrwant me to review the rest of your changes?20:24
sinzuileonardr: I should have known to pass the version...I told users on #launchpad to do that last week20:24
sinzuileonardr: sure20:25
leonardrsinzui: well, you fixed a ton of bugs i never would have been able to fix, so don't feel bad20:25
sinzuileonardr: I *think* I fixed an oopse, but I could not find an example. The change I made to the bug nomination view implies if there is ever a validation error on the view, it will oops instead of  showing the user how to fix the data.20:26
sinzuiI should look again before you land the branch20:27
lifelessmatsubara-afk: ping (oops-tools)20:29
leonardrsinzui: problem #1. it looks like we both added the same lines to security.cfg?20:32
sinzuioops20:33
leonardri put mine in a block at the bottom because it seemed really specific to the one task20:33
leonardrand you intermixed yours with all the others20:33
leonardri could go either way but we need to pick one20:33
lifelessflacoste: 757447920:35
lifelessflacoste: https://devpad.canonical.com/~lpqateam/ppr/lpnet/latest-daily-categories.html20:35
thumpermwhudson: ping20:36
leonardrsinzui: why did you remove the entirety of bugtask-target-link-titles? is it redundant with another test?20:38
leonardrah, you wrote unit tests instead20:38
leonardrok20:38
mwhudsonthumper: pong20:38
thumpermwhudson: want to review a blueprint branch for me?20:39
mwhudsonthumper: how complicated is it?20:39
thumperpretty simple, https://code.launchpad.net/~thumper/launchpad/blueprint-dependency-vocabulary/+merge/5319220:39
allenaplifeless: I think it's okay. I've heard nothing all day, and I've been around various bits of qastaging. I'll mark it qa-ok.20:39
mwhudsonthumper: yeah alright i'll take a look20:41
thumpermwhudson: thanks20:41
mwhudsonmy lp tree is a bit out of date and i want to look at it in meld, so i'll be a few minutes20:41
thumpermwhudson: for some reason, no-one likes blueprints20:41
mwhudsonprod me if i seem to have forgotten :)20:41
leonardrsinzui: what does changing the layer from LaunchpadFunctionalLayer to DatabaseFunctionalLayer accomplish? is it just cleanup?20:41
mwhudsonthumper: i can't possibly imagine why, the code quality is so amazing!20:42
thumpermwhudson: what? not even hacking on LP for fun?20:42
sinzuileonardr: yes, I had to disamantle the test to discover which conditions were not valid with sane sample data and factory.20:42
sinzuileonardr: the tests run faster when they do not setup, clean, and teardown the librarian20:42
lifelessallenap: thanks20:43
sinzuileonardr: also that doctest I removed was also being run twice because it was implicitly loaded by test_doc, and explicitly loaded in the module I added the replacement test. Everything ran much faster once I test exactly what the view did20:44
leonardryeah, i noticed that duplication20:44
leonardrsinzui: why did you remove the "Handling IntegrityError" doctest?20:45
sinzuileonardr: doctests do not test error condition. That is the domain of an implementation test...20:45
sinzuileonardr: we cannot get to that DB integrity error when the view ensures valid data..We do not permit integrity errors, so there should not have been a test to demonstrate the view was unfinishd20:46
mwhudsonhuh, my launchpad repo just hit 100k revs i think21:02
mwhudsonthe repack is taking a while...21:02
lifelesssinzui: we had a doctest checking the view was unfinished? /me facepalms21:03
sinzuilifeless: yes, it was quite a surprise. leonardr's branch that validates data before we apply revealed a lot os badness21:04
leonardrsinzui: on closer inspection of the diff, i think there are only 2 duplicate entries in security.cfg: binarypackagebuild and binarypackagename for [processmail]21:05
lifelesshmm21:05
lifelessI wish I could close popup diffs :)21:05
sinzuileonardr: just remove my additions. Sorry about the confusion21:06
leonardrnp21:06
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
thumperI wonder if any one actually uses the +deptree view21:11
thumperleonardr: mumble?21:11
leonardrsinzui: ok, i think this is ready: lp:~leonardr/launchpad/sinzui-10633821:12
leonardrthumper: yes21:12
thumperlifeless: can you tell me if anyone ever goes to a blueprint +deptree page?21:16
leonardrsinzui: take a look, and i'll try landing again? (it can wait until tomorrow if you want your test to finish first)21:17
sinzuileonardr: I am looking now21:17
leonardrgreat21:17
lifelessthumper: ppr over a month should be a decent indicator21:18
lifelessthumper: https://devpad.canonical.com/~lpqateam/ppr/lpnet/latest-monthly-pageids.html21:18
sinzuileonardr: r=me with these trivial changes: http://pastebin.ubuntu.com/580310/21:30
huwshimiMorning21:32
pooliehi huwshimi21:33
pooliehi flacoste?21:33
flacostehi poolie21:34
flacostepoolie: call time?21:34
huwshimijml: Good evening21:34
jmlhuwshimi: hi21:35
jmlhuwshimi: I'll just grab some yoghurt & will be right with you.21:35
huwshimijml: Sure21:35
poolieflacoste, yes, hi21:43
flacostepoolie: i'm on skype21:44
pooliehm21:45
thumpersinzui: still around?21:46
=== lifeless changed the topic of #launchpad-dev to: Performance Tuesday | 10:55 -!- Topic for #launchpad-dev: https://dev.launchpad.net/ | firefighting: - | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
=== lifeless changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | firefighting: - | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews/
wgrant:( We are turning into Java.22:01
lifelesswgrant: we are?22:01
wallyworldwgrant: my irc client decided to disconnect so i missed the lead up to your java comment - why do you say we are turning into java?22:02
wgrantlifeless: We now have external projects included in our source tree with Launchpad-specific changes.22:02
lifelesswgrant: which project?22:02
wallyworldwhy is that java-esque?22:02
wgrantlib/lp/contrib/javascript/yui3-gallery/gallery-accordion/22:02
wgrantwallyworld: Java projects are notorious for including all their dependencies in their trees.22:03
lifelessmove it to lazr-js ?22:03
lifelesswgrant: so are c++, C, python, ruby projects IME22:03
wallyworldwgrant: not the ones i've worked on :-)22:03
jelmerlifeless: btw, did the multiple versions of python packages discussion go anywhere?22:03
wallyworldbac: hi brad, are you able to +1 the recent mp you looked at for me now that i have done the requested changes?22:04
bacwallyworld: thanks for the reminder.  i'll look now.22:04
wallyworldthanks22:04
lifelessjelmer: no, I didn't manage to get the thought leaders to step out of their worldview22:04
jelmerlifeless: :(22:04
lifelessjelmer: feel free to jump in on debian-python22:04
bacwallyworld: done.22:05
wallyworldbac: thank you!22:05
lifelessI've shelved it for now, will probably come back to it, or perhaps we should migrate more massively and just avoid the issue entirely22:05
wgrantlifeless: The big problems for Ubuntu are Java projects. And Chromium.22:09
pooliehi wgrant, lifeless22:35
lifelesshi poolie22:35
pooliedid i understand you correctly in my last message on bug 716174?22:36
_mup_Bug #716174: api error messages should be machine-readable <Launchpad itself:Triaged> < https://launchpad.net/bugs/716174 >22:36
sinzuihi huwshimi do you want o mumble today?22:37
wgrantMorning poolie.22:38
lifelesspoolie: oh bah, I was reading mail and just closed it again22:42
lifelesspoolie: hadn't seen your irc comment22:42
lifelesspoolie: we may be talking past each other; voice?22:42
thumperjames_w: ping22:45
poolielifeless, sure!22:46
pooliepots or skype or mumble?22:47
lifelessskype is easiest22:48
thumpermwhudson: can you think of any current blueprints that have linked bugs?22:49
mwhudsonthumper: not off the top of my head, no22:49
thumperhmm... ok22:49
thumpermwhudson: did you take a look at the vocab branch?22:49
mwhudsonthumper: yes, bzr is distracting me22:49
mwhudsonthumper: i'll have a review in a few minutes22:49
huwshimisinzui: Sorry I completely missed your message22:51
thumpermwhudson: ok, thanks22:51
huwshimisinzui: Have you already finished?22:52
mwhudsonthumper: how can  _is_valid_candidate be called with something that isn't a spec?23:00
thumpermwhudson: shitty url traversal?23:01
thumpermwhudson: it handled the None case well23:01
thumperprobably never23:01
mwhudsonthumper: did you look at how _spec_from_url works?23:01
mwhudson(it's horrible, yes, but it will only return a spec)23:01
thumperonly briefly cause it looked shitty23:01
thumperprobably paranoia on my part23:02
mwhudsonok23:02
mwhudsoncan you remove that please? :)23:02
thumperI originally had just the none check23:02
thumpersure23:02
pooliei'm getting a 'please try again' page talking to lp23:04
pooliein fact https://bugs.launchpad.net/bzr/+bugs?field.searchtext=winsshd&orderby=-importance&search=Search&field.status%3Alist=NEW&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.assignee=&field.bug_reporter=&field.omit_dupes=on&field.has_patch=&field.has_no_package= is per23:04
pooliesistently timing out23:04
wgrantpoolie: Timing out, or "please try again"ing?23:06
wgrantIt's working for me.23:06
wgrant(although it's slow... 9s)23:06
wgrantWe are mid-rollout, but it shouldn't happening that much...23:07
mwhudsonthumper: revewied23:12
thumpermwhudson: thanks23:12
mwhudsonthumper: usual nit-picking :)23:13
thumper:)23:13
pooliewgrant, both oopsing and giving the proxy error page23:19
pooliehuwshimi, just a thought on the private bug thing23:19
pooliewhich is that the stackoverflow ribbons are point-in-time notifications, and after you've read them it's reasonable to dismiss them23:20
pooliewhereas if something's a static property of a bug23:20
poolieand potentially coming up on every bug page you look at all day23:20
lifelesspoolie: back23:20
poolieit may get annoying23:20
poolielifeless, let me just finish this post23:21
pooliewgrant, timed out again23:23
pooliehttps://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1899K176423:23
wgrantThanks.23:23
wgrantConfirmed.23:23
* wgrant is waiting for it to sync.23:25
poolielifeless, curl -v https://code.staging.launchpad.net/~maria-captains/bzr/diffoptions/+merge/5232523:30
pooliecOOPS-1899STAGING6523:32
poolieOOPS-1899STAGING6523:32
wgrantlifeless: I think your FTI changes have made bug searches significantly slower. See poolie's OOPS (it's finally synced)23:40
lifelesspoolie: 'X-Lazr-OopsId23:41
lifelesswgrant: that would be win, wouldn't it23:41
lifelesswgrant: Time: 3684.797 ms (staging)23:42
wgrantlifeless: The cost estimate with Bug.fti is 10x the one with BugTask.fti.23:43
wgrantI guess it has to load a lot more Bugs.23:45
lifelesswgrant: which is freaking odd as it was an || before23:45
lifelesswgrant: 2606.15..2606.1623:45
lifeless(I'm looking at the count(*) to start with23:46
wgrantI am too.23:46
lifelessIndex Scan using bug_fti on bug  (cost=0.00..2306.35 rows=42 width=12) (actual time=134.970..469.008 rows=2 loops=1)23:46
lifeless               Index Cond: ((fti)::tsvector @@ '''winsshd'''::tsquery)23:46
wgrantOh, it's doing that first?23:47
wgrantOn mawson it does bugtask first, and both are <400ms once the cache is hot.23:47
lifelessyes, it does bug_fti first23:48
wgrant         ->  Index Scan using bug_pkey on bug  (cost=0.00..54.26 rows=1 width=12) (actual time=0.015..0.015 rows=0 loops=2709)23:50
wgrant               Index Cond: (bug.id = public.bugtask.bug)23:50
wgrant               Filter: ((bug.duplicateof IS NULL) AND ((bug.fti)::tsvector @@ '''winsshd'''::tsquery) AND ((NOT bug.private) OR (SubPlan 1)))23:50
lifeless         ->  Index Scan using bugtask__product__bug__key on bugtask  (cost=0.00..6.24 rows=1 width=16) (actual time=0.033..0.034 rows=1 loops=2)23:52
lifeless               Index Cond: ((public.bugtask.product = 1186) AND (public.bugtask.bug = bug.id))23:52
lifeless               Filter: ((public.bugtask.status = 10) OR ((public.bugtask.date_incomplete IS NOT NULL) AND (public.bugtask.status = 15)) OR (public.bugtask.status = 15) OR (public.bugtask.status = 20) OR (public.bugtask.status = 21) OR (public.bugtask.status = 22) OR (public.bugtask.status = 25))23:52
lifelesswgrant: \d bug23:52
lifelesswgrant: \di+ bug_fti23:52
wgrantlifeless:     "bug_fti" gist (fti)23:52
wgrantNo similar index on bugtask_fti, though...23:53
wgrant Schema |  Name   | Type  |  Owner   | Table |  Size  | Description23:53
wgrant--------+---------+-------+----------+-------+--------+-------------23:53
wgrant public | bug_fti | index | postgres | bug   | 575 MB |23:53
lifelesswgrant: indeed, it was missing on prod a few months back23:53
lifelesswgrant: one of the first hints that fti was whack23:53
lifelesswgrant: the query doesn't use bugtask_fti now, does it ?23:54
wgrantlifeless: I doubt it.23:55
wgrantWell, the new query couldn't use it.23:55
wgrantThe old one could have. I don't know if it did.23:55

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