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

wgrantlifeless: I believe so.00:02
lifeless[there's a few untriaged bugs in launchpad-project]00:03
wgrantAh.00:03
wgrantlifeless: We need to delete gandwana and potassium.00:20
wgrantSo many OOPSes with impossibly high non-SQL time on them.00:20
huwshimiwgrant: oh, thanks for triaging bug #737327... I forgot to change the status.00:23
_mup_Bug #737327: django should not be running in debug mode on production, it will eat all the RAM <OOPS Tools:Triaged> < https://launchpad.net/bugs/737327 >00:23
wgrantAlso palladium00:24
lifelesswgrant: they are on the list00:26
michaelh1Hi there.  If I click on any merge request on staging I get either a timeout or an oops.  Have you seen this before?00:29
lifelessthe testing librarian does not forward appserver requests to the prod one00:30
lifelessso you need to make a new merge proposal to test merge proposal stuff on staging00:30
wgrantWell, it's more that the staging librarian can't see restricted files from prod.00:31
wgrantAnd all MP diffs are restricted.00:31
lifelesswgrant: its not a token issue, it could forward00:32
lifelessits just a bug00:32
wgrantRight, but it's specific to restricted files.00:32
wgrantNot proxying.00:32
lifelesssame thing00:32
michaelh1I'd like to play with merge requests from launchpadlib.  What would you suggest?00:32
lifelessmake new ones on staging :)00:33
lifeless(actually, qastaging, its a better testbed)00:33
michaelh1That should work, ta.00:33
lifelesswhat does branchrevision.sequence is NULL imply ?00:42
mwhudsonlifeless: off mainline00:44
wgrantWhoever named compiz should have thought about how much it would crash.00:45
wgrantIt's very hard to start again when it dies and there is no z in your terminal buffer.00:45
StevenKwgrant: Alt-F1 ; DISPLAY=:0.0 compiz & ?00:48
wgrantStevenK: That breaks envvars when you're using unity.00:48
wgrantSince it appears to be a Compiz plugin now.00:48
StevenKThere is no pleasing you.00:48
lifelessmwhudson: thanks00:49
elmowgrant: kill unity, and start it again00:57
elmowgrant: it'll bring up a new compiz instance00:57
elmo(from the terminal, I mean, i.e. the Alt-F1 scenario)00:57
wgrantelmo: With a real environment?00:59
wgrantSo dbus apps won't cry?00:59
elmowgrant: *shrug*, it WFM on natty without a real environemnt (just DISPLAY) - I just had to do it just now when unity suicided on me01:00
wgrantelmo: hm, OK, will try that in future. Thanks.01:00
wgrantMine dies a few times a day at the moment... but I'm using r600g, so that's not too surprising.01:00
elmoI'm using Intel :(01:00
wgrantMy Intel laptop is still safely on maverick.01:01
pooliehi all01:08
wgrantAfternoon poolie.01:08
wgrant...01:09
wgrantArchive.sources_size and binaries_size.01:10
wgrant...01:10
StevenKwgrant: What about them?01:11
wgrantLook at them.01:11
StevenKI don't want my eyes to bleed?01:11
wgrantIt grabs every LFA and LFC in the archive.01:11
wgrantAh, actually, just the filesizes. But all of them. Into python.01:12
wgrantThen sums them.01:12
wgrantIn Python.01:12
wgrantIt's probably not *that* slow. But it's stupid.01:13
StevenKEr, yeah. Now you that mention it, SQL can do the entire heavy lifting01:13
StevenKHm. I think I can see the bug01:22
StevenK(Pdb) print spr.changelog.read()01:22
StevenK<security proxied lp.registry.model.sourcepackagename.SourcePackageName instance at 0x106ce390> (1.0-1derived1) unstable; urgency=low01:22
wgrantEr, what?01:23
StevenKI'm missing a .name01:24
wgrantIs this for tests?01:24
StevenKYes01:24
wgrantAh, good.01:24
StevenKHaha, I'm not that evil.01:24
lifelessman, so many soyuz bugs in 'incomplete wasused to clarify something and never changed' state01:34
lifelesslets see01:34
lifelessbugtask, dsitribution, cve all as much under control as they will be01:35
lifelessi guess its productset time01:35
spmbugs don't auto switchout of incomplete status after any additional info added do they? perhaps they could?01:35
lifelesspehraps01:36
lifelessexpiry has had a difficult birth01:36
lifelessits not really battle tested01:36
lifelessI don't mean to indicate doubt about the idea; just that there are several ways to tackle it01:36
lifelessrevamping status is bigger but perhaps worth it01:36
lifelesssolve a bunch of headaches at once01:37
spmsure. I guess I've always viewed (anywhere) that bug status fields are project management fields - in my case, I'll update a bug, but typically won't change the status.01:39
lifelessindeed01:40
lifelessit can be frustrating for folk that identify with a project, when 'users' or bug filers change metadata01:40
lifelesswgrant: qa time I think01:50
lifelesswallyworld_: you too :)01:50
* wallyworld_ want to finish some debugging first01:51
wgrantlifeless: A good point.01:51
lifelesswallyworld_: thats a priority inversion: unqaed stuff on trunk is a -blocker- and comes before all other work except production-is-down situations01:52
lifelesswgrant: I'm looking at sinzuis thing01:52
wallyworld_lifeless: ok. but it means a context switch. i'll get onto it though....01:53
lifelesswallyworld_: it does, and thats why I want us to drive the latency way down so a context switch is less often needed.01:53
lifelesswallyworld_: nevertheless, trunk is a critical section :(01:54
wallyworld_np.01:54
wgrantBaah01:54
wallyworld_lifeless: how do we test something that needs to access a diff when the data is not available via qastaging?02:07
lifelessmute is still behind a ff right ?02:07
wgrantYes.02:07
lifelesswallyworld_: you need to make a new merge proposal or whatever02:07
wallyworld_ok02:07
lifelesswallyworld_: if you're very confident things will be better not worse, you can punt and go 'qa-untestable'02:11
lifelessthe goal is to make a good tradeoff between time invested and risk of breaking stuff02:12
wgrantI don't think it's worth QAing that one.02:12
wgrantIt's going to take a while.02:12
wgrantApart from that we're OK to deploy.02:12
wallyworld_lifeless: np02:12
lifelesswgrant: do you need me to fire up evo and look at the mailbox ?02:13
wgrantlifeless: No, I got what I needed.02:14
wgrantThunderbird just took a long time to download all few hundred thousand headers.02:14
lifelesswgrant: clear it out02:14
wgrantJust delete them?02:15
lifelessyeah02:15
lifelessits a test environment, not gmail :)02:15
wgrantHeh.02:15
lifelesshmm02:15
lifelessthe tagger seems to be missing bugs :(02:15
lifelesssee rev 1262902:15
wgrantThe syntax in that commit message is invalid.02:16
lifelesswgrant: they are also linked to the MP02:16
wgrantHmm.02:16
lifeless411 exceptions02:17
lifelessnice02:17
wgrantNot really.02:17
wgrantIt was less yesterday.02:17
lifelessdown from 20K :P02:17
wgrantShh.02:17
lifelessPOFile:+translate is still in trouble02:17
StevenKwgrant: I think I may have thought of the only case we want to delete DSDs.02:17
StevenKwgrant: If the source is removed from both the child and parent distroseries.02:18
wgrantStevenK: Even then it's questionable. But maybe.02:19
StevenKwgrant: Questionable why?02:19
wgrantStevenK: There are situations in which the package could be deleted from both for a while and then restored. But the diff is unlikely to be important in that case, I guess.02:20
wallyworld_huwshimi: ping02:21
huwshimiwallyworld_: Hello02:21
StevenKwgrant: It's just a thought. I'm going to add two test cases to my end to end testing to see if the DSD gets updated on package deletion too.02:21
wallyworld_huwshimi: bug 58040402:21
_mup_Bug #580404: pressing enter in tags field doesn't save them <ajax> <javascript> <lp-bugs> <qa-ok> <Launchpad itself:In Progress by huwshimi> <LAZR Javascript Library:Fix Released by huwshimi> < https://launchpad.net/bugs/580404 >02:21
wgrantlifeless: You're requesting a deploy?02:22
lifelesswgrant: in about 75 minutes02:22
wallyworld_i qa-oked it but it doesn't seem to properly fix the issue02:22
lifelesswallyworld_: do we need to roll it back ?02:22
wgrantlifeless: The portlet fix?02:22
lifelesswallyworld_: or is it ok to deploy, just incomplete?02:22
lifelesswgrant: yes02:22
wallyworld_huwshimi: no, since it doesn't break anything, but it doesn't seem to properly fix it02:22
lifelesswallyworld_: then its qa-ok02:23
wallyworld_lifeless: i know that02:23
StevenKHere Comes The Rain (to the tune of Slayer's Here Comes The Pain)02:23
lifelesswallyworld_: ok :) - was unsure what you're saying then02:23
wallyworld_i just wanted to see if i was testing proerly02:23
wallyworld_in case we needed to raise a new bug02:23
lifelesswallyworld_: In this sort of case I add a comment to the bug saying 'does not fix' and whoever does the deploy will put it back to in-progress02:24
huwshimiwallyworld_: It isn't testable until we release a new version of lazr-js with Launchpad. Which I've been distracted from doing02:24
wallyworld_lifeless: thanks for the tip02:25
lifelessthumper: bug 615647 - I've played around for a more efficient query, and it seems to work ok to me; could you eyeball it and check I haven't missed anything?02:26
_mup_Bug #615647: BranchMergeProposal:+index timeout <lp-code> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/615647 >02:26
wallyworld_huwshimi: i have uploaded rev 206 of lazrjs to the download cache. still getting the branch that needs it fully debugged02:27
wallyworld_huwshimi: are your changes done prior to rev 206? if so, they02:27
wallyworld_will get rolled out when 206 goes in02:27
huwshimiwallyworld_: yeah they're in 20402:28
huwshimiwallyworld_: Thanks02:28
wallyworld_huwshimi: np. i'll try and get my branch through today. gotta fix some failing tests02:29
huwshimiIs there any way to add a class with a condition using TAL. More specifically I want to add the class 'hidden' to a div under a certain condition. The div already has other classes, just to complicate things.02:39
lifelesshuwshimi: probably best to do that in the view02:40
huwshimilifeless: Really? It seems like the sort of thing that should be done in a template?02:42
wgrantIt belongs in the template. But it's difficult and ugly to do it there.02:43
lifelesshuwshimi: if you want to do conditional logic you want a real programming language02:43
lifelesshuwshimi: either js, or python, not -ever- tal02:43
huwshimilifeless: Oh, but we have heaps of conditional stuff in our templates.02:44
lifelesshuwshimi: which has a bunch of poor sideeffects02:44
lifelesssuch as:02:44
lifeless - timeouts (tal:when used on a collection that triggers an additional count(*) of an expensive query)02:45
lifeless - complex templates that can't be used in multiple contexts02:45
lifeless - expensive tests (need to test complete rendering - and rendering uses the whole stack- for more code paths)02:46
lifelesshuwshimi: I'm exaggerating a /little/ for effect, but templates are really not suitable for anything but the simplest of conditionals, and tal inparticular, with its obsession on document structure as a pun for program logic makes this substantially worse when you're not dealing with a dom subtree02:47
lifelesswgrant: btw - high nonsql time is (IME) correlated with repeated lookups; I suspect storm GIL handling exacerbates high load situations (e.g. too many handoffs)02:51
wgrantlifeless: Quite possibly, yes.02:52
lifeless(so fixing such timeouts is easily possible via code  :P)02:53
lifelesshmm02:53
lifelessmakeCodeImport() doesn't create the branch ?02:53
lifelessor... not scanned I guess02:53
=== Ursinha is now known as Ursinha-afk
huwshimilifeless: What I'm doing is purely to do with presentation (and handling broken situations with no javascript). If from what I understand you mean we should be returning css classes from the python view (which I've seen elsewhere in Launchpad) which I think is a bad idea (it tightly couples CSS to views, which makes things less re-usable and a lot harder to change), if anything we should be returning boolean flags wh02:58
huwshimiich we can check against to modify the template accordingly  (which is what we have already in this case).02:58
huwshimilifeless: At this point it looks like my best bet is to duplicated a chunk of HTML under 'condition' and 'condition not:'03:11
lifelesshuwshimi: I suspect thats more of a maintenance burden than I was suggesting.03:14
lifelesshuwshimi: in terms of reuse and change, I haven't seen anything in tal that makes it easier to change than a view, and we have nearly universally a 1:1 view->template mapping anyway.03:14
lifelesshuwshimi: which, I admit, may be because we have things all funky at the moment.03:15
huwshimilifeless: So really we have this limitation of having views return classes due to limitations with our templating language?03:16
lifelesshuwshimi: I think we have different perspectives.03:16
lifelesshuwshimi: you say you are working on presentation, right ?03:16
huwshimilifeless: Correct03:17
lifelesshuwshimi: view objects *are* the presentation layer03:17
lifelesshuwshimi: templates are bound to a view for convenient editing of the html03:17
lifelesshuwshimi: but its not a limitation, bug or defect to do html in the view.03:17
lifelessincluding complex logic for deciding on things - like initial visibility03:19
lifelesshuwshimi: I'll note that duplicating a section of html in the TAL will have a negative impact on performance03:19
huwshimilifeless: OK I see where our opinion differs.03:20
huwshimilifeless: Although I would say that it is a limitation of our templating language that we can't properly manipulate the HTML it ouputs.03:20
lifelesshuwshimi: TAL is in some ways /extremely/ primitive; the implementation we use is also very slow - the work gary and others have done to make chameleon available will, when complete, help with performance a lot03:21
lifelessin other ways TAL is pretty nice03:21
huwshimilifeless: So for this I should move all my classes on this div into the view and return them depending on conditions there?03:23
lifelesshuwshimi: both wgrant and I reacted that way, without having seen the exact situation03:24
wgrantExcept I say it's a necessary evil, and lifeless says it's good.03:25
StevenKHm, I wonder how far chameleon is off03:26
huwshimiwgrant: I think it's particularly evil cause you can't separate out the classes that should be returned on the condition to the ones that should always be applied :(03:27
wgranthuwshimi: Yup.03:28
mwhudsonyou could do tal:attributes="class string: always ${view/optional}" or something?03:29
wgrantTrue.03:29
huwshimimwhudson: Can you explain that to me?03:31
mwhudsonhuwshimi: which bit?03:32
thumperlifeless: public holiday here today :)03:32
* thumper is off all week03:32
wgrantThunderbird has managed to use 6.5GiB of RAM.03:32
wgrantI am impressed.03:32
mwhudsonhuwshimi: maybe this bit? http://docs.zope.org/zope2/zope2book/AppendixC.html#tales-string-expressions03:33
lifelessthumper: orly ?03:33
lifelessthumper: I wants :P03:33
huwshimimwhudson: Thanks I'll take a look03:34
lifelesshuwshimi: the word always would be a class you want present no matter what03:35
wgrantlifeless: Do you have any thoughts on extending BrowsesWithQueryLimit to help with scaling tests?03:38
wgrantie. I want to specify a maximum baseline, test the baseline, then test that it doesn't scale above that.03:39
lifelesswgrant: do you mean 'allow it to do LessThan' ?03:44
StevenKtypos in URLs make me sad.03:44
wgrantlifeless: I guess I want the matcher to remember the last value it checked, and use that as the max for future calls.03:45
lifelesswgrant: so, this would permit accidental increases in baseline03:46
lifelesswgrant: but be more tolerant of deliberate increases in core infrastructure03:46
wgrantlifeless: It would still have an initial value.03:46
wgrantBut would use the last checked value in preference.03:47
lifelesswgrant: so it would ratchet down03:47
wgrantRight.03:47
lifelessso the failure you are preventing is 'someone set the initial value way to high'03:47
wgrantMore "someone improved other stuff, so the initial value is now way too high and nobody noticed because we use LessThan instead of Equals"03:48
lifelesswgrant: you can do this if you want, should be a small matter of code; I don't have a strong opinion any which way.03:48
lifelesswgrant: as an alternative, perhaps error if the query count is *too low*03:48
wgrantlifeless: That's what I suggested last week, but you seemed neutral/negative.03:49
lifelesswgrant: did I? sorry.03:49
wgrantQuite reasonably, because it's more sensitive to widespread query reductions.03:49
wgrantI'm not sure which concern should win.03:50
lifelesswgrant: did you suggest users supplying a minimum, switching to Equals, or having a heuristic ?03:50
wgrantlifeless: Switching to Equals.03:51
wgrantUsers supplying a minimum is silly.03:51
lifelesswgrant: ah03:51
wgrantAnd a heuristic is a heuristic.03:51
lifelesswgrant: so I'm suggesting using a heuristic, not switching to equals03:51
lifelesswgrant: one such heuristic would be 'allow off by 1'03:51
lifelessanother would be03:51
lifeless'alllow a 10% margin below the count given'03:51
lifelesswgrant: I'm still neutral/negative on using equals. I think we need some slack.03:52
lifelessthumper: whats the holiday?03:53
lifelessI can has review? https://code.launchpad.net/~lifeless/launchpad/bug-734751/+merge/5414603:54
wgrantlifeless: "allow off by 1" rots, "allow a 10% margin below the count given" is going to miss scaling issues.03:55
wgrantUnless the 10% margin only applies to the first time.03:56
lifelesswgrant: i like the idea of combing a heuristic and an observed cap04:03
lifelesscombining*04:03
lifeless5 second portlets still suck, but at least its less suck04:19
wallyworld_anyone feel like reviewing https://code.edge.launchpad.net/~wallyworld/launchpad/unassign-private-bug/+merge/5394504:36
* StevenK slaps wallyworld_ for pasting edge URLs04:37
wallyworld_ouch04:37
wallyworld_stupid browser cache04:37
StevenKwallyworld_: Why do you have a return at the end of _cacheViewPermission()?04:39
wallyworld_StevenK: cause i'm stupid. it's a typo04:39
wallyworld_StevenK: actually no04:40
wallyworld_it's to exit the loop as soon as a match is found04:40
StevenKAh, right04:40
wallyworld_StevenK: notice how my first reaction was to think how dumb i am :-)04:41
lifelesswgrant: wallyworld_: StevenK: I'm tired of my merge proposals timing out. So have fixed. Could one of you eyeball this please: https://code.launchpad.net/~lifeless/launchpad/bug-615647/+merge/5415004:43
* wallyworld_ looks04:43
lifelessif you're not a full reviewer thats ok - I'm going to self review, this thing is going down ;)04:43
StevenKNo diff yet04:43
StevenKwallyworld_: If you can confirm self.bug in the context of those two tests is private, r=me04:44
* wallyworld_ looks04:44
lifelesswallyworld_: reviewed.04:45
wallyworld_thanks.04:45
wallyworld_StevenK: self.bug is created in the test setup04:46
StevenKwallyworld_: I'm abstaining, due to lifeless' review of your MP04:47
StevenKWTF, how hard can it be to switch DB users04:48
wallyworld_lifeless: do we really know that the current user has permission? what if they were removed from a team after they had already opened the page?04:49
StevenKself.layer.switchDbUser() insists that LaunchpadFunctionalLayer doesn't have that method, and LaunchpadZopelessLayer.switchDbUser() gives ZopelessTransactionManager not installed04:50
lifelesswallyworld_: then how do they reach the code to call unassign?04:50
wallyworld_lifeless: might they have the page open and before they go to unassign, they are removed from the team by someone else. on their browser, they are still assigned04:51
wallyworld_so they could concievably stil lmake the api request to the back end04:52
lifelesswallyworld_: then the publishing code will return a 404 to the POST04:52
wallyworld_ok04:52
wallyworld_so i'll take away the checks and just add the user to the cache04:53
lifelesswallyworld_: and move the code04:53
wallyworld_to?04:54
lifelesswallyworld_: in fact, this is a self inflicted bug :)04:55
lifelesswallyworld_: have you got transitionToAssignee open ?04:55
wallyworld_lifeless: no04:56
wallyworld_but i can04:56
lifelessgrab it now04:56
wallyworld_open04:56
lifelesslook at the last line of the third if block04:56
wallyworld_you mean clearing the cahce?04:57
lifelessit explicitly enforces cache coherency on the viewers, *discarding* the fact that the active user can see the bugtask.04:57
lifelessthis is in conflict with the intent of your change which is to 'permit the user to view stuff that they *could* even if they *can't now*04:58
wallyworld_yeah, i didn't really know this bit of the code base that well. just found what looked like would work04:58
* StevenK glares at the apartment above him04:59
lifelesswallyworld_: http://pastebin.com/iwLt6zhw04:59
StevenKSome ingrateful muppet is using a hammer drill04:59
lifelesswallyworld_: seems to be all that is needed to me - + a test that tests the launchpadlib call works04:59
wallyworld_lifeless: i think it's more than just changing the assignee though. from memory, the same issue cam up when unsubscribing oneself05:00
wallyworld_and the change i did sorted out that issue too05:00
wallyworld_but that was last week. i may have misremembered05:00
wallyworld_i'll look into it05:01
lifelesswallyworld_: there is a separate method for unsubscribe05:01
lifelesslooks like an identical bug05:01
wallyworld_yeah, probs05:01
lifelessthe reason I think the lifecycle change, while elegant, is a problem, is because we have direct cache management - and the two will stomp on each other.05:01
lifelessthe first like of unsubscribe needs to either be more selective about what it clears, or to keep the known viewers list.05:02
lifelesshttps://code.launchpad.net/~lifeless/launchpad/bug-615647/+merge/54150 has a diff up05:02
wallyworld_lifeless: your unmerged revisisions change - is the order by BranchRevision.branch desc necessary?05:03
wallyworld_lifeless: i'm late to pick up the kid from school. back soon05:04
lifelessit selects the right index05:04
lifelesswallyworld_: the index is on (branch, sequence)05:04
lifelesswallyworld_: it /may/ work without it. It /does/ work with it - see the various test plans in the bug05:04
wgrantAnyone want to review https://code.launchpad.net/~wgrant/launchpad/trim-asp/+merge/54152?05:28
StevenKwgrant: r=me05:29
wgrantStevenK: Thanks.05:29
StevenKwgrant: Can haz help switching db user?05:29
wgrantStevenK: Use LaunchpadZopelessLayer.05:30
wgrantCall LaunchpadZopelessLayer.switchDbUser05:30
StevenKwgrant: Does that allow me to upload to the librarian?05:30
wgrantStevenK: Yes.05:30
wgrant"Launchpad" generally means that the librarian is up.05:30
lifeless bah, no stubs06:22
StevenKHe was here06:22
lifelessyes06:22
lifelesswas06:22
lifelesstimed out 2 minutes back06:22
lifelessStevenK: can you do a review for me ?https://code.launchpad.net/~lifeless/launchpad/bug-734751/+merge/5414606:30
StevenKlifeless: rme06:33
lifelessStevenK: thanks06:33
StevenKSprinkle = to taste06:33
pooliewgrant, re the mail mangling06:39
pooliei have to say tim's thing a while ago that spam causes the headers to be inserted into the body gives me a queasy feeling about lp mail handling06:40
wgrantpoolie: Yes.06:40
wgrantpoolie: This is a good excuse to examine those configs and unbreak it.06:41
wgrantI don't entirely know what the incoming mail path is :/06:43
StevenKwgrant: Ask a friendly* sysadmin?06:49
poolieis that a Kleen star? :-)06:53
poolielifeless, it's not top of my list (nor i dare say yours) but i was wondering after friday's mail what your actual thoughts on triaged vs confirmed were06:53
poolieare you also hoping to merge them?06:54
=== 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: O hai! I have one for you :-)07:53
henningeHi StevenK! Let me see it ;-)07:53
StevenKhenninge: https://code.launchpad.net/~stevenk/launchpad/dsdj-runner/+merge/5415907:54
lifelesspoolie: that 3 page bug update is about as far as my thinking has advanced08:29
lifelesspoolie: I think that 'triaged' as it stands is entirely redundant, but that piecemeal solutions probably aren't [solutions]08:31
adeuringgood morning08:46
=== almaisan-away is now known as al-maisan
StevenKhenninge: No news means "It's terrible, redo from start" ? :-)08:53
henningeStevenK: no, it looks good08:54
henningeStevenK: Still a lot to read ...08:54
rvbahenninge: Hi, once you're finished with StevenK's branch, I'd appreciate if you could take a look at https://code.launchpad.net/~rvb/launchpad/dds-sampledata/+merge/5398808:58
StevenKrvba: Julian approved that MP?09:01
rvbaStevenK: yes09:01
henningervba: why would you want another review if it has already been approved?09:07
rvbahenninge: well ... I thought the procedure was to have it reviewed by someone outside the circle of people who discussed the branch in question09:08
henningervba: good point09:09
rvbahenninge: but in this case, it's really tiny and does not involve code change (only sql in current-dev.sql) so it might not be worth you time09:09
rvbas/you/your/09:10
henningervba: yeah, there is really not much I can review here.09:10
rvbahenninge: all right then09:10
henningervba: how did you create the sample data?09:10
rvbahenninge: I confess I did that manually (fiddling with the database), then I ran make newsampledata09:11
rvbaprobably not the most clever way to do this I know09:11
henningervba: well yeah, usually it's better to do that through the normal procedures (i.e. UI and scripts)09:12
henningervba: actualy it's *best* to avoid creating new sample data at all.09:12
henningewell, actually it's more about using it in tests, I guess.09:12
rvbahenninge: yes but the scripts to create those objects are in the works now09:12
henningewhich is not the case here, of course.09:12
henningeI figured09:13
rvbayes, I only modified the sampledata for local instances09:13
henningeoh, right09:13
henningervba: r=me in that case ;-)09:13
rvbathe goal is to populate a form on which I'll have some js work to do pretty soon, before the scripts to populate this with real data exist09:14
rvbahenninge: thx09:14
henningeStevenK: Isn't there some existing infrastructure to test scripts so you don't have to do the subprocess dance?09:19
henningeStevenK: what about "from canonical.launchpad.scripts.tests import run_script"09:22
daniloshenninge, good morning, one very complex branch for you when you can find 10 minutes: https://code.launchpad.net/~danilo/launchpad/mail-header-discrepancy/+merge/54172 :)09:30
henningeHi danilos!09:31
henningeand "No" :-P09:31
henninge(which means "Yes", of course)09:31
StevenKhenninge: Hm, wasn't sure about that. I can certainly look at changing it.09:31
henningeStevenK: I'll give you an example in the review.09:31
henningesee if that works for you09:31
StevenKhenninge: Awesome.09:32
daniloshenninge, excellent, I prefer "no" meaning "yes" than the other way around :)09:32
henninge;)09:32
daniloshenninge, and I love you :)09:32
* henninge blushes09:33
henningeStevenK: review sent09:41
henningedanilos: sorry, too complex to do in one OCR shift, you will hear back from me tomorrow night.09:44
daniloshenninge, I understand, thank you for trying anyway!09:44
wgrantErm.10:47
wgrantWhy is ~registry not a member of ~vcs-imports any more?10:47
lifelessit was via launchpad-chr, which matsubara deleted for some reason a couple of weeks back10:48
wgrantAh. Can you readd?10:48
wgrantALthough I guess we then need a ~launchpad admin :(10:48
jelmerdoesn't ~canonical-bazaar own it now for some reason?10:49
wgrantlifeless is an admin.10:50
wgrantBut adding a team to another requires confirmation from both ends.10:50
lifelesssure, one sec10:50
lifelesshangon, ~registry or ~launchpad into vcs-imports ?10:51
lifelesswgrant: ^10:52
wgrant~registry is basically the semi-admin team now... it's basically ~launchpad + ~canonical-bazaar plus a few others. I would go with ~registry.10:52
wgrantBut it doesn't really matter.10:52
lifelesshuh, I own but am not in registry. shrug10:53
lifelessanyhow, added.10:53
wgrantYou are in registry.10:53
wgrantIt's a display bug.10:53
wgrantThanks.10:53
=== al-maisan is now known as almaisan-away
wgrantlifeless: https://lists.launchpad.net/registry/msg32632.html10:56
wgrantOdd.10:57
lifelessyes, that was sent out when he deleted launchpad-chr10:57
lifelessthe message is confusing because it doesn't describe the action taken10:57
wgrantThat makes very little sense.10:57
lifelessthat he deleted -chr, or that it took it out of the team ?10:58
wgrantThat is sent when a teammembership is deactivated. launchpad-chr deletion would not have done that.10:58
lifelessdeleting the team merges it to registry right? and deactivates all previous team memberships ...10:58
wgrantRight. But it deactivates before the merge.10:58
lifelessright10:58
wgrantHmm.10:59
wgrantAhh.10:59
henninge_jtv: Hi!11:01
deryckMorning, folks.11:01
henninge_Hi deryck!11:01
jtvHi henninge!11:01
jtvJust looking at the import queue, as it happens.11:01
henninge_uh-oh11:01
henninge_jtv: what's up with it?11:02
jtvNothing, that's the great thing.11:02
henninge_cool11:02
jtvI'm just emailing the uploader of an RT template about branch synchronization.11:02
henninge_jtv: I was going to ask you for a review but now that deryck is here I can ask him , too. ;-)11:03
jtvoh sweet :)11:03
jtvJust out of interest, what are you working on?11:03
deryckhenninge_: sure, I can do a review.11:03
henninge_jtv: still finishing of upstream sharing UI11:03
jtvAh11:03
jtvSaw that you'd been working on that—very nice to know that we're getting some visibility into sharing.11:04
=== henninge_ is now known as henninge
henningejtv, deryck: Here is the mp. I have to go out now for an hour so it might not be optimal for you, jtv, since you are towards EOD.11:05
henningejtv: but it's using POTemplateCollections! ;-)11:05
henningehttps://code.launchpad.net/~henninge/launchpad/devel-737422-remove-translationsharinginfo/+merge/5418411:05
jtvhenninge: yes, I'm EOD now and have to rush to a dinner appointment…  but cool stuff!11:06
henningejtv: enjoy it!11:06
henningederyck: thanks, that OCR is ignoring me ...11:06
deryckhenninge: heh.  np.11:06
jtvhenninge: dankeschön, und bis morgen :)11:09
jtvhi salgado!11:12
=== henninge is now known as henninge-out
salgadohi jtv!11:13
jtveverything good?11:13
salgadoyep! and you?11:14
jtvGreat, thanks!  Narrowly avoided arrest over the two empty cartridges I brought home from Dallas.  :)  Gotta run now!11:18
=== jtv is now known as jtv-afk
salgadothat sounds like lots of fun. ;)11:20
cjwatsonI'd like to have a pre-implementation chat with somebody about adding support for .orig.tar.xz files in package uploads11:44
cjwatsonhenninge-out: you're listed as OCR, but I guess not because you're out? :)11:45
=== almaisan-away is now known as al-maisan
wgrantcjwatson: I did the last round of changes there, so I might be a reasonable person to talk to.11:50
=== matsubara-afk is now known as matsubara
=== jam1 is now known as jam
=== 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/
gmbbenji: Morning. Can I get a review for https://code.launchpad.net/~gmb/launchpad/finish-it-bug-737648/+merge/54189 please?12:16
benjigmb: sure12:16
gmbTa12:17
benjigmb: done: https://code.launchpad.net/~gmb/launchpad/finish-it-bug-737648/+merge/5418912:23
gmbbenji: Thanks. WRT your point about tests, I can only say: Oh boy, you don't want to know.12:24
cjwatsonwgrant: OK; well, I just went through and grepped for bzip2, bz2, and orig.tar, and added xz to anything that currently handles bz212:24
benjiheh12:24
cjwatsonwgrant: the changes were confined to archiveuploader, except for a comment change in soyuz/enums.py; does that sound reasonable?12:24
cjwatsonwgrant:12:24
cjwatsonhttp://paste.ubuntu.com/583299/12:24
wgrantcjwatson: Do we need additional series restrictions on that? 3.0 is permitted in >= Karmic.12:25
wgrant+        # each component, and can use gzip, bzip2, or compression.12:26
wgrantmissing 'xz'12:26
wgrantIt almost seems worth generalising the compression type check, but not quite, so that looks reasonable.12:26
cjwatsonmissing> whoops12:28
cjwatsonseries> hmm.  orig.tar.xz requires dpkg >= 1.15.5, so we probably want >= lucid here.12:29
wgrant:(12:29
wgrantMeh.12:30
wgrantkarmic can burn.12:30
wgrantWorst case the buildds will explode and fail the build in bad ways.12:30
wgrantPlus Karmic dies in a month, right?12:30
sidneilifeless or gary_poster, around by any chance?12:33
gary_postersidnei, hi12:33
sidneihey gary_poster12:33
sidneigary_poster, would you know from memory why the page performance reports are generated from tracelog instead of using the oops system?12:34
gary_postersidnei, yes.12:34
gary_poster1) oops system only has exceptional circumstances12:34
gary_poster(we want all)12:34
gary_poster2) tracelog has inter-request numbers that no other output has (how long request has been waiting)12:35
gary_postermm, "no other output" == "no other output I know of" :-P12:36
gary_poster3) we were starting from existing similar work with the tracelog12:37
gary_posterthat's all I can think of sidnei12:37
sidneigary_poster, ok. we're considering running ppr for landscape, but therve suggests that we enable oops for all requests, which would address (1), and afaict, we're limiting the number of concurrent requests to the number of threads in haproxy, which would address (2)12:39
sidneii think we might still got with tracelog just because it requires less changes though12:40
gary_postersidnei, ack with #2, same for us; tracelog gives you visibility into Zope bits, which as you said, should be controlled by haproxy, but might not.  I think we are only looking at haproxy results too, tbh and afaik.12:41
gary_poster(for #2 values)12:41
gary_postersidnei, I vaguely would like to share code with you all, but don't strongly care otherwise.  Another thing to consider maybe is cost of generating oopses.  tracelog is designed to be very fast; oops reports do a lot more, so I would expect them to be a lot more expensive.  Just guessing though, dunno.12:43
=== henninge-out is now known as henninge
henningecjwatson: I am back12:46
sidneigary_poster, thanks!12:46
gary_posternp12:46
cjwatsonwgrant: where is the 3.0 >= karmic check implemented?12:47
wgrantcjwatson: A table, SourcePackageFormatSelection.12:47
cjwatsonhenninge: thanks - I think I can continue with wgrant12:47
cjwatsonwgrant: if you don't feel bad about spuriously allowing xz in karmic, I don't either12:48
wgrantcjwatson: So adding another is a fairly heavyweight thing.12:48
cjwatsonas you say, it will almost certainly simply fail to build12:48
wgrantcjwatson: Sounds good.12:48
henningecjwatson: oh, that's cool. I did not read the backscroll ;-)12:50
* deryck reboots, back shortly.....12:51
* maxb idly wonders if there is a reason why anyone can give away projects to arbitrary launchpad users, but can't give away branches similarly12:52
=== Ursinha-afk is now known as Ursinha
jelmermaxb: I don't think there is a reason..13:01
wgrantIt's possibly an impersonation risk.13:02
wgrant(so is project ownership transferral, but that's a bug, like team memberships)13:02
danilosmrevell, hi, can you perhaps come up with something that looks more like English for what I am trying to achieve here: https://pastebin.canonical.com/44947/ :)13:10
danilosmrevell, what's going on is that we've got a X-Launchpad-Subscription header, *and* "Matching subscriptions: subscription1, subscription2" text in the body of the email for those poor gmail users13:10
dobey"an X-Launchpad-Subscription header"13:14
wgrantCan we please have a "My email provider is stupid" checkbox to declutter text for those of us with sensible filtering mechanisms?13:14
wgrantIt could even default to true for gmail.com accounts.13:14
* henninge relocates13:17
allenapbenji: Do you have time to review a mostly-javascript branch? https://code.launchpad.net/~allenap/launchpad/dd-initseries-bug-727105-architecture-picker/+merge/5417313:21
benjiallenap: sure13:21
allenapbenji: Thanks :)13:21
=== adeuring1 is now known as adeuring
deryckhenninge: this is a nice refactor. Don't really have any questions about it. r=me13:45
henningederyck: thanks13:46
henningederyck: I have some failing tests, though ... :(13:46
deryckhenninge: oh, bummer13:46
mrevelldanilos, Will take a look now.13:47
danilosmrevell, thanks13:48
deryckhenninge, abentley -- I'm having serious connection issues this morning and working with cable company to debug.... may not make standup time.13:51
abentleyderyck: I've got SkypeOut, so we can do it on POTS if that helps.13:52
=== salgado is now known as salgado-lunch
deryckabentley: I'm on the phone with cable company now, sorry13:52
abentleyderyck: cool.13:53
deryckabentley, henninge -- sorry.  if you guys will just carry on without me.13:53
deryckhi adeuring.  see ^^13:53
adeuringderyck: ok, noted13:54
deryckI may loose connection here some as I debug this, too.13:54
abentleyderyck: Sure, if that's what you want.13:54
henningederyck: ok, good luck with the cable company. ;)13:55
deryckhenninge: thanks13:56
abentleyleonardr: is there a version of testing._webservice.api_url which is suitable for production use?14:22
leonardrabentley: i don't know. what exactly do you want to do?14:23
leonardri think in production you can convert the current browser request to a web service request and then use canonical_url14:23
abentleyI want to create a view which returns a json-serialized dict that I will use to initialize the javascript functionality of a page.14:24
abentleyderyck: This serialized dict would need to include the API urls of several objects.14:25
leonardrabentley: if i understand you correctly, we have a mechanism for that already. let me look it up14:26
abentleyleonardr: cool.14:26
deryckabentley: was that info for me, or just chatting with leonardr?14:29
abentleyderyck: for leonardr.  Sorry.14:29
derycknp14:29
leonardrabentley: the thing we have already is: you can put an object in the IJSONRequestCache and when the launchpad page is rendered, the json representation of that object will be available through lp.cache.objects (or something like that)14:30
leonardrlib/lp/bugs/browser/bugtask.py:        IJSONRequestCache(self.request).objects['bug'] = bug14:30
leonardroh, even better14:33
leonardryou can put the object in IJSONRequestCache(self.request).links['key']14:34
leonardrand only the link will show up14:34
leonardrsee lib/canonical/launchpad/rest/me.py14:34
abentleyleonardr: you are a beautiful man.14:36
leonardrabentley: i've always thought so14:36
benjiallenap: done (https://code.launchpad.net/~allenap/launchpad/dd-initseries-bug-727105-architecture-picker/+merge/54173)14:44
allenapbenji: Awesome, thank you :)14:44
jelmerjcsackett: it looks like the instructions for vcs imports are outdated - sourceforge doesn't work with non-https at the moment15:07
jcsackettjelmer: oh fantastic. :-P15:08
jcsackettthanks for letting me know. :-)15:08
jcsacketti'll update.15:08
jelmerjcsackett: I guess technically that still means plain http is faster than https ;-)15:08
* jcsackett laughs.15:08
jcsackettand the offending line is removed.15:11
leonardrbenji, i have a zope question15:21
benjileonardr: hit me15:21
leonardrtake a look at lazr.restful metazcml.py15:21
leonardrthere's a 'register_webservice' option15:21
leonardrer, action15:22
leonardrthe kind of thing you put in a zcml file15:22
leonardri added a 'webservice sanity checks' action to the end of it15:22
leonardrwhich is supposed to run after the web service is fully registered15:22
leonardrthe problem is that in launchpad, register_webservice is called no less than 12 times15:22
leonardrthe sanity checks will only succeed if they are called _last_15:23
leonardri could add a separate sanity_checks option to go into the zcml file, but how can i guarantee that it's run after everything else?15:23
benjihmm, that's a good question; let me look at it for a second15:23
leonardrbenji: the other problem is that during register_webservice i build up lists of the things that need to be sanity-checked. is there any safe place to store that information for another zcml action to pick it up?15:26
benjileonardr: on that front a module global would appear to be your best bet; that approach would cause problems if ZCML processing was ever parallelized, but I bet lots of other implementation details would fall over too so doubt that will ever happen15:28
allenapjml: Do you have time to review a very small testing-related branch?15:35
jmlallenap: how could I say no?15:35
allenapjml: I hoped you'd say that :) https://code.launchpad.net/~allenap/launchpad/id-for-yui-test-cases/+merge/5422915:35
allenapjml: I'm asking you because you'll be able to tell me if it's sane or not.15:36
jmlallenap: Looks basically sane to me. Two things come to mind.15:36
jmlallenap: first is that you should add a test for this.15:36
jmlallenap: second is that the ideal id() allows you to load the test based on the id. I don't know enough about how JS tests are run to know if that's the case here. It seems likely though.15:37
allenapjml: Fair. This whole class is untested so I was hoping to sneak this one through too.15:37
jmlallenap: self.assertEqual(test.test_path, test.id())15:38
jmlallenap: there you go, I've written the test for you :P15:38
allenapjml: Cheers :)15:38
jmlalso, in random spam news, I may be entitled to receive £3750 for the accident I had. (I didn't have an accident)15:39
jmlallenap: looks like a very useful change to make15:40
allenapjml: Cool. Thanks for looking at it.15:40
benjileonardr: is it ok to require that all the register_webservice elements be in the same file?15:41
=== al-maisan is now known as almaisan-away
leonardrbenji: no, they've been split out so that every component (bugs, etc.) registers its own stuff15:45
benjileonardr: the only other thing I can think of would be to respond to the process start event (i.e., do it outside of ZCML handling)15:46
=== salgado-lunch is now known as salgado
leonardrbenji: can you point to some code i could copy? is the process start event a zope thing?15:52
benjileonardr: yeah, the standard Zope thing to do is to fire some events on process start so you can do startup tasks; let me find an example15:58
abentleyleonardr: When I add something to IJSONRequestCache(self.request).objects, is that meant to appear in the HTML?  I don't see it, only LP.cache['context'].15:59
deryckabentley: hey.  Working on your review.  Is lib/lp/translations/templates/translation_sharing_config.pt the template you used until the sharing info page landed?  Is it used in this branch now?16:00
benjileonardr: lib/canonical/launchpad/configure.zcml line 92 has <subscriber handler=".webapp.initialization.handle_process_start" />16:00
benji...which is implemented in lib/canonical/launchpad/webapp/initialization.py16:00
abentleyderyck: yes.  Did I forget to remove it?16:01
deryckabentley: yeah, it's still showing up in the diff on the MP at least.16:01
=== Ursinha is now known as Ursinha-lunch
abentleyderyck: okay, removed now.16:03
deryckabentley: cool16:03
leonardrbenji: ok, i'll mess around with it16:04
deryckabentley: looking at the windmill test -- can self.client.click(xpath='//*[@id="branch-incomplete-picker"]/a') be written as self.client.click(id=u"branch-incomplete-picker") and work?16:05
abentleyderyck: I don't know, but don't you want to click a hyperlink rather than its surrounding div?16:06
abentleyOr span, I guess.16:06
deryckabentley: I think Windmill is actually smart about this.  *I think* :-)  in other words, if it works, it's Windmill helping you and keeps you from relying on xpath.16:07
deryckor maybe it depends on the css, i.e. if the link is block and fills the div.16:08
deryckabentley: at any rate, it's a suggestion, not a requirement.  if it works, I'd use it and save the xpath.  but then you know my xpath is evil feelings. ;) :)16:08
deryckabentley: and finally for this test, the waits.forElementProperty needs to supply a timeout argument.16:09
abentleyderyck: I prefer to be more precise.  If I could assign an id to the link, I'd do that.16:09
deryckabentley: ok16:09
abentleyderyck: Sure.  But can we please default to suitable timeouts in the future?16:11
deryckabentley: what do you mean?  The constants aren't suitable for you?16:12
abentleyderyck: No, then constants aren't the defaults.16:12
deryckabentley: I'm not following.  There are no defaults.  Windmill requires you specify this with each waits statement, no?16:13
henningederyck: About the branch you reviewed earlier today.16:13
deryckhenninge: hi. yes?16:14
henningederyck: the tests failures I now see have their root in the fact that TranslationTemplatesCollection does not have an interface and therefore no security configuration.16:14
henningeI get lots of "Forbidden Attribute"16:14
abentleyderyck: It appears that we never want the default behaviour and we're always specifying timeouts.  If so, we should fix the default behaviour to be the behaviour we usually want.16:15
deryckhenninge: ah, oops16:15
henningederyck: I could add the interface and such but the next branch will remove the need for that anyway.16:15
henningederyck: so I'd like to leave this branch as it is now (it's gotten quite big anyway) and simply not land it.16:16
henningeThe next branch will build on it and fix the issues.16:16
deryckhenninge: that's sounds fine16:17
henningecool, thanks16:17
deryckabentley: what is the "default behavior" that we don't want?  I'm sorry to be so dense here.16:19
abentleyderyck: the default behaviour, according to you, is that there is no timeout.16:20
deryckabentley: right.  and that's the way windmill is designed.  There is no default value for the various wait methods.  Are you suggesting we change the windmill waits methods to include some default value?16:22
abentleyderyck: yes.16:23
abentleyderyck: or provide wrappers that are more suitable for us.16:23
deryckabentley: I could see providing wrappers, if that's helpful16:24
abentleyI think it would be.  The best way to get people to do stuff the right way is to make the right way the easy way.16:25
dpmhey launchpadders, I'm trying to wrap up the timetable for https://wiki.ubuntu.com/UbuntuAppDeveloperWeek, and I've noticed that there are no Launchpad sessions yet. I think it would be great to have one or two to give LP more community exposure, and perhaps it would be interesting to talk about things like the integration features LP provides when developing an app, and he LP api. Has anyone got any other suggestions? Who'd be up for running a session?16:27
deryckabentley: I need to eat lunch, but will return to this after that.16:32
abentleyderyck: cool.16:32
=== deryck is now known as deryck[lunch]
leonardrbenji: which package defines the 'subscriber' directive?16:45
leonardrit's hard for me to find anything in the maze of includes16:45
benjileonardr: zope.component, src/zope/component/zcml.py has ISubscriberDirective16:48
benjiand zope.component, src/zope/component/meta.zcml registers the directive16:49
leonardrthanks16:53
leonardrso i should do <include package="zope.component.meta" /> ?16:54
leonardri think <include package="zope.component" file="meta.zcml" /> is right, but i still get unknown directive...16:55
leonardri should have lunch and come back to this16:55
benjileonardr: yeah the second one looks right to me; it in itself may need some other directives though (probably also from zope.component)16:56
=== matsubara is now known as matsubara-lunch
=== Ursinha-lunch is now known as Ursinha
dpmjml, wold you be up for a talk during Ubuntu AppDeveloperWeek on using the Launchpad integration features when developing an application? ^^17:13
jmldpm: maybe. I'm going to try to find someone else, but will do it if I can't.17:15
leonardrjml: maybe benji could do it17:17
dpmjml, awesome, thanks. You can just add yourself or the person doing it on https://wiki.ubuntu.com/UbuntuAppDeveloperWeek/Timetable or simply ping me and I can do it for you17:17
jmldpm: yes.17:27
jmlleonardr: not a bad idea.17:27
jmlgotta run. will have questions later.17:27
jmlbye17:27
=== deryck[lunch] is now known as deryck
=== beuno is now known as beuno-lunch
c10ud\hello, any chance to get this fixed somehow? i'm trying to get launchpad clone my git repo, but it fails because of a submodule (which i dont need in lp, btw). here's the error: http://launchpadlibrarian.net/66911794/emesene-team-emesene-master.log17:56
deryckabentley: review is done. r=me, with minor note about variables in the js test.17:56
abentleyderyck: cool.17:57
c10ud\see #400805 and #402814 they have the same issue as me.17:58
_mup_Bug #400805: Unhelpful error when importing a project with submodules <code-import> <lp-code> <Launchpad itself:Triaged> < https://launchpad.net/bugs/400805 >17:58
_mup_Bug #402814: Importing revisions with submodules is not supported <lp-code> <udd> <Bazaar:Confirmed> <Bazaar Git Plugin:Fix Released> <Launchpad itself:Triaged> < https://launchpad.net/bugs/402814 >17:58
abentleyderyck: Yeah, I did not deliberately create any globals, so I'll take another pass and try to catch them all.17:58
deryckabentley: awesome, thanks.  I spotted lci and ci, I think.17:58
c10ud\err.. *2009*, can you just print a warning or whatsoever and make the import succeed? i need it for launchpad recipes...17:59
=== matsubara-lunch is now known as matsubara
abentleyderyck: yeah, and I also found "complete", "incomplete", and "link".18:03
deryckwell spotted18:04
abentleyderyck: any other thoughts on the code so far?18:04
deryckabentley: looks good to me.  I think most of it we went over already.  It's shaping up nicely..18:05
deryckabentley: I think it's hard to know perfectly how the rest will fit in with the other links/settings until you do it, but it looks like it should be an easy follow on for the test.18:05
derycks/test/rest/18:06
* deryck has testing stuck in the brain18:06
abentleyderyck: yes, I think so.18:06
abentleyderyck: I feel like at this point, I know everything I need to get stuff working, but I don't know what the usual idioms are.18:08
deryckabentley: I think you have everything you need now, too. This reads like it was written by someone who writes js regularly.18:08
abentleyderyck: thanks.18:09
derycknp!18:09
abentleyderyck: Do you know about the IJSONRequestCache stuff?  There's an example in bugtask.py18:10
deryckabentley: no, I don't know anything about that.18:11
deryckabentley: maybe new work from what thumper and leonardr did recently.18:12
abentleyderyck: okay.  I haven't got it working yet, but it sounds promising.18:12
leonardrderyck: it's actually very old18:12
deryckah, ok18:13
abentleyderyck: it's a python-side way of getting values into the page cache, AIUI.18:13
deryckright18:13
abentleyderyck: and presumably it would also be able to get that as a pure json response, though that may not yet be implemented.18:15
lifelesssidnei: yeah, all that gary said18:21
lifelesssidnei: I agree on oops cost: the more diagnostics, the more overheads18:21
sidneilifeless, thanks for confirming18:22
abentleyleonardr: is anything I stick in IJSONRequestCache.object supposed to appear automatically, or is there something I have to do to make it show?18:22
lifelessmorning all18:22
leonardrabentley: putting it in there should be enough18:23
leonardrbenji: ok, i think there's just one bit of this i don't understand18:38
leonardrhere's launchpad:18:38
leonardr@adapter(IDatabaseOpened)18:38
leonardrdef handle_process_start(ev):18:38
leonardrwhere does that IDatabaseOpened come from? what should i have as the equivalent?18:38
=== beuno-lunch is now known as beuno
benjileonardr: that's the interface you're subscribing to; that one may work for you or there may be one that feels more like "the process is starting" than IDatabaseOpened, let me look18:40
benjileonardr: IProcessStarting looks to be the one you want18:42
leonardrbenji: hm, looks like i need to add zope.processlifetime as a dependency18:43
benjiyep, that's where those guys live; it's essentially a one file package18:44
abentleyleonardr: it's not working.  failing test: test_cache_foo http://pastebin.ubuntu.com/583453/18:47
abentleyleonardr: hmm, perhaps it only works with logged-in users?18:53
leonardrabentley: it should work if you have permission to see the object19:01
abentleyleonardr: the code is wrapped with condition="view/user|nothing"19:01
leonardrabentley: possibly because the only link up to this point has been the 'me' link19:03
leonardrabentley: i think we should un-guard that zcml and make it not print a link if the object is none19:05
leonardrwhich file is that condition= in?19:07
abentleyleonardr: Only for the links array?  Okay, but why special-case None?19:07
abentleyleonardr: lib/lp/app/templates/base-layout-macros.pt19:07
lifelessleonardr: hi, when you're finished with abentley, I'd like to learn a bit about the representation cache (where does it live, is it shared between appservers, that sort of thing)19:08
leonardrlifeless: the representation cache is disabled because it turned out not to save us much time19:09
lifelessleonardr: ah, ok19:09
leonardrwhen it's turned on, i believe it lives in memcached19:09
lifelessleonardr: great, thanks! thats all I needed :)19:09
leonardrabentley: ok, i think the condition there is not to stop a crash when there is no me link, but to save time rendering the page for anonymous users19:12
leonardrlet's suppose we want to change that, and always display the links19:12
leonardrin that case we would take out the conditional from the tal:cache tag, and  add one to the <script> tag19:12
leonardrthe new conditional would omit the <script> tag if $key was None19:13
leonardrdoes that make sense?19:13
leonardror, if $key is None, we can print 'null' instead of fmt:api_url19:14
abentleyleonardr: Yes, that makes sense.19:14
leonardrbenji: the IProcessStarting event never seems to happen, either in my tests or when i start up launchpad for real19:30
benjileonardr: hmm, I wonder if that's why LP was using IDatabaseOpened (or whatever it was)19:31
leonardri'll try the other event19:31
leonardrbenji: the other event isn't firing either! here's my zcml19:33
benjileonardr: I grepped for IProcessStarting and found it in several places in LP19:33
leonardroh, wait19:33
leonardrmy zcml is obviously dumb19:33
benji:)19:34
leonardrbenji: same result with non-dumb zcml:19:37
leonardr    <subscriber19:37
leonardr    handler="lazr.restful.metazcml.webservice_sanity_checks"19:37
leonardr    for="zope.processlifetime.IProcessStarting"/>19:37
benjileonardr: try using the event interface: IProcessStartingEvent19:38
leonardrah19:39
* benji tries to remember why both exist.19:40
bachi sinzui, i've got a question about DistributionSourcePackage19:41
bacsinzui: it is marked as being an IStructuralSubscriptionTarget ... but i cannot find where that is supported in the UI.  you know anything about it?19:41
leonardrbenji: no difference19:42
benjileonardr: I don't think that'll make a difference, IProcessStartingEvent is just a backward-compatible name for...19:42
benjiright19:42
benjileonardr: how are you starting the process? the events sure do seem to work, that or we spend a lot of time wiring up subscribers for them that don't do anything: lib/canonical/launchpad/webapp/configure.zcml19:43
leonardrbenji: i am running 'make run'19:44
benjithat's simple enough19:44
benjileonardr: I just put a pdb in one of LP's IProcessStarting handlers and did make run and got a pdb prompt19:46
=== matsubara is now known as matsubara-afk
leonardrargh19:50
leonardri can't think about this anymore, i need to come back to it later19:50
leonardrbenji: is this something i could punt over to you? do you have time?19:50
benjileonardr: sure, I have time to take a couple of swings at it19:51
leonardrbenji: ok...19:51
leonardrbenji: lp:~leonardr/lazr.restful/integrate-strict-versioning19:55
benjilooking19:55
leonardryou're trying to make metazcml.py#webservice_sanity_checks() run19:55
lifelessflacoste: what time is our call?20:03
flacostelifeless: now according to my calendar, but according to URC it's in 1h, i can do either20:03
lifelessnow is fine :)20:04
flacostes/URC/UTC/20:04
flacostelet's talk now then20:04
leonardrwallyworld_, are you around for a quick standup? i have to leave pretty soon for an appointment20:04
lifelesshttps://code.launchpad.net/~lifeless/storm/with/+merge/5263020:10
benjileonardr: is there a test that I can run or do I need to get an LP instance to use this version of lazr.restful?20:21
leonardrbenji: i don't know whether it should be running during any of the existing tests, but it's not20:22
leonardri'm sure it should be running during lp startup, and it's not20:22
leonardrso i recommend working in an lp context20:22
benjiok20:22
leonardri have to go to an appointment, but i'll stay online in case you find anything20:22
=== leonardr is now known as leonardr-afk
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
benjileonardr-afk: the problem was that LP doesn't use lazr/restful/basic-site.zcml; I put the handler registration in lazr/restful/configure.zcml (which LP does use) and bin/run drops me into pdb20:41
wallyworld_gary_poster: are you still online? I have a zope question20:43
gary_posterwallyworld, fire away.  benji is great for this stuff too, fwiw.20:43
wallyworld_gary_poster: thanks. i am writing a test and want to hook up an object modified event listener for object modification. afaict, these are not invoked when tests are run. i have some code, but it doesn't work. i'll pastebin the code20:45
gary_posterwallyworld_, it depends on what is set up.  zope.event.notify is always called20:46
gary_posterthat is a wildly simple function20:46
wallyworld_https://pastebin.canonical.com/44984/20:46
gary_posterusually we have zope.component register a handler in zope.event20:46
gary_posterwhich does the whole dispatch-by-classes-or-interfaces thing20:47
gary_posterlooking...20:47
wallyworld_gary_poster: from what i can see, the this listener is not invoked in tests:20:47
wallyworld_    <subscriber20:47
wallyworld_        for="lp.bugs.interfaces.bugtask.IBugTask                 lazr.lifecycle.interfaces.IObjectModifiedEvent"20:47
wallyworld_        handler="lp.bugs.subscribers.bugtask.notify_bugtask_edited"/>20:47
=== lifeless changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | firefighting: - | On call reviewer: henninge, benji | https://code.launchpad.net/launchpad-project/+activereviews/
gary_posterwallyworld_, is this being run in a layer, or with some other kind of setup that sets zope.component up?  I suspect the first part (layer) is the most likely approach.  If you are not running in any layer and you don't have any special setup, that's probably the story20:48
wallyworld_gary_poster:  i'm using layer=DatabaseFunctionalLayer20:49
wallyworld_gary_poster: from what i can see from other usages of TestEventListener, this is sufficient20:49
gary_posterI don't remember what layer does what, but I'd expect that to work.20:50
* gary_poster looking at code again20:50
gary_posteryours, that is20:50
wallyworld_TestEventListener comes from canonical.lazr.testing20:50
wallyworld_gary_poster: i'd also be happy if i could make the actual event listener fire during the test ie notify_bugtask_edited20:51
gary_posterI figured :-)20:52
jmlwallyworld_: are you importing zope.component.event?20:52
* wallyworld_ looks20:52
gary_postersadly, my brain juice has dropped to precipitously low levels...20:52
jmlwallyworld_: you have to import it to make zope event->adapter stuff work20:52
jmlit's bit me and others before.20:53
wallyworld_jml: not importing that.20:53
gary_posterthat's the hook I was talking about, yeah.20:53
gary_posterI'd expect DatabaseFunctionalLayer to import that20:53
wallyworld_jml: will try that. if that's the solution, thanks * 100020:53
gary_posterif it does not, you should perhaps choose another layer20:53
jmlgary_poster: yeah. or FunctionalLayer.20:53
jmlgary_poster: the problem is that it can also bite production scripts20:53
wallyworld_gary_poster: i've tried a few layers20:54
jml(as it did memorably for the branch scanner at one point)20:54
gary_posterbecause by doing that you are changing the environment for all subsequent tests20:54
wallyworld_jml: DatabaseFunctionalLayer extends Functional layer so it should make no difference?20:54
gary_posterand thus hiding problems for other people, possibly20:54
gary_posterI'd try AppLayer as a smoke test20:54
jmlwallyworld_: not practically, it's just more appropriate. FunctionalLayer sets up all the Zope stuff.20:54
gary_posterWell20:55
jmlwallyworld_: but at this point, the importing doesn't take place in any layer20:55
gary_posterI guess I'd try what jml suggested as a smoke test20:55
jml# This non-standard import is necessary to hook up the event system.20:55
jmlimport zope.component.event20:55
gary_posterno layer: yuck :-/20:55
wallyworld_gary_poster: i'm doing this in a separate, new test class20:55
jmlwallyworld_: do the import. see if it works.20:55
wallyworld_i've tried AppServerLayer20:55
jmlwallyworld_: layers are a red herring for now.20:55
wallyworld_will do. trying now20:55
gary_posterwallyworld_, the change is in global state20:55
gary_posterjml, well, not a red herring for the proper fix IMO20:56
jml(incidentally, I always hear that as "hewwing" when typed)20:56
gary_posterheh20:56
jmlgary_poster: yeah. I guess ideally FLayer would set up the hook manually and then remove the hook when done.20:56
gary_postereither that or have our code always set up the hook ourselves20:56
jmlhmm.20:57
jmlthat's not a bad idea either.20:57
gary_posterbut putting it in a test setup is a bad idea20:57
gary_posterwell20:57
jmlalthough, it's got to be undoable20:57
gary_posternot the best idea :-)20:57
jml(as in, reversible)20:57
gary_posterwhy do we need to reverse it?  no challenge, just no idea20:57
* wallyworld_ waits for disk to stop thrashing so test can run20:57
* gary_poster is also feeling very sleepy :-/20:57
jmle.g. our logging code does some useful set up, but then it makes subsequent tests print stuff to stderr uncontrollably20:57
jmlbecause it mutates global state20:58
gary_posterah-ish20:58
gary_posterwell, if the global state is our expected underlying state then that's OK it seems to me20:58
gary_postermutating the global state after it has been set up is the bug bear20:58
jmlwe have a non-trivial amount of code that doesn't use the site.zcml or exec_zcml_for_scripts20:59
jmlobviously it's the minority, but still20:59
gary_posterif importing the module is idempotent it still seems not so bad20:59
gary_posterbut eh20:59
jmlindeed :)20:59
jmlI just got from training. time for a shower before my call w/ huwshimi21:00
gary_posterI'm not usually one to run away at the sound of the factory bell, but I'm feeling pretty zoned.21:01
gary_posterbye21:01
gary_posterwallyworld_ are you set for now?21:02
wallyworld_gary_poster: just finished rerunning test. no good but i'll keep looking. thanks for helping21:03
lifelessflacoste: https://devpad.canonical.com/~lpqateam/ppr/lpnet/2011-03/daily_2011-03-14_2011-03-15/21:03
gary_posterbenji, you happen to have brain juice left to help wallyworld_?21:03
lifelessflacoste: https://devpad.canonical.com/~lpqateam/ppr/lpnet/2011-03/daily_2011-03-16_2011-03-17/21:03
flacostelifeless: https://wiki.canonical.com/InformationInfrastructure/Review-LL-2011031721:06
benjiwallyworld_: what's up? (not much brain juice left here either, got a bit of a headache)21:10
wallyworld_benji: i am trying to hook up an event listener in a test to be invoked when an object is modified, but i can't get it to be called21:11
wallyworld_benji:21:12
wallyworld_  https://pastebin.canonical.com/44984/21:12
benjihave you double-checked that the ObjectModified event is being fired?  is there another handler you can put a pdb in to check?21:13
wallyworld_i an using TestEventListener. jml suggested that i needed to import zope.component.event but that didn't help in my case21:13
wallyworld_benji: i'm not sure how to check that it is being fired. if i could get the actual notify_bugtask_edited listener to fire during the test, i would need to hook up a fake one21:14
wallyworld_wouldn't21:15
wallyworld_benji: it's eod for you so if your batteries are dead, that's ok, i'll try a few other things21:15
benjiwallyworld_: ok, a few parting shots: I don't know why the event wouldn't be fired in a test; you can put a PDB in zope.event.notify to see when events get fired (and you can enjoy the beauty that is the implementation of zope.event)21:17
wallyworld_benji: will do. thanks.21:18
jmlhuwshimi: hello21:31
huwshimijml: Morning21:31
jmlhuwshimi: skype?21:31
huwshimijml: Indeed21:31
=== salgado is now known as salgado-afk
lifelessjml: Want to catch up sometime this week?21:40
jmllifeless: yes, but it might be tricky to find the time. Will get in touch when I'm off the phone.21:41
lifelessjml: kk21:41
lifelesswgrant: oem no longer use buildd-secret21:49
wgrantlifeless: That was less slow than I expected.21:49
wgrantExcellent.21:49
lifelessflacoste: you has mail22:08
wgrantlifeless: Are you going to QA your branches thing?22:12
lifelesswgrant: I did22:13
lifelesshttp://bazaar.launchpad.net/~launchpad-pqm/launchpad/devel/files/head:/lib/lp/blueprints/model/specification.py is breaking for me22:13
lifelessoh, the next one22:13
lifelesssure, doing now - was on phone etc earlier didn't see the notification22:14
lifelessfrell, that was snappy22:14
jmllifeless: my morning would be easier for me. evenings are kind of packed atm.22:23
lifelessjml: I am generally up late tuesday22:24
lifelessjml: would you like to talk tomorrow morning?22:24
jmllifeless: sure.22:24
lifelesslets do that22:24
jmllifeless: 0900UTC ok?22:25
jmllifeless: alternatively, I could do after the TL call, but I'll be on a bus.22:25
lifelessits currently UTC 2230 ?22:27
lifelessso in 10h30m ?22:27
jmllifeless: yes.22:27
lifelessthat makes it 10pm here - sure, can do.22:27
jmllifeless: ok.22:27
jmllifeless: also, in case it helps, the UK moves to summer time this Sunday.22:28
lifeless\o/ confusion22:28
jmlyeah.22:28
lifelessI blame NZ for this whole disaster22:28
lifelessok, time for another timeout fix22:31
wgrantlifeless: We have to look for "ever published" :(22:33
wgrantlifeless: Because it's reasonable to file bugs on removed pacakgse.22:33
lifelessis it?22:34
wgrantFor SRUs.22:36
lifelessseries specific22:36
wgrantUntil we can file directly on series, we can't forbid filing on the distribution.22:36
lifelessso there is a conflict in requirements22:36
wgrantA conflict in present requirements, or a conflict in requirements 5 years ago and now?22:37
lifelessshrug, will think about it more when we finish with our critical bugs22:37
lifelesswgrant: probably resolvable, definitely has a temporal component22:37
lifeless5 seconds - https://bugs.launchpad.net/ubuntu/+bugtarget-portlet-bugfilters-stats22:38
lifeless\o/22:38
wgrantExcellent.22:38
lifeless5 seconds to render https://code.launchpad.net/~bryce/launchpad/lp-617698-forwarding/+merge/41003/+index22:40
lifelesssinzui: is the person merge job configure to run ?22:43
lifelessis anyone on the db-devel conflict?22:47
wgrantlifeless: It's not already fixed?22:49
sinzuiI am22:49
lifelesssinzui: cool, thanks22:49
sinzuiIt was a little awkward but make schema says I am done22:49
lifelessjcsackett: btw - bug 727023 needs some more examination22:49
_mup_Bug #727023: Cve:+index timeouts <qa-ok> <timeout> <Launchpad itself:Triaged by jcsackett> < https://launchpad.net/bugs/727023 >22:49
wgrantHuh, why is it not still spamming us, then?22:49
sinzuilifeless: the merge-person-job is not configured to run. Nothing uses it yet22:51
lifelesshttps://code.launchpad.net/~openerp-commiter/openobject-addons/trunk-extra-addons/+merge/6722/+index makes me sad - 312 queries22:52
lifelesssinzui: we just deployed your commit to make things use it22:52
lifelesssinzui: or is it still guarded in some fashion?22:52
sinzuiThe ui does not use it. I just started that branch. My lat branch lets us query the state and fixed the db permission exposed when I constructed a sane test22:53
lifelesssinzui: I'm talking about bug 72847122:54
_mup_Bug #728471: Person:+delete timeouts : Add sanity checks to mergeAsync <merge-deactivate> <qa-ok> <timeout> <Launchpad itself:Fix Released by sinzui> < https://launchpad.net/bugs/728471 >22:54
lifelesssinzui: if that helps explain my confusion22:54
lifelessits so nice seeing bug pages render in < 2 seconds.22:55
lifelessneed to get that to < 1 second though22:55
sinzuilifeless: sorry. look like I reversed the description of the bug I split22:56
lifelesssinzui: heh, that would explain it22:57
sinzuilifeless: I fixed the description to https://bugs.launchpad.net/launchpad/+bug/728471 That is what I tested for release22:59
_mup_Bug #728471: Person:+delete timeouts : Add sanity checks to mergeAsync <merge-deactivate> <qa-ok> <timeout> <Launchpad itself:In Progress by sinzui> < https://launchpad.net/bugs/728471 >22:59
lifelesssinzui: thanks22:59

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