/srv/irclogs.ubuntu.com/2010/11/22/#launchpad-dev.txt

wgrantlifeless: Well, he was told to try it a few hundred times, IIRC.01:31
lifelessterrible advice01:31
wgrantProbably, yes.01:31
lifelessthey're all the same, if he's in a rush to merge we could update those translations by hand.01:32
wgrantI believe there's a question open.01:32
lifeless=== Top 10 Time Out Counts by Page ID ===01:59
lifeless    Hard / Soft  Page ID01:59
lifeless    3555 /    0  LoginToken:+accountmerge01:59
lifeless     298 /   55  Person:+commentedbugs01:59
lifeless     231 / 6781  Archive:+index01:59
lifeless      88 /  307  BugTask:+index01:59
lifeless      13 /   10  Person:+bugs01:59
lifeless      12 /  101  ProjectGroupSet:CollectionResource:#project_groups01:59
lifeless      11 /  260  Distribution:+bugtarget-portlet-bugfilters-stats01:59
lifeless      11 /   29  DistroSeries:+queue01:59
lifeless       8 /    1  BinaryPackageBuild:+retry01:59
lifeless       7 /   40  Milestone:+index01:59
StevenKwgrant: O hai?02:53
wgrantStevenK: Hi. Sort of here.03:06
wgrantExam tomorrow, but distractions are welcome :P03:06
StevenKwgrant: I'm looking at modelling SourcePackageAncestry -- do you think per-distribution or per-distroseries is the way to go?03:10
wgrantHmm.03:11
wgrantThis needs a lot of thought.03:11
StevenKI've been thinking about it over the weekend, and I'm currently on the distribution side03:12
wgrantI think so.03:12
wgrantBut what are we modelling?03:12
StevenKJust the versions present for an SPN in a distribution03:13
wgrantIncluding relationships?03:13
wgrantFor what purpose?03:15
wgrantDetermining the shared ancestor?03:15
StevenKwgrant: They'll be stored in order, with the newest first, for determing shared ancestors, yes03:16
lifelesswell, in-order is a lie with postgresql03:16
lifelessindexed perhaps03:16
StevenKIt will stored as INTEGER[], which IS ordered03:16
StevenKEr, TEXT[]03:17
StevenKSorry, brainfart03:17
lifelessan array in a single row?03:17
lifelessthat seems risky03:17
StevenKlifeless: It does?03:17
wgrantOh, I see.03:18
wgrantThat's a bit special.03:18
lifelessStevenK: yes, if you have more than one mutator03:18
wgrantI'd like a big brainstorm with everyone before we do anything, I think.03:18
StevenKwgrant: Special bad, special good or special special?03:18
StevenKI've spent about 15 minutes on this branch so far, so I'm perfectly willing to throw it away and write it off as a learning exercise03:19
wgrantArrays for this sort of thing in a relational database smell bad.03:20
wgrantParticularly when we model versions already (as SPRs), and have ancestry in bzr.03:20
lifelesswhat would be in each cell in the array?03:20
StevenKlifeless: A version number03:20
wgrantI think we probably need to store ancestry per (archive, distroseries, spr), but I may be wrong.03:21
StevenKPer spr seems like a lot of duplicate information to me03:22
wgrantWhy?03:24
StevenKwgrant: SPR has an version number stored with it, so the 'foo 1.0-1' spr will have ancestry of '1.0-1', '0.9-1', '0.8-1'; and 'foo 1.1-1' will have '1.1-1', '1.0-1', '0.9-1', '0.8-1'03:25
wgrantStevenK: Hm? 1.0-1 will reference 0.9-103:26
wgrant0.9-1 will reference 0.8-103:26
wgrantSo we have a map like this:03:27
wgrant(primary, hardy, 1.0-1) -> 0.9-103:27
wgrant(primary, hardy, 0.9-1) -> 0.8-103:27
wgrantThat is the model that seems intuitive to me.03:27
wgrantWe don't store version strings -- we store SPR references.03:27
StevenKWhich is also quite hard to traverse :-)03:27
wgrantNot if we drop the distroseries.03:28
wgrantWhich we may be able to do.03:28
lifelessStevenK: why array's ?03:28
StevenKlifeless: Because they can be grabbed from the db and pushed into a set, and then it's cheap to the find common ancestors03:29
lifelessyou should probably read all of http://www.postgresql.org/docs/8.4/static/arrays.html03:29
StevenKI already have03:29
lifelessStevenK: red flag alert: in postgresql whenever you say 'grab it all from the db', you're almost certainly doing it wrong.03:29
lifelessStevenK: you can pull the versions from related spr's easily too.03:30
lifelessthat said, I'm not against denormalising here - nor am I for it as such.03:30
lifelessHave you spoken with stub ?03:30
StevenKNot yet03:30
lifeless[by you, I mean the folk doing this design]03:30
StevenKHowever, wgrant is starting to convince me03:30
wgrantYay.03:32
wgrantYouknowimright.03:32
StevenKwgrant: So, your idea is a 'ancestry' column, which links to the previous SPR? And if it's NULL, it's the first one seen?03:32
lifeless(™)03:32
wgrantStevenK: We can't do it on SPR itself.03:32
wgrantStevenK: Since SPRs are shared between distroseries.03:32
StevenKPerhaps I should argue more, just to deflate wgrant a bit03:32
wgrants/distroseries/distros/03:32
wgrants/distros/archives/03:33
lifelesssomething to bear in mind03:33
lifelessthe data model currently blows up on duplicate uploads03:33
lifelesswe should fix things going boom when that happens. Would that influence this work ?03:33
StevenKThis is a feature03:33
lifelessStevenK: its very much not.03:34
lifelessStevenK: it causes two single points of failure, manual recovery, makes person merge of ppas hard.03:34
lifelessStevenK: Not A Feature.03:34
wgrantI would object to any person merge with PPAs.03:34
wgrantThere's no need for that in reasonable merge use-cases.03:35
lifelesswgrant: on principle or technicalities03:35
wgrantExcept maybe team merges, I guess.03:35
wgrantBut then rename.03:35
wgrantAnd that would screw up keys and URLs.03:35
wgrantso block it.03:35
wgrantblock it all.03:35
lifelesswgrant: hard to do does not imply not worth doing.03:35
StevenKlifeless: Is this is upload to cocoplum and germanium at the same time bug?03:35
lifelessStevenK: yes03:35
lifelessStevenK: which stops us trivially load balancing the two uploaders.03:36
lifelessStevenK: which means we can't deploy fixes to those servers but once a month.03:36
wgrantyeah, it sort of fucks up your PPA if you exploit that :P03:36
StevenKlifeless: Will this work impact that? No, not I can see03:37
wgrantI don't know how to solve that.03:37
wgrantIt could be made to impact it.03:37
StevenKIndeed03:37
wgrantIf we stored string versions.03:37
wgrantThat is interesting indeed.03:37
StevenKlifeless: You do enjoy banging that SPOF drum :-P03:37
spmgood, that he does.03:38
StevenKI think it can be solved, by changing the upload processor on both cocobanana and germanium to be a daemon process that scans the upload directories, and always talks to the master store03:38
wgrantStevenK: Doesn't help.03:39
wgrantWe don't have sufficient constraints to forbid duplicate uploads.03:39
StevenKThat can be solved03:39
wgrantIf our model didn't suck, UNIQUE constraints would do it.03:39
StevenKBut it is a thirteen-table join, like you say03:39
wgrantBut I don't think we can model it sanely like that.03:39
wgrantRight.03:39
spivGlancing at https://lpstats.canonical.com/graphs/CodehostingPerformance/ I wonder happened to codehosting 2 days ago?03:40
StevenKwgrant: Maybe the answer currently is "Yes, we can do it, but it will blow, the database will suck, and you'll hate us" ?03:40
wgrantbzr downgrade happened around then, maybe?03:40
StevenKwgrant: Or perhaps we can expect a branch from you on Wednesday that fixes all of our modelling problems? *eg*03:41
spivOh, huh, for the SFTP issue?03:41
wgrantspiv: I believe so. There's an incident report.03:42
StevenKwgrant: On a serious note, do you want me to look at your script on dogfood again?03:42
wgrantStevenK: I don't start for three weeks :P03:42
lifelessStevenK: enjoy it? no.03:42
lifelessStevenK: enjoy the *benefits* of banging it?hell yes.03:43
wgrantStevenK: That would be nice. But I don't know if DF will survive.03:43
StevenKwgrant: There's no way to make the first query be, err, nicer?03:43
wgrantI don't think so.03:43
wgrantBut maybe.03:43
wgrantRemember, though, that the publisher takes hours on DF, but just a few minutes on prod.03:44
wgrantSo DF is special :P03:44
wgrantBad special.03:44
StevenKwgrant: So kick the script off, and wait a few hours, and hide if IS tell me that mawson has exploded and set a few racks and Nafallo on fire?03:45
wgrantHopefully he'll be in the other DC at the time.03:47
lifelessactually, the benefits of the the spofs being fixed.03:47
StevenKwgrant: Remind me of the script name?03:48
wgrantStevenK: populate-spr-changelog.py03:48
StevenKHah, df has moved on, and canonical.launchpad.database has died, so the script dies03:49
* wgrant disappears for a while.03:49
wgrantHah.03:49
StevenKARGH, everything this script wants is from canonical.launchpad03:50
* StevenK shakes his fist at wgrant 03:50
wgrantStevenK: Heh, sorry. I am outdated.04:29
StevenKwgrant: It's been running for ~ 40 minutes, since I fixed the imports04:42
wgrant"its04:43
wgrantmy opinion that fixing our data mapping story is the highest leverage04:43
wgrantitem that requires TA input to achieve pervasive implementation and04:43
wgrantdeployment."04:43
* wgrant cries.04:43
lifelesswgrant: why so sad?04:43
wgrantlifeless: Highest leverage for achieving pervasive implementation.04:44
lifelesswgrant: bingo?04:44
lifelesswgrant: though you've mangled the sentence ther04:44
wgrantStevenK: Has the query finished?04:44
StevenK2010-11-22 04:01:48 DEBUG3  new transaction04:45
wgrantStevenK: Has London been evacuated?04:45
StevenKNope04:45
wgrantlol04:45
StevenKNot to my knowledge04:45
wgrantIt is tempting to try that query somewhere else.04:45
wgrantAnd see if it sucks less.04:45
wgrantOtherwise I guess I'll poke around once I have DF access eventually.04:46
lifelesswgrant: so I'm still confused05:00
lifelesswgrant: are you crying because it was jingoistic, or because it wasn't $othertask.05:01
spivMaybe because you missed one crucial square of his bingo card? ;)05:02
StevenKHaha05:03
* spiv guesses the it was the "synergy" square.05:08
StevenKwgrant: That query completed in 68 minutes05:09
StevenKwgrant: http://pastebin.ubuntu.com/535084/06:13
StevenKwgrant: Short answer, I killed it06:13
wgrantStevenK: Yay :/06:48
wgrantlifeless: The former.06:48
StevenKwgrant: I've not seen an error like that, but it looks like it updated at least two SPRs :-)06:49
wgrantStevenK: Indeed.06:49
wgrantBut I wonder if the query performs less atrociously on >mawson. :/06:49
StevenKwgrant: I suspect we can get a RO counting query going, if you wish06:50
spmugh. launchpad_qastaging stop == make build. yay. not.06:55
wgrantHah. Fun.06:55
spmstop should not be doing things like rm'ing directories, and moving stuff around. No. it has just one thing it needs to do and one thing only. terminate the running process. grumble grumble grumble.06:56
spmorsum. and then the make fails and stop doesn't. this is gold.06:57
wgrantStevenK: Can you stick your fixed script up somewhere?06:57
wgrantI seem to have lost mine.06:57
wgrantI can only find an old version :(06:57
StevenKhttp://pastebin.ubuntu.com/535088/06:57
wgrantThanks.06:58
StevenKUgh, could the gina doctest be any slower06:58
wgrantIt's only a couple of minutes, right? :P06:59
spmyes. ??06:59
wgrantWhat are you doing to the poor creature?06:59
StevenKwgrant: Having it toss changelogs at the librarian and linking them into the SPRs it creates06:59
wgrantAh, great.07:00
wgrantI didn't get around to that.07:00
wgrantmumble exams mumble07:00
spmhah07:00
StevenK$ bzr di | diffstat | tail -n 107:00
StevenK 2 files changed, 13 insertions(+), 6 deletions(-)07:00
StevenKIs tiny, so far07:00
wgrantYep, it should be.07:00
wgrantBut the tests might be amusing.07:00
StevenKYes, I'm not looking forward to changing them07:02
wgrantspm: Could you throw http://paste.ubuntu.com/535089/ at a production slave if you have time, pls?07:02
spmsure07:02
StevenK"Sure, but I have no time, so no" ?07:02
wgrantHeh.07:03
spmnah. I prefer to leave him in suspense for a few hours. the simple "sure" implies an answer that I'll do his request. but not mention of when. so it works from a bofh perspective. fwiw.07:03
spmwgrant: https://pastebin.canonical.com/40005/ argh. ffs. wrong paste. one sec.07:05
StevenKHaha07:05
spmwgrant: http://paste.ubuntu.com/535090/07:06
StevenKspm: That works. Yes, I've run the query, but you have to wait a few weeks for the results.07:06
wgrantspm: Thanks.07:06
spmI even knew to use the ubuntu one. but auto defaulted to the can pastebin. loltastic at self.07:06
wgrantStevenK: How long does that same query take on DF?07:06
StevenKwgrant: http://pastebin.ubuntu.com/535092/07:08
StevenKlolwut07:09
StevenKIt's *quicker*07:09
wgrant... yes.07:09
wgrantIt must have had stuff cached?07:09
* wgrant stabs WADL in the mouth.07:09
StevenKThat's quite possible, since I re-ran it to actually get the paste. Duh.07:09
StevenKTotal runtime: 458.468 ms07:10
StevenKAnd the universe makes sense again07:10
wgrantThat's more like it.07:10
wgrantNow to get a longer one.07:10
wgrantHowever this relies on my local appserver starting, which it seems to be reluctant to do.07:11
StevenKYour machine is hinting that you have study to do07:12
wgrantSilence.07:12
spmmv lib/canonical/launchpad/apidoc.tmp lib/canonical/launchpad/apidoc07:12
spmmv: cannot move `lib/canonical/launchpad/apidoc.tmp' to `lib/canonical/launchpad/apidoc/apidoc.tmp': Directory not empty07:12
spmmake: *** [lib/canonical/launchpad/apidoc/index.html] Error 107:12
spmwgrant: ^^ that error?07:12
lifelesswgrant: how many exams left?07:12
spmcause that's nicely broken qastaging07:12
StevenKOh, fricken apidoc07:12
spmAhh mr lifeless ^^07:12
wgrantspm: ....07:12
wgrantspm: I got that too.07:12
StevenKspm: We have that error about once a month07:12
wgrantspm: That's why I was stabbing WADL in the mouth.07:13
StevenKOn devel, at least07:13
wgrantlifeless: Just the one.07:13
wgrant9am.07:13
StevenKwgrant: For which subject?07:13
lifelessspm: if I may be so bold.07:13
lifelessspm: file a bug07:13
wgrantStevenK: Theory of Computation07:13
spmlifeless: was just about to; but was wondering if a known/quickish fix. no worries.07:13
lifelessspm: note in the bug that a) we need to find the landing that broke things and mark it as bad somehow07:13
spmnod07:14
lifelessspm: secondly, would you be able to run 'make clean'07:14
wgrantspm: Just blow away that dir.07:14
wgrantOr do that.07:14
lifelessspm: then make'07:14
StevenKHmmm07:14
lifelesswgrant: nice stuff :)07:14
StevenKGina's changelog parser is different from the archives. Fun.07:14
spmlaunchpad-rev-11956 would be a guess07:14
lifelesswgrant: turing equivalence, NDFA etc ?07:14
wgrantlifeless: Yup.07:15
lifelessone of my fav subjects at uni07:15
spmno. would have been before that.07:15
wgrantOne of the few subjects in which I've actually learnt something :/07:15
wgrantStevenK: Is http://paste.ubuntu.com/535094/ nice and slow on DF?07:16
lifelesswgrant: its good that you're learning stuff ;)07:16
lifelesswgrant: it gets harder the older you get :)07:16
StevenKwgrant: Not excessively, http://pastebin.ubuntu.com/535095/07:16
wgrantlifeless: Oh, yes, the learning is a good thing. The restricted number of subjects in which it has happened isn't.07:17
wgrantStevenK: :(07:17
wgrantStevenK: Could you run the script with LP_DEBUG_SQL=1 and see what's slow?07:18
spmwgrant: you need to do subjects like I did in CS. ie "How to be an ego ridden dork, who manages to piss off she who will one day be his wife, by having a working program in computer graphics: @3am in the labs; and doing more than was asked for in the assignment"07:18
wgrantspm: Heh.07:18
spmamusingly, 20 years later. she still hasn't forgiven me for that. :-D07:19
StevenKwgrant: http://pastebin.ubuntu.com/535096/07:20
StevenKThat query will spin for ~ an hour if the last run is anything to go by07:20
lifelessspm: was she competing for marks, or stood up for a date?07:21
wgrantStevenK: /^troseries/ does not a valid query make.07:22
spmheh, more like if you do more stuff than required, that tends to force others marks down on assignments. so she was shitty at having to do even more work. given her code wasn't running at that point in time. :-)07:22
StevenKwgrant: Er, lemme fix that07:23
StevenKspm: I submitted a 12 page Perl assignment for Systems Administration Programming, and got 95. The lecturer was cranky at me that she couldn't scale the marks, because if she did, the next best assignment would have gotten 6007:24
StevenKwgrant: http://pastebin.ubuntu.com/535097/07:25
spmStevenK: \o/07:26
wgrantStevenK: Could you replace the two %s with 0 and see how long it takes?07:26
lifelessStevenK: 12 pages of perl... shoulda marked you down07:27
wgrantI wonder if the overly verbose Storm-generated GROUP BY is being expensive.07:27
wgrant(I reduced it to a GROUP BY over SourcePackageRelease.id before)07:27
StevenKlifeless: That only made me chuckle ... what got me laughing so hard was when she reached for Programming Perl and waved at me saying "Do you know how many times I had to refer to this to mark your assignment?!"07:28
* wgrant is glad that LP will be an escape from Perl... except for sbuild.07:29
lifelessthats a rather crackful query07:30
StevenKwgrant: Its still going,07:30
wgrantStevenK: Aha.07:30
wgrantStevenK: Excellent, thanks.07:30
StevenKI suspect it will last the full 60-odd minutes07:30
wgrantlifeless: Oh?07:30
wgrantStevenK: Kill it pls (with fire, if you see fit)07:30
StevenKwgrant: And the script?07:31
wgrantStevenK: Yeah.07:31
StevenKOh, I love it when scripts don't listen to Ctrl-C, and instead just echo ^C07:31
spmyay. qas is back.07:32
wgrantlifeless: What is crackful about it?07:32
wgrantBesides the insane groupby?07:32
StevenKPity killing the script didn't kill the query07:32
lifelesswhats the 'HAVING COUNT(LibraryFileAlias) = %s' for07:33
StevenKIf I kill a postgres child, will it get cranky?07:33
lifelessyes07:33
StevenKlifeless: s/%s/0/ in your head07:33
wgrantlifeless: The %s is 0.07:33
spmwgrant: be grateful you're not going from pascal, C and modula-2 @uni to Assembler and Cobol @ $job1. :-)07:33
wgrantlifeless: It's finding SPRs without expired files.07:33
wgrantspm: Ahahah.07:33
wgrantAnd the query actually performs rather well.07:33
lifelessI'm surprised it accepts it at all07:33
wgrantWhy?07:34
lifelesscount(TableName)07:34
StevenKspm: Out of interest, do you have access to mawson?07:34
spmStevenK: not really. I think we can login and that's about it.07:34
StevenKDamn it, I want to kill that query07:34
StevenKOh well, the load is only 207:34
lifelesswgrant: so, 'LEFT JOIN LibraryFileAlias ON LibraryFileAlias.id = SourcePackageReleaseFile.libraryfile AND LibraryFileAlias.content IS NULL'07:34
lifelessStevenK: there is a pg helper to kill backends cleanly07:35
lifelessStevenK: or read the docs. IIRC TERM is ok07:35
wgrantpg_cancel_backend, or something like that.07:35
StevenKI doubt I have access to the postgres user, sadly07:35
lifelessStevenK: if you were considering killing it, I assume you had some access :)07:36
StevenKI wouldn't say no to access, I just like cleaning up after myself07:36
wgrantStevenK: You must surely have a postgres superuser?07:36
lifelesswgrant: + a HAVING constraint which implies NOT NULL07:36
lifelesswgrant: so, it doesn't need to be a LEFT JOIN07:36
StevenKwgrant: Well, yes, there is one, I just can't actually a shell as it07:37
spmStevenK: I lie. we have more access than I recalled.07:37
StevenKspm: Win. Can you switch to postgres?07:37
spmI can.... :-P07:37
wgrantStevenK: Don't you need a postgres superuser to run tests?07:37
StevenKDogfood doesn't run tests?07:37
wgrantlifeless: How does the HAVING imply not null?07:37
wgrantlifeless: HAVING COUNT(LibraryFileAlias) = 007:38
StevenKspm: kill -TERM 2750707:38
lifelesswgrant: count(something that is NULL) -> NULL07:38
lifelessNULL != 007:38
lifelesswgrant: no?07:38
spmStevenK: that would be an unwise way of doing things; but gist of the request is understood. one sec.07:38
wgrantlifeless: I don't think so...07:40
spmStevenK: https://wiki.canonical.com/InformationInfrastructure/OSA/SafelyKillBackendProcess for the record07:40
wgrantlifeless: http://paste.ubuntu.com/535099/07:40
spmStevenK: done07:41
wgrantSo I guess I need to pre-select the IDs the turn them into real objects later :(07:42
StevenKspm: Danke07:43
lifelesswgrant: 'count(expression)anybigint number of input rows for which the value of expression is not null'07:44
wgrantlifeless: eparse07:45
lifelesswgrant: so an SPR without expired files07:48
lifelesswgrant: is two queries07:48
lifelesssprs without files07:48
lifeless(exclude those)07:49
lifelessand sprs with files that are not expired - that have content)07:49
lifelesssorry, union them07:49
lifeless(tired)07:49
pooliehi lifeless07:50
lifelesshi poolie07:50
pooliewelcome back(?)07:50
lifelessheh, haven't been away ;)07:50
lifelesspoolie: just in orlando, still working07:50
pooliehas anyone tried/considered running launchpad in lxc?07:50
pooliewell, physically away07:51
poolieor are you still there?07:51
lifelesswgrant: that query wants 0 LFA's which will turn up if no LFA's are found, and we force no-files and files with content to null via the complicated join clause07:52
lifelesspoolie: no, nz now.07:52
wgrantlifeless: Any SPR in prod without SPRFs is a bug.07:53
lifelesswgrant: I think I'd write this as an EXISTS then07:53
lifelessHAVING is forcing it to evaluate all results which you've helpfully inverted to make a negative.07:54
lifelessbut we don't care about the count07:54
lifelesswe care that there is one or more LFA with content.07:54
wgrantTrue.07:55
lifelesswgrant: I suspect it will perform a lot better - but you may need a DISTINCT in the EXISTS select clause07:57
wgrantlifeless: The performance of the query is not problematic at the moment.07:58
lifelesswgrant: an hour isn't problematic?!07:58
wgrantlifeless: Except for the GROUP BY.07:58
wgrantlifeless: That goes away magically when I write the query manually to group by SPR.id, rather than SPR.*.07:58
lifelessaggregates are hard :P07:59
wgrantYou'd think pg would be smart enough to notice that there's a PK in there.07:59
lifelesspoolie: no idea07:59
poolieit may be lighter wait than full virtualization, but still strong08:00
lifelessensemble is building around it08:00
lifelessok, afk08:00
=== almaisan-away is now known as al-maisan
pooliejtv: woo!08:08
jtvpoolie: woo?08:08
jtvwoo whom?08:08
pooliei think that's the first time i've ever had a proposal just land the first time08:08
pooliewell, i guess there was a fizzle in the mp08:09
wgrantStevenK: Still around?08:13
StevenKwgrant: Hm?08:13
wgrantCould you try http://pastebin.ubuntu.com/535106/?08:13
StevenKwgrant: Running08:16
lifelessoh ugh08:17
wgrantStevenK: Less obscenely slowly?08:17
lifelesslaunchpad.net/linaro is a package08:17
lifelessproject I mean08:17
wgrantlifeless: This could be amusing.08:17
lifelesswgrant: what could be?08:17
wgrantlifeless: Converting Linaro to a distro.08:18
lifelessfortunately, NMP.08:18
lifeless:P08:18
lifeless'hi duncan, please reregister. Thanks.'08:18
wgrantYou nasty strategists and architects...08:18
lifelesswe sit around all day playing buzzword bingo08:18
StevenKwgrant: How long are expecting the new query to take? :-)08:19
wgrantStevenK: Not long :(08:19
lifelesswgrant: try an exists, you know you want to08:19
StevenKlifeless: I'm not sure if non-admins can actually register a distro08:19
wgrantThey can't.08:20
StevenKTherefore, 'hi duncan, please reregister' is completly pointless08:20
wgrantlifeless: But I like avoiding subselects :(08:20
lifelessthey aren't always wrong08:20
wgrantI know.08:20
StevenKwgrant: 4 minutes, and counting08:21
wgrantBut I like avoiding subselects.08:21
wgrantStevenK: Bah.08:21
lifeless8.4 seems to want DISTINCT a lot08:21
wgrantWhich query? LIMIT 1?08:21
lifelesswgrant: I'm sure you'll try soon enough08:21
StevenKwgrant: ENOLPSQLwhatsit08:21
wgrantStevenK: :(08:22
wgrantlifeless: We'll see.08:22
StevenKwgrant: Kill it and run it with the DEBUG?08:22
wgrantStevenK: Please.08:22
wgrantHm.08:23
wgrantI guess it's probably doing the limit in the wrong place.08:23
wgrantSigh, SQL.08:23
stublifeless: I think that is a side effect of the short circuiting not happening as often (at all?) in subqueries08:23
lifelessstub: yeah, I think that too08:23
lifelessstub: possibly a correctness fix in some corner case. I haven't looked in the changelog to see though08:23
stub(which might be trading performance for correctness, although the cases I can think of that need the short circuiting disabled should be detectable)08:24
stubI actually recall removing some distincts before, as they used to slow some queries down08:25
StevenKwgrant: http://pastebin.ubuntu.com/535109/08:25
lifelessstub: \o/08:25
stub(but others used to benefit from its addition too)08:25
stubAt least it is more consistent now ;)08:25
lifelesswgrant: so we can use a regular JOIN on sourcepackagereleasefile right? if not playing silly buggers with having08:27
wgrantlifeless: I want to find those SPRs that have no files with LFA.content IS NULL.08:28
wgrantlifeless: How can I word that in a non-LEFT JOIN?08:28
wgrantUnless I do an exists.08:29
lifelesswgrant: Time: 6.897 ms08:30
lifelesswgrant: the current group by *does not do that*08:30
lifelesswgrant: the content is NULL clause matches the join, and then the hacing COUNT excludes them08:31
lifelessor I may be misphrasing. Anyhow, one sec, I'll put that helpful english description into this08:32
wgrantlifeless: The HAVING doesn't work without the GROUP BY...08:32
jtvpoolie: only thing I had to do about your MP was set a commit message—so that all the metadata except the --no-qa option is in there and test-and-land becomes a very simple command line.  Congratulations, and thanks again for fixing this!08:33
wgrantStevenK: http://pastebin.ubuntu.com/535111/08:33
lifelesswgrant: so thats sprs where all their files are not null08:33
lifeless15 seconds on a first attempt08:34
lifeless11 seconds on hot cache08:35
StevenKwgrant: Killed and re-running08:35
wgrantlifeless: Which?08:35
wgrantStevenK: Thanks.08:35
StevenKOoooh, that's MUCH quicker08:35
wgrantLike actually not slow?08:35
lifelesswgrant: http://pastebin.com/q6XXG2H008:35
StevenKI'm getting confused by the DEBUG08:36
wgrantI think Foxtel has bought out every bit of Australian ad space.08:36
wgrantI have not seen a non-Foxtel ad in weeks.08:36
StevenKadblock FRW08:36
StevenK*FTW08:36
StevenK2010-11-22 08:37:08 DEBUG   Iteration 0 (size 1.0): 1.043 seconds08:37
StevenK2010-11-22 08:37:08 DEBUG3  new transaction08:37
wgrantI used to use it... but I go to so few adful sites that I didn't bother installing it this time.08:37
stubIf this is the pastbin http://pastebin.ubuntu.com/535106/ , I'm confused and the comment on the query doesn't match the query at all (comment is about finding sprf, query is finding sprs)08:37
wgrantStevenK: Is it expanding the set size?08:37
StevenKwgrant: http://pastebin.ubuntu.com/535113/08:38
wgrantstub: The comments used to be interspersed with the relevant bits of the query. Then I rewrote it and moved them all to the top for now.08:38
wgrantstub: But http://pastebin.ubuntu.com/535111/ is the latest version, which might make more sense.08:38
lifelesswgrant: the comment and code are confused ;)08:39
wgrantlifeless: Oh?08:40
lifelesswell it says 'Find any SPRFs that have expired (LFA.content IS NULL'08:40
lifelessbut you sau I want to find those SPRs that have no files with LFA.content IS NULL08:40
stubI don't know what Count(LibraryFileAlias) actually does, but I suspect nothing useful.08:40
wgrantlifeless: Have you read the version with the comments not all at the top?08:40
lifelesshttp://pastebin.ubuntu.com/535111/08:41
wgrantstub: Howso? It works fine.08:41
lifelesswgrant: its unusual, sets of alarums08:41
StevenKwgrant: This looks like it runs well, kill it?08:41
wgrantStevenK: Yep, thanks.08:41
StevenKwgrant: Bill is in the mail08:42
lifelesswgrant: I'm very confused about whether you want 'expired sprfs' or 'no expired sprfs'08:42
lifelesswgrant: I can get you expired ones in 6ms.08:42
wgrantlifeless: I want those SPRs without expired SPRFs.08:42
lifelesswgrant: why those in particular ?08:42
lifelesswgrant: and why the specific case of sprs without *any* expired sprfs ?08:43
stubI see. It is a confusing spelling of COUNT(LibraryFileAlias.id), which excludes NULLs unlike COUNT(*) would08:43
wgrantlifeless: because I can't extract an SPR without all of its files.08:43
wgrantstub: It wasn't a deliberate choice, I don't think. Does it make a difference?08:46
stubCOUNT(*) or Count(LibraryFileAlias.*) would match every row. Count(LibraryFileAlias.id) counts rows with a non-null id08:47
wgrantstub: Hm, but COUNT(LibraryFileAlias) happily returns 0...08:49
stubIn SQL or Storm?08:50
wgrantBoth.08:50
StevenKsize is 2811, but 11244 were read from the file08:51
* StevenK grumbles at gina08:51
StevenKwgrant: Oh, that script was running fast enough with 5 that I suspect it could be bumped to 20 or so easily08:52
wgrantStevenK: Yay. Thanks.08:54
stubhttp://paste.ubuntu.com/535119/ is the clearest SQL and likely fastest08:55
stubBut if it works08:55
bigjoolsmorning08:56
StevenK'AND SourcePackageRelease.id >= 1) AS Whatever' Haha08:56
adeuringgood morning08:57
wgrantstub: I tend to avoid EXCEPT when it's easy. But if you say so :)08:58
stubIts hard to say without benchmarking, and I haven't done that :)08:58
stubIn fact, that limit might have to go inside...08:59
wgrantAnyway, this script works quickly now, and only has to be run once...09:00
StevenKCrap, I think I made gina spin09:01
wgrantstub: Is postgres not smart enough to reduce a 'GROUP BY SourcePackageRelease.id, SourcePackageRelease.foo, SourcePackageRelease.bar' to 'GROUP BY SourcePackageRelease.id'?09:02
StevenKI thought GROUP BY were never twiddled with09:02
stubSQL isn't09:02
lifelesshttp://pastebin.com/bsCfW3Ya09:03
wgrantstub: But surely it can see that it's just grouping across real fields, one of which is a PK.09:03
stubYes, but the SQL standard wants them listed IIRC09:03
stubPG could extend the spec here I guess, but hasn't09:04
wgrantstub: I know that SQL requires that they be listed. But PG also seems to execute them.09:06
wgrantWhen it can tell that it's optimisable down to SourcePackageRelease.id.09:06
mrevellHi09:09
lifeless SELECT SourcePackageRelease.*09:10
lifeless    FROM SourcePackageRelease09:10
lifeless    WHERE SourcePackageRelease.id >= 1 and not09:10
lifelessSourcePackageRelease.id in (SELECT SourcePackageReleaseFile.sourcepackagerelease09:10
lifeless    FROM SourcePackageReleaseFile, LibraryFileAlias09:10
lifeless    WHERE SourcePackageReleaseFile.sourcepackagerelease = SourcePackageRelease.id and SourcePackageReleaseFile.libraryfile = LibraryFileAlias.id09:10
lifeless    AND LibraryFileAlias.content IS NULL09:10
lifeless) order by id desc limit 1;09:10
lifelessstub: wgrant: ^09:10
lifeless20ms09:10
wgrantlifeless: Ah, that's not bad.09:12
lifeless420.120 ms to get 55 rows09:12
wgrantWould a NOT EXISTS be saner, though?09:13
lifelessseemed to perform worse before09:13
wgrant:(09:13
lifelessbut it wasn't quite identical09:13
lifelesslets see09:13
lifeless SELECT SourcePackageRelease.*09:15
lifeless    FROM SourcePackageRelease09:15
lifeless    WHERE SourcePackageRelease.id >= 1 and not09:15
lifelessEXISTS (SELECT 109:15
lifeless    FROM SourcePackageReleaseFile, LibraryFileAlias09:15
lifeless    WHERE SourcePackageReleaseFile.sourcepackagerelease = SourcePackageRelease.id and SourcePackageReleaseFile.libraryfile = LibraryFileAlias.id09:15
lifeless    AND LibraryFileAlias.content IS NULL09:15
lifeless) order by id desc limit 1;09:15
lifeless11 seconds09:15
lifeless*yawn*09:15
lifelessgnight09:15
wgrantNight.09:16
wgrantThanks.09:16
stubwgrant: http://paste.ubuntu.com/535123/ is 20ms to retrieve approx 55 rows, and for this use we don't care about the approx.09:21
wgrantstub: Is it worth it?09:21
stubI have no idea, but you guys seemed to be optimizing it :)09:22
wgrantWe'll be making lots more queries.09:22
wgrantI don't want to optimise it, lifeless does :P09:22
stubIs this a run once?09:22
wgrantYes.09:22
stubDon't care then :)09:22
wgrantYay.09:22
stubAs long as it runs in days rather than weeks.09:23
wgrantI just wanted it down from an hour on DF... which was achieved by fixing the GROUP BY.09:23
StevenK68 minutes down to about 30 seconds or so09:24
wgrantbigjools: Have the recent log parser changes actually been tried?09:35
wgrantI recall a couple of emails to the LOSAs but I never saw a response (although that may have just gone to canonical-launchpad and not me)09:36
jmlmorning09:37
jmlthis cold is finally getting to be a hassle09:37
bigjoolswgrant: otp, but yes and it DOSed germanium09:38
wgrantbigjools: Still!?09:38
wgrant:(09:39
bigjoolsstill09:39
wgrantThey must have pulled some nice tricks with the librarian one the first time :(09:39
jmlanother incident?10:00
bigjoolswgrant: the librarian logs are nowhere near the size of the Apache ones for PPAs10:01
wgrantbigjools: Ah.10:01
wgrantSad.10:01
wgrantbigjools: Even with the max set?10:03
wgrantAnd it no longer reading all the lines in first?10:03
bigjoolswgrant: I don't know the details, I am yet to re-create on DF.10:04
bigjoolsmostly because I've not tried to re-create, mind ...10:04
wgrantI guess I can do that in a couple of weeks.10:04
bigjoolsI've got the production logs on it ready to go10:04
wgrantAh, great!10:04
wgrantSo it's not entirely hopeless.10:04
bigjoolsbut I need to fix the 2 thousand soyuz oopses per day first10:04
jmlmrevell: hi10:05
mrevellHell jml10:05
jmlThat I am :)10:05
wgrantbigjools: PFOE?10:05
mrevellheh10:06
bigjoolswgrant: yes10:06
bigjoolswgrant: also stub's change to make log.error generate an OOPS is making me sad10:06
wgrantbigjools: Yeah, it would :(10:06
* bigjools gets caffeine while waiting for rf-get10:07
stubYou don't want the behaviour, or you don't like what it is telling you?10:08
wgrantstub: Soyuz is ancient and broken :P10:09
bigjoolsstub: the code that logs an error for upload problems doesn't differentiate between what should or should not be an oops (it can be a package problem or a code problem)10:12
bigjoolsso I need to fix the code10:12
jmlonwards and upwards!10:13
jmlwgrant: had a look at the distributionmirror_prober recently?10:14
wgrantjml: We offloaded that to Registry :D10:14
wgrantNFI why.10:14
wgrantBut it's damn convenient.10:14
bigjoolsit's always been registry10:15
wgrantjml: Why?10:15
jmlwgrant: when you said broken and ancient,  I was reminded of it (or at least its tests)10:15
wgrantjml: Ah, yes.10:15
bigjoolslol10:15
wgrantIt's possibly even more broken and ancient than most of the rest.10:15
wgrantApart from gina.10:15
wgrantAlthough gina was refurbished.10:16
wgrantIt still sucks.10:16
StevenKI know :-(10:16
StevenKI keep wanting to rip out all of kiko's XXXs10:16
wgrantAnd some of the older bits of archivepublisher are fairly nauseating.10:16
wgrantBut one day it will be fixed.10:16
wgrantMaybe.10:16
jmlabout to try to land the branch that changes all of the twisted tests bar the prober ones to use testtools10:16
wgrantHah.10:16
wgrantThat bad?10:16
jmlthey basically need to be rewritten.10:16
jmlit's not that hard10:16
wgrantOne could say that about 90% of the Soyuz tests...10:17
jmlbut it shouldn't block getting this large branch integrated10:17
jmlwgrant: well, these are actually just generally incorrect10:17
wgrantjml: ... oh.10:17
jml(*always* return the Deferred!)10:17
=== jelmer is now known as Guest24864
wgrantjames_w: What happened to those massive anti-sampledata branches of yours?10:18
bigjoolsjml: see, now I understand about always returning the Deferred :)10:26
jmlbigjools: yep :)10:27
wgrantI really need to learn Twisted properly.10:28
bigjoolswgrant: I would like that10:28
wgrantSince I don't really completely understand the intricacies of the new buildd-manager. And that could be problematic.10:29
bigjoolswgrant: it's not too hard once you get into it10:30
wgrantIndeed, I probably just need to do it.10:30
bigjoolsbut there is a bit of a learning cliff10:30
wgrantCan't be as bad as Zope's.10:30
wgrantAnd I picked that up OK.10:30
bigjoolsI tried to document all the gotchas as much as possible, I probably missed a load though10:31
jmlwgrant: Twisted is less abstract than Zope and has fewer grand ideas, imo.10:35
wgrantGreat.10:36
jmlwgrant: also, it has the happy advantage of having primarily XML-hating developers10:36
wgrantHah.10:36
wgrantZCML's not that bad.10:36
jmlthe syntax isn't that bad, I guess10:37
wgrantI prefer Grok's approach, yes, but it's not that bad.10:37
jmlthe action-at-a-distance thing is a bit of a pain.10:37
bigjools<wgrant> ZCML's not that bad.11:06
bigjoolswho are you and what did you do with wgrant?11:06
wgrantbigjools: There are far worse things!11:09
bigjoolslike limb loss?11:10
bigjoolshaving heard that Twisted devs hate xml, I want to become one!11:10
wgrantFor one.11:10
wgrantA lost limb? An XML? Or a Twisted dev?11:11
=== Guest24864 is now known as jelmer
bigjoolswgrant: it's that time to remove jaunty's old binaries from the librarian, can you sanity check this for me, it's the same as the one for intrepid.   http://pastebin.ubuntu.com/535163/11:46
wgrantbigjools: Replace the "- interval '1 week'" with "+ interval '1 week'" and you have a deal.11:50
bigjoolswgrant: well we don't need to add any interval really, the GC has a built in one, which is why we took it *off* in the last query as time/space was tight.11:51
wgrantbigjools: At which stage is it built in? Does it set the expiry time in the future?11:51
bigjoolsno, it adds a week to the timestamp in the query it uses11:52
bigjoolsIIRC11:52
wgrantI'm extremely uncomfortable OKing a query that I know to be buggy (probably insignificantly, but still) when it's not an emergency, and I have an exam in 10 hours.11:53
bigjoolsheh11:53
bigjoolsgo to bed11:53
bigjoolswhat was buggy last time?11:53
wgrantWe didn't check dateremoved.11:53
bigjoolsin the EXCEPT clause?11:54
wgrantRght.11:55
wgrantIf we don't exclude unremoved files, p-d-r will cry.11:55
bigjoolsright11:55
* bigjools fixors11:55
wgrantHow critical are we for space?11:56
bigjools300G11:56
wgrantIt means nothing to me...11:56
bigjoolsheh11:56
bigjoolsnot crtitical but in the time-to-think-about it stage11:56
wgrantYep.11:56
wgrantI'll go through the query properly after my exam, then we can run it without the expiry mangling tomorrow night, then the morning after I will realise another flaw in it, and we will have no blown away the files yet :)11:57
bigjoolshttp://pastebin.ubuntu.com/535167/11:58
bigjools:)11:58
wgrantWe've fucked it up somewhat the last three times. Let's not do it again :)11:58
bigjoolsthe p-d-r thing was the only problem last time11:58
wgrantEr.11:58
jmlffs11:58
wgrantYeah, looks good.11:58
jmlwhy does absolutely *every* site that wants my money demand that I create a bleeding account11:58
bigjoolsso you can be labelled and tracked11:59
wgrantjml: Everyone should accept OpenID.11:59
wgrant*nudge nudge*11:59
jmlthese guys *do* accept openid11:59
wgrantHah.11:59
jmlbut they also need me to make up a password and so forth11:59
wgrantAs many do :(11:59
wgrantSounds like Launchpad!12:00
wgrantAnyway, I should probably sleep.12:00
deryckMorning, all.12:01
jmlderyck: good morning12:01
wgrantbigjools: Heh, that query's still bad.12:02
wgrantI will fix tomorrow.12:02
wgrantSigh.12:02
bigjoolssigh12:02
wgrantThis is hard.12:02
bigjoolsyes12:02
bigjoolswhat's up?12:02
wgrant                AND bpph.status in (2, 5)12:02
wgrant                AND bpph.dateremoved is NULL12:02
wgrantI think the first one probably wants to be removed.12:03
wgrantSince the second will clearly be true in all those cases.12:03
bigjoolstrue12:03
bigjoolsbut12:03
bigjoolscompeting p-d-r processes.  Grah12:04
wgrantHm?12:04
jmlgror my head12:04
bigjoolsbasically we need to run this periodically12:04
bigjoolsfor all obsolete series12:04
bigjoolsor, fix p-d-r not to care12:05
wgrantThat and obsolete-series.py itself, yeah.12:05
wgrantHm?12:05
wgrantWhy does p-d-r care?12:05
bigjoolsthe problem last time ...12:05
wgrantAh, yes.12:05
wgrantOr we could forcibly delete all the PPA pubs from obsolete series.12:05
bigjoolsno12:05
wgrant:(12:05
bigjoolssome people are using obsolete series12:05
bigjoolsthey are crackpots, I know12:06
wgrantThose people are wrong.12:06
wgrantAnyway, I will recheck that query tomorrow while I am still able, since that will resolve the immediate issue. But I would later like to know these wondrous use-cases for obsolete series, since I'm fairly sure they're insane.12:08
wgrantNight.12:08
wgrantIt would make obsolete series handling much easier :(12:09
bigjoolsnn wgrant, good luck with the exam12:12
=== al-maisan is now known as almaisan-away
jmlcrappy crapzor mccrapperton12:21
jmldo we have an existing mechanism to use the librarian as a fixture rather than as a layer?13:13
jmlI guess not, since testSetUp and testTearDown both do something in the librarian layer.13:18
jmlwhich means getting the log of the librarian during tests is going to be a pain13:18
=== mrevell is now known as mrevell-lunch
=== almaisan-away is now known as al-maisan
=== matsubara is now known as matsubara-lunch
=== mrevell-lunch is now known as mrevell
=== jaycee is now known as jcsackett
=== salgado is now known as salgado-lunch
sinzuijml ping14:47
jmlsinzui: hi. otp14:47
* sinzui will talk later14:48
=== matsubara-lunch is now known as matsubara
henningejtv: is your current branch browser code branch pushed?15:11
jtvhenninge: yes.15:11
jtvCurrently going through review for the migration script with Aaron.15:11
henningejtv: Does it touch CurrentTranslationMessageView?15:11
jtvYes.15:12
jtvHad to.   :(15:12
henningethat's ok15:12
henningejtv: there are two branches (pre and normal). I guess the one depends on the other?15:13
jtvYes.15:13
jtvThe "pre" branch is waiting for review (though I'm keeping our reviewer busy; he found what looks like a serious gotcha in the script)15:14
jtvIf that gets through unscathed, then the regular branch is also ready for review.15:14
jtvMeanwhile, I guess I'll be adding tests to the migration script and fixing the bug the review turned up.15:18
bigjoolsderyck: is it bad that I found it hard to read anything after the line "disable windmill tests" in your last email? :)15:32
deryckbigjools, I guess not ;)  but yeah, maybe so :-)15:34
=== al-maisan is now known as almaisan-away
marsabentley, you have another bzr pipeline convert in matsubara :)15:54
* mars tea :) mouse battery recharge :(15:57
=== almaisan-away is now known as al-maisan
marswrong macro15:57
abentleymars: Cool.15:59
jmlsinzui: ping16:05
sinzuihi jml16:08
lifelessmoin16:39
deryckmorning, lifeless16:40
lifelesshi deryck16:40
jmlsinzui: 173 oops bugs, 59 timeout bugs16:42
=== jelmer is now known as Guest34932
marsgood morning lifeless.  We don't normally see you around at this hour16:47
lifelessmars: I'm not normally jetlagged either :)16:48
marsrough.  That's twice in four weeks, isn't it?16:48
lifelessbigjools: hi16:48
lifelessbigjools: is https://bugs.launchpad.net/soyuz/+bug/654372 good to go ?16:48
_mup_Bug #654372: Source domination is inefficient <new-release-cycle-process> <qa-needstesting> <soyuz-publisher> <tech-debt> <Soyuz:Fix Committed by wgrant> <https://launchpad.net/bugs/654372>16:48
bigjoolslifeless: testing it *right now* as it happens :)16:49
lifeless\o/16:49
bigjoolsI've been doing QA all freaking day16:49
=== Guest34932 is now known as jelmer
bigjoolsunfortunately dogfood is slower than anything I can think of a funny idiom for right now16:51
lifelessthan a laser with a fricken shark on its handle?16:51
bigjoolsI can think of plenty of really offensive comparisons16:52
lifelessbdmurray: hi16:55
lifelesshttps://bugs.launchpad.net/malone/+bug/594247 - is that gtg on qastaging ?16:56
_mup_Bug #594247: searchTasks with structural_subscriber times out regularly <dhrb> <overlyprecise> <pg83> <qa-needstesting> <timeout> <Launchpad Bugs:Fix Committed by adeuring> <https://launchpad.net/bugs/594247>16:56
adeuringlifeless: gtg?16:56
lifelessgood to go16:56
adeuringlifeless: yes, let me update the tag16:57
=== salgado-lunch is now known as salgado
=== deryck is now known as deryck[lunch]
=== lifeless changed the topic of #launchpad-dev to: Performance Tuesday! | Launchpad Development Channel | Week 4 of 10.11 | PQM open for 10.12 | firefighting: importd system failing to import | https:/​/​dev.launchpad.net/​ | Get the code: https:/​/​dev.launchpad.net/​Getting
=== lifeless changed the topic of #launchpad-dev to: Performance Tuesday! | Launchpad Development Channel | Week 4 of 10.11 | PQM open for 10.12 | firefighting: - | https:/​/​dev.launchpad.net/​ | Get the code: https:/​/​dev.launchpad.net/​Getting
=== benji is now known as benji-lunch
jmllifeless: good morning17:37
lifelessjml: oh hai17:39
bigjoolsgood night all17:46
lifelessjml: I landed a couple of self reviewed branches since the optional review experiment started.17:54
lifelessjml: could you please review those for me, per the 'robert will review everything except his stuff, jml will review that' bootstrap phase?17:54
jmllifeless: sure. can you maybe email me the revnos or mps or something?17:55
jmllifeless: otherwise I'll make a note to figure those out myself.17:55
* jml partly afk assembling whiteboard17:56
lifelessmake a note.17:57
lifelessIf I determine them I will mail you17:57
lifelessjtv: when moving things to Ubuntu, if you change the projet to null, we won't get more email.18:00
jmllifeless: btw, I'm getting exactly one failure w/ my testtools branch, it's a 500 response from the librarian. has your recent fixture/layer work made it possible for me to get the librarian log attached to the error?18:01
jml(I can't seem to reproduce locally with a subset of the tests)18:02
lifelessthere is glue for that in this branch - https://code.launchpad.net/~lifeless/launchpad/librarian/+merge/3901318:02
lifelessits not landed yet but you might find merging it, running the test with it, to help you18:03
jmllifeless: ok, thanks.18:03
jmlI'll give that a try.18:03
lifelessif it blows up you might find grabbing the addDetail change to be easy enough to pull out, but I think the branch is in tolerable shape.18:04
jmlit's also making the fixture a member of the layer, I think. not such a big deal.18:04
lifelessthe reason its not landed is it depends on teh databasefixture layer which is broken in 'make check' (but not bin/test) atm18:07
lifelesss/layer/branch/18:07
jmlmeh. conflicts.18:08
lifeless:<18:08
jmltoo sick/tired to deal with that now.18:08
jmlI guess this branch lands Wednesday at the earliest.18:09
lifelessgo rest18:10
lifelessget well18:10
lifelessnothing good comes of working sick18:10
=== deryck[lunch] is now known as deryck
lifelessfun stuff - http://www.facebook.com/note.php?note_id=7619154391918:23
=== didrocks1 is now known as didrocks
=== benji-lunch is now known as benji
lifelessderyck: hi18:28
deryckhi lifeless18:28
lifelessderyck: something for consideration in your js landing stuff18:28
derycklifeless, sure.  shoot.  Was just replying to your email.18:28
lifelessI think its easy to end up with measurement bias in assessing the benefits of even terrible tests18:28
lifelessthe problem is in gathering data when there is a filter (the tests) on half the range18:29
derycklifeless, ok, I don't know that I fully follow what you mean there.  :-)18:30
lifelessok18:30
lifelessso, we're mentally saying 'gee, I think that <windmill> only sometimes catches failures, so we only sometimes have defects it would catch'18:31
lifelessbut the actual set of failures it catches is 22 times larger than the local-test-failures-one-encounters18:31
lifeless(we have ~ 22 active coding developers)18:32
lifelessthe tests, terrible as they are, are filtering out failures from all developers, but individually we only perceive the failures we've made ourselves.18:32
deryckno, I don't think  'gee, I think that <windmill> only sometimes catches failures, so we only sometimes have defects it would catch'18:32
deryckI wouldn't say it like that18:32
lifelessderyck: ok18:33
deryckI do think Windmill catches some failures.  I don't think that means we only sometimes have defects it would catch.18:33
deryckI'm not sure what that means for your argument :-)18:33
lifelessI'm not really arguing18:33
lifelessthrowing an issue I struggle with when evaluating the benefit of tests - any tests - into the right for discussion18:34
lifelesssince its part of the risk analysis.18:34
lifelesss/right/ring/18:34
deryckah, right18:35
deryckso how do we determine the value of these tests?  That's the heart of your analysis, right?18:36
lifelessits extremely hard to reason about life without any given set of tests, because there are so many places that the filtering effect (filtering out defects) that they offer occurs at.18:36
lifelessderyck: I think its an input into assessing the value of the tests, yes.18:36
derycklifeless, so you're saying that the tests filter defects in ways that we can't know, because we only the past defect the tests did catch.  But we don't know the things they catch they we were never aware of.18:39
deryckthat's hard to type18:39
deryckit's a bit meta-physical to me. :-)18:39
lifelessyeah18:41
lifelessmore simply18:41
lifelessyou never see my mistakes that tests caught.18:41
lifeless*we* never see each others mistakes that tests caught.18:41
deryckah, ok18:42
deryckI know mine, but not yours.18:42
lifelessbut when we remove the tests18:43
deryckI agree with that.  But that also assumes you write js or windmill.  And well, there ain't that many of us doing it for lp. ;)18:43
lifelessyou will feel many more, perhaps even all, of the mistakes.18:43
lifelessderyck: ack, as I say - this is a general modelling thing18:43
derycklifeless, right, and I completely agree with you in the abstract.18:43
=== matsubara is now known as matsubara-afk
lifelessderyck: for clarity, I'm ok with what you're proposing, tentatively.18:44
lifelessI don't think I'll get beyond tentative ;)18:44
derycklifeless, fair enough.  I don't think I can make you feel any better about it either :-)18:45
derycklifeless, is there anything I need to do because it's "tentative" or can I move ahead, assuming no one else objects.18:45
lifelessoh, I'm nonblocking as always18:46
lifelessif I wanted to stop it I would say so very clearly.18:46
lifelessI'd be happiest if we just fix windmill18:46
lifelessbut you're doing the work - you get to decide on the right path.18:46
lifelessif I was doing it, i think I'd fix windmill18:47
deryckfair enough,  thanks!18:47
deryckI'm replying in email on why I don't think we should do that.  or why I choose not to, rather.18:47
lifelessthanks18:48
lifelessflacoste: when did windmill become unmaintained ?18:50
lifelessstatik: we on today?18:51
jmlI think I overreached with this whiteboard18:51
statiklifeless: sure thing, just wrapping up with IBM18:52
marslifeless, by unmaintained, do you mean, when did mikeal leave the project?18:53
lifelessmars: I don't know what I mean.18:53
marslifeless, or do you mean umaintained in LP - no active work18:53
lifelessmars: see flacostes mail18:53
marslifeless, oops, my bad - /me goes to read context first18:54
deryckI believe unmaintained == mikeal leaving.18:56
deryckwindmill is not under active development anymore, as I understand it.18:56
lifelessis there any reason to believe that the 512K bug wasn't inherited from Selenium?18:56
deryckI don't know.  rockstar worked on that bug before and could say, I think.18:57
marsderyck, well, there are developers, but the project velocity may have slowed a fair bit.  (I haven't been keeping close tabs though)18:57
deryckyeah, the project web site has a new face lift.  So someone cares about it still.18:58
=== al-maisan is now known as almaisan-away
rockstarlifeless, I wasn't aware that Windmill inherited anything from Selenium.18:58
lifelessrockstar: wasn't windmill a fork of selenium, way back when ?18:59
rockstarlifeless, no, not at all.18:59
lifelessrockstar: I've been misinformed then. Someone should vote that comment down :)19:00
marslifeless, IIRC: Selenium was a complex piece of tech, the windmill devs thought they could have done some parts better - windmill tried a different way19:01
deryckI don't see much difference myself between selenium 1 and windmill.  Just that windmill is Python.19:02
marslifeless, now Selenium 2 apparently has taken the same approach that windmill did.19:02
rockstarmars, yeah, and the windmill devs hated selenium.19:02
deryckor maybe it's selenium 2, I'm thinking of ;)19:02
marsderyck, it was under the hood.  SSL handling, cross-domain requests, etc.  This is messy tech19:02
rockstarMikeal said himself "and, for the most part, the things we hated about Selenium are basically fixed now."19:02
deryckyeah19:02
deryckI actually have less issue with windmill vs. selenium than the kind of testing we chose to do with windmill.19:03
rockstarderyck, everyone but the Selenium 2 folks are staying away from Selenium 2.19:03
rockstarderyck, yeah, me too.19:03
deryckI think using selenium is better since it's more widely used and because it forces us to think differently about how we test, but I don't think selenium is a magic bullet.19:03
lifelessstatik: ok, skype me when ready?19:04
marsrockstar, "everyone but the Selenium 2 folks are staying away from Selenium 2" - care to elaborate?19:04
flacostederyck: they did made a release last week though19:10
flacostewindmill 1.419:10
statiklifeless: you don't seem to be online in skype19:12
lifelessfixed19:12
rockstarflacoste, yes, but no one's really actively working on it.  It's just patches that people send in now.  That release has been on deck for a while now.19:15
rockstarmars, I don't have many other details, other than Selenium 2's java server stuff is apparently really whack, I guess.19:16
rockstarmars, this is all speculation, as is everything in our javascript testing story.19:16
rockstarmars, one thing that is clear is that we need to be careful how we invest in any ship, because if we commit too strongly to something, we'll be sinking far too fast.19:17
rockstarEr, we may find ourselves on a sinking ship.19:17
marsYep.  Always a risk (I've been down this road more than once)19:18
marsAlas, there is no formula to predict which budding OSS project in a given arena will be best for your needs 2 years from now.19:19
flacostederyck: ,/bin/lp-windmill -m firebug jsdir=lib/canonical/launchpad/windmill/jstests http://launchpad.dev:8087/19:39
lifelessflacoste: hi19:57
wgrantI'm confused.20:05
wgrantThe lazr-js upgrade triples our JS size?20:05
wgrantIsn't that a bug?20:05
flacostelifeless: finishing off with deryck20:05
lifelessflacoste: ah, my bad.20:05
lifelessflacoste: sorry ;)20:05
lifelesswgrant: I think so.20:06
deryckyes, it's a bug.20:06
wgrantIf we need more than a megabyte of JS on every page, I think we have a serious problem :/20:07
deryckI agree it's serious.  hence, my effort to solve it. ;)20:08
wgrantGreat.20:08
thumpermorning20:08
deryckwe don't ever need 1.3 Mb of js for any page.  But we're concat'ing of all yui + lp js + lazr-js for every page.20:08
deryckand yui is the real beast20:09
deryckmorning, thumper20:09
wgrantAhh, I see.20:09
deryckyui is designed with batteries included like Python, thinking you'll dynamically load the modules you'll need.20:09
deryckand we've never used it like that20:10
wgrantDoes U1?20:10
wgrantIt seems like U1 has solved this sort of thing.20:11
wgrantBut I can't really see..20:11
derycku1 has a smaller base yui, I believe.  but rockstar is working on this for them.  he could say for sure20:11
wgrantAh.20:12
salgadohi thumper20:39
salgadothumper, I think I remember reading somewhere that you had plans to work on blueprints in the near future.  have you started yet?20:39
thumpersalgado: not really20:40
thumpersalgado: I've done a little yak shaving20:40
thumpersalgado: but not started in earnest20:40
salgadothumper, did you have any plans to expose them over the API?20:40
thumperyes20:40
salgadothumper, then it looks like I have good news for you.  project managers in Linaro need that ASAP, so I'm taking james_w's branch branch which started exposing blueprints over the API and try to nail down the remaining issues to get it landed20:42
thumpersalgado: sounds good20:43
salgadolp:~james-w/launchpad/safe-blueprints-model is the branch, btw.20:43
=== salgado is now known as salgado-afk
rockstarwgrant, U1 doesn't ship lazr-js, which drastically reduces its footprint.20:53
rockstarwgrant, also, until recently, we were loading each file separately in U1 (bad).20:53
lifelesssalgado-afk: awesome21:24
lifelesssalgado-afk: one small request21:25
lifelesssalgado-afk: please don't put the blueprints in api/1.021:25
lifelessrockstar: hey21:28
lifelessrockstar: remember at uds you had a features issue in a template21:28
lifelessrockstar: I would love to know what the problem was21:28
rockstarlifeless, uds was an eternity ago.21:32
rockstar:)21:32
rockstarlifeless, I remember it had something to do with template macros not having the same scope or something.  We were find that it was creating a new WSGI request for each template macro, even if it wasn't actually a net request itself.21:32
rockstarI don't remember how I fixed it though.21:33
lifelessah well21:33
lifelessthanks21:33
rockstarlifeless, are you having an issue now?21:33
lifelessno21:33
lifelessI wanted to:21:33
lifeless - think about root cause fixes21:33
lifeless - have the answer handy if someone else encounters it21:33
LPCIBotProject devel build (237): FAILURE in 4 hr 5 min: https://hudson.wedontsleep.org/job/devel/237/21:50
=== jkakar__ is now known as jkakar
lifelessmeep22:39
lifelessn22:39
lifelesshttp://news.cnet.com/8301-30685_3-20023535-264.html22:39
lifelessgmb: isn't it late for you ?23:01

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