/srv/irclogs.ubuntu.com/2011/05/26/#launchpad-dev.txt

sinzuiwgrant: mumble00:03
pooliethumper: hi00:54
thumperhi poolie00:54
pooliethumper: did you find out about kanbans?00:56
thumperpoolie: yeah... although it seemed to have missed out one of the bugs and I don't know why00:56
poolie(just reading my scrollback from my holiday)00:57
poolieneither do i :)00:57
pooliewhich bug? and what mode of kanban were you using?00:57
LPCIBotProject windmill-devel build #140: STILL FAILING in 1 hr 18 min: https://lpci.wedontsleep.org/job/windmill-devel/140/01:04
lifelesscjohnston: I suspect your link - I see none01:27
poolieo/ lifeless02:10
StevenKwgrant: I've pushed all of packageupload out of notify()02:36
StevenKNow to fix the tests02:37
wgrantStevenK: Great!02:38
lifelesshi poolie02:38
StevenKwgrant: I had a thought about binary notification too -- We can call notify_spr_less() if all of spr, bprs and customfiles are None. Or we can just fix model/queue to call notify_spr_less() directly02:42
wgrantStevenK: Possibly.02:45
wgrantStevenK: What in the main function still needs the SPR?02:45
StevenKwgrant: def notify()?02:46
wgrantRight.02:46
wgrantIt's difficult because the SPR has lots of the data we need.02:46
wgranteg. Changed-By and Maintainer.02:46
StevenKwgrant: _buildUploadedFilesLists, _buildSummary, and _sendNotification02:46
wgrantWhich BPR only has normally because we get it from the changes file...02:47
wgrantbut we can possibly get that from the linked SPR.02:47
jtvAny reviewers in town?03:40
pooliehi wgrant, stevenk, jtv03:42
pooliebac, hi?03:42
jtvhi poolie03:42
StevenKpoolie: Hai03:43
jtvand hi StevenK, while we're at it :)03:43
StevenKNCommander: If you show me a diff or a WIP MP, happy to look it over.03:56
StevenKwgrant: Right, I have nascentupload-announcements.txt passing -- except for the notify_spr_less() call03:59
StevenKwgrant: Since notify_spr_less() wants the file-object, so it can get the filename03:59
jtvI haven't touched JS in a while and need to get back into it.  Can anyone help with some Ajax interaction issues?04:04
jtvTwo questions right off:04:04
jtv1. When the client waits for stuff to happen on the server, have we got anything better than dumb regular polling yet?04:05
jtv2. What's the current pattern for re-rendering a piece of TAL once stuff happens?04:06
jtvthumper: I know you're not here, but any spontaneous pearls of wisdom would be most welcome.  :)04:10
jtvlifeless maybe?04:14
thumperjtv: for what?04:14
jtvthumper: see above04:14
jtv"I haven't touched JS in a while" etc.04:14
thumperjtv: I don't think so04:14
jtvbooo!04:14
thumperjtv: I believe there is a plan for long-poll04:14
thumperbut nothing is implemented yet AFAIK04:14
jtvAh yes, plans.  Don't we love those.  :)04:14
thumper:)04:15
wgrantjtv: All we have is dumb regular polling :(04:26
wgrantYou can ask for an HTML representation from lazr.restful.04:26
wgrantBut in general I think it's better to alter the DOM yourself.04:26
wgrantWhat exactly are you wanting to do>04:26
jtvRe-render DSD entries on +localpackagediffs04:26
jtv…because syncing completes, for instance.04:26
jtvI think there could be so much to that (especially as changes progress) that it makes more sense to re-render the TAL than to try and mimick the same logic in JS.04:27
jtvI suppose I could move more into the view so that more of that logic is still done server-side and transferred as data, but then I fear I may end up with, in essence, a custom representation of the HTML.04:28
jtvwallyworld_: wasn't "4+1" a Vietcong methodology?  Approach quickly, strike quickly, disengage quickly, retreat quickly; prepare slowly.04:40
wallyworld_jtv: maybe it was. perhaps the software world copied :-)04:42
jtvBut… but… copying is a _bad_ thing isn't it?04:43
jtvAt least in Chinese-influenced cultures, everything catchy needs at least one number in it.  And there aren't that many catchy numbers.04:44
jtv"One [x], one [y]."  A thousand points of light.  The Four Precepts.  And so on.04:45
=== almaisan-away is now known as al-maisan
wgrantwallyworld_: How goes QA for bug #302097?05:07
_mup_Bug #302097: Trying to access rss feeds of a private bug OOPSes <easy> <feeds> <lp-bugs> <oem-services> <oops> <qa-needstesting> <Launchpad itself:Fix Committed by wallyworld> < https://launchpad.net/bugs/302097 >05:07
StevenKwgrant: Seems I can't just call notify_spr_less() in do_reject() :-(05:08
wgrantStevenK: Oh?05:08
StevenKwgrant: So for nascentupload-announcements.txt at least, there are 2 rejections -- one with full content, and one with an incorrect .changes filename05:09
wallyworld_wgrant: waiting for staging to be updated05:09
wgrantStevenK: Could you QA bug #787904?05:15
_mup_Bug #787904: Copying a package into a derived series fails <derivation> <qa-needstesting> <Launchpad itself:Fix Committed by stevenk> < https://launchpad.net/bugs/787904 >05:15
StevenKOh, it is05:16
StevenKI already know the fix is fine05:16
wgrantAh, great. Please mark it as such.05:16
StevenKwgrant: Done05:16
wgrantThanks.05:16
StevenKwgrant: Sorry, I tossed it at ec2 and meant to do so when the qa tagger nagged me05:17
wgrantwallyworld_: I think I just QA'd it on qastaging.05:21
wgrantwallyworld_: Needs feeds.qastaging added to /etc/hosts, and has to be accessed over HTTPS, but it works.05:22
StevenKAre you not sure? :-)05:22
wallyworld_wgrant: i was told rss feeds don't work on qastaging and that staging is the system to use05:22
StevenKwgrant: Would an RT to get feeds.qastaging added to DNS be a good step?05:22
wgrantwallyworld_: It's not in DNS and needs an Apache reconfig to be complete, but feeds.qastaging.launchpad.net is accessible if you poke it hard enough.05:23
wgrantStevenK: Probably.05:23
wallyworld_ok :-)05:23
wgrant"The requested bug is private. Feeds do not serve private bugs."05:23
wgrantLooks reasonable.05:23
wallyworld_i think so. better than a yucky error page05:24
StevenKHm, ENOLIFELESS05:24
wgrantnetsplit05:24
StevenKFor over ten minutes? Go go Freenode05:25
StevenK lib/lp/archiveuploader/tests/nascentupload-announcements.txt05:25
StevenK  Ran 1 tests with 0 failures and 0 errors in 9.389 seconds.05:25
StevenK\o/05:25
wgrantHow'd you manage that?05:26
StevenKBy doing evil things05:26
wgrantThat goes without saying.05:26
StevenKchanges['_filename'] = changes_file_object.name05:26
StevenK^ That, mostly05:26
wgrantOK, not that evil.05:26
wgrant:(05:26
StevenKThe only thing that cares about the filename is notify_spr_less05:26
StevenKAnd I can't call it from do_reject, since it has no idea about the callstack05:27
StevenKAnyway, running -vvm soyuz over it now05:27
wgrantGreat.05:27
wgrantThen commit, push, and I will examine it and work out what we can do next.05:27
wgrantTo denauseatify it.05:27
StevenKAfter the tests or during?05:28
wgrantAfter.05:28
wallyworld_wgrant: hard hard is it to get another field added to a fti and where do i look to see how an existing fti is defined?05:33
wallyworld_how hard05:33
wgrantwallyworld_: database/schema/fti.py05:34
wgrantReindexing everything is harder.05:35
wgrantWhat are you looking to add?05:35
wallyworld_person . irc nick05:35
wgrantThat's a bit harder.05:35
wgrantSince that's in a separate table.05:35
wallyworld_of course. silly me05:35
wgrantIs the join too expensive?05:35
wgrantThere are not many IRC nicks.05:35
wgrantemailaddress is the one that needs optimisation, if anything odes.05:36
jtvDoes that need FTI?05:36
jtvI mean, IRC nicks?05:36
wallyworld_i'm just thinking out loud05:36
wallyworld_jtv: no, i said something stuoid without thinking05:36
jtvno worries then — we all do that05:36
jtvWho's up for a JS client-server pre-imp call?05:36
NCommanderStevenK: http://paste.ubuntu.com/613055/ (just realized I forgot to put the paste link)05:37
StevenKNCommander: Indeed you did05:38
StevenKNCommander: Making a BPR should make builds for you05:40
wallyworld_jtv: what are you looking to do?05:41
jtvwallyworld_: just otp back in a sec05:42
wallyworld_ack05:42
StevenKNCommander: It looks good -- your imports are all over the place, so I'd suggest running utilities/format-imports over it. You have some spelling errors, and every comment should be a complete sentence -- you're missing some full stops.05:43
StevenKNCommander: Eight lines of self.assertEquals is mind-numbling, can I suggest a for loop?05:43
StevenKwgrant: ^05:43
wgrantThere may be a matcher for that.05:43
StevenKNCommander: Oh, and you import pdb without using it05:43
wgrantOr it may be in james_w's unlanded branch.05:44
james_wyeah, I think that's in more-matchers05:44
james_wland it! :-)05:45
jtvwallyworld_: back.05:45
StevenKNCommander: However, if that test passes and you have the publisher changes finalized, put up an MP!05:45
jtvHere's what I want to do: you've got a page displaying a bunch of items with somewhat complicated state, and I want live updates for that state.05:46
StevenKjames_w: Link me the MP?05:46
wallyworld_the page stays open for a while?05:46
jtvPossibly, yes.05:47
wallyworld_so you want a long poll which we don't currently do :-(05:47
jtvIdeally, yes.05:47
jtvBut I have what I hope is a pretty efficient poll with some mitigation measures for the load problem.05:47
wallyworld_i *think* that the option for now would be to set up a js timer and poll yourself05:48
jtvRight.05:48
wallyworld_every so often05:48
StevenKNCommander: But I'd suggest making the changes I suggest first, since any reviewer is likely to pick up on the exact same points.05:48
james_whttps://code.launchpad.net/~james-w/launchpad/more-matchers/+merge/3205705:48
jtvwallyworld_: and possibly less often for large numbers of objects.05:48
wallyworld_and i think yuo has some apis which support that05:48
wallyworld_yui05:48
lifelesswallyworld_: wgrant: that feeds fix05:48
lifelesswallyworld_: wgrant: I bet I can still make it oops05:49
wallyworld_jtv: you can say "execute this emthod after x seconds"05:49
lifelesswithout url hacking05:49
james_wPublishedStateIs along with the matcher that loops over the input and you'd have a test that would make lifeless proud :-)05:49
jtvwallyworld_: yes, I've seen that.05:49
wallyworld_lifeless: fire away05:49
wgrantlifeless: Probably.05:49
wgrantI don't care about whether the fix is good.05:49
wgrantI care about whether it breaks stuff.05:49
lifelesswallyworld_: open two tabs on a public bug. In one make it private. In the other follow the rss link.05:49
wallyworld_jtv: i think you'd just requeue the method after each invocation05:49
wgrantlifeless: You failed.05:50
lifelesswgrant: yes, its deployable.05:50
wgrantlifeless: It redirects.05:50
wallyworld_lifeless: i accounted for that case :-P05:50
jtvwallyworld_: yes—that avoids piling up overlapping poll attempts.05:50
lifelesswallyworld_: excellent05:50
StevenKjames_w: I suspect that branch needs devel merged in05:50
wallyworld_lifeless: you don't need two pages. just do an inline js edit of prvacy05:50
lifelesswallyworld_: I only remembered the work around the link rel=...05:50
lifelessso, cool.05:51
jtvwallyworld_: I was thinking: render each item on the page with a "status cookie" that encodes everything about the item that might change and require it to be re-rendered.  To poll, the client sends its item ids with their cookies; the server responds with HTML and fresh cookies for any items that have changed.05:51
wallyworld_lifeless: thanks for asking though. best to be thorough05:51
jtvwallyworld_: The cookie would be computed in one place only, so nobody else needs to care what goes into it.05:51
lifelesswallyworld_: indeed!05:52
wallyworld_jtv: sounds like a good solution. could you use an etag like lazr restful?05:52
wallyworld_jtv: that essentially is the same problem05:52
lifelesssounds heinous http://www.theregister.co.uk/2011/05/25/intel_hybrid_cloud_appup_service/05:52
jtvwallyworld_: I had no idea lazr.restful did etags!  Yes, that'd be an ideal place for the cookie to go.05:52
wallyworld_jtv: i *think* lazr restful has js for computing the hash/cookie you could perhaps look to reuse too05:53
StevenKjames_w: No fair having 5 dependant branches deep05:53
lifelesswallyworld_: jtv: etag can only talk about one object at a time05:54
lifelesswhich drives lots of round trips05:54
jtvwallyworld_: wouldn't that by nature have to be based on the HTML?05:54
lifelesswhats the problem with just doing the UI in js ?05:54
lifelessif the user doesn't have js, they won't get updates anyway05:54
jtvBut they want to see the same items.05:54
wallyworld_lifeless: i didn't realise that etag limitation05:54
lifelesswallyworld_: etags apply to an entity from a url05:55
jtvAnd I stupidly thought wallyworld_ was saying lazr.restful had it deeper down where you could do it per item.  :)05:55
jtvSo scratch etags.05:56
lifelessjtv: the recipes UI does updates using the html representation05:56
wallyworld_jtv: lifeless: i wasn't sure about how it was implemented. just pointing out it had them in some form in case they were useful for this, but not so05:56
wallyworld_sorry :-)05:56
* lifeless doesn't understand the problem yet05:56
wallyworld_lifeless: jtv wants a long poll type scenario to asynchronously update a page i think05:57
jtvYes, items on a page.05:57
lifelessoh, I get that bit05:57
lifelessI don't understand why the existing answers don't work here05:57
jtvI asked earlier about existing answers.05:57
wallyworld_we don't currently have anything like that atm in lp do we?05:58
lifelesswe do page updates in js all the time05:58
StevenKwgrant: http://pastebin.ubuntu.com/613059/05:58
lifelesspickers, subscriptions, recipes, bugs05:58
wallyworld_lifeless: yes, but that;s in response to a user action05:58
lifelesswallyworld_: so?05:58
wallyworld_not a server side event05:58
wallyworld_this is a different scenario afaiu05:59
lifelesswallyworld_: fire a background poll, it notifies when an object is updated, call into the local js05:59
jtvlifeless: that's not a very helpful description.05:59
wallyworld_lifeless: yes, that's the solution that is being canvased05:59
StevenKwgrant: A lot of the failures are due to tests tossing in StringIO for changes_file_object, which doesn't have a .name06:00
wgrantStevenK: :(06:00
wallyworld_we are discussing the implementaion options06:00
lifelesswallyworld_: jtv: what I'm saying is that finding out about the change, and updating the UI in response, are largely separate problems06:00
jtvWhich is why I posed them as separate questions from the start.06:01
jtvlifeless: You may want to read about 2 hours back, search for your name.06:01
jtvWe're not confused on that point.06:01
lifelessok06:01
wallyworld_sure. we are more discussing the "finding out about the changes" bit i think06:01
StevenKwgrant: And getattr(changes_file_object, 'name') makes me cry06:01
wallyworld_i think jtv has what seems like a reasonable solution06:01
jtvI was sketching out the solution I had in mind, based on the answers I got earlier about existing solutions.06:02
jtvThe answers were: no, we have nothing better than polling yet; and even though we generally prefer to manipulate the DOM directly for object changes, it is possible to request HTML from lazr.restful.06:02
lifelessjtv: so, I'm confused again06:03
lifelessyou seem to be describing a sort of complex page-state-diff algorithm.06:03
jtvNot particularly complex, when you get right down to it; just "send me any updates" but with a single roundtrip.06:03
lifelessWhats the concrete use case here? Is it really 'any part of the page has changed', or is it 'show the status of jobs for this DSD' ?06:04
jtvIt's showing the status of a DSD—which may include the status of the DSD itself, but also different types of jobs that may be in progress for it.06:04
lifelesssome thoughts:06:05
lifeless - detecting a change generally involves as much as work as rendering the object again06:05
lifeless  - the server knows what would be on the page so why would the client supply stuff to check?06:06
jtvWhy does the server know what would be on the page?06:06
lifelessbecause the server renders pages06:07
jtvIt knows _when_ it renders the page.  But after that, it blissfully forgets.06:07
lifelessyes, But it can redetermine that trivially as needed06:08
jtvExcuse me?06:08
jtvHow can it do that?06:09
lifelessrender the page?06:09
jtvThat's a different page.06:09
jtvIt's got different DSDs on it.06:10
jtvThat's not the page the user is looking at.06:10
wallyworld_if there are 100 clients connected at different times, how can the server know what's on each and every client? that's not scalable06:10
jtvExactly.06:10
lifelesswallyworld_: so, in the future, ajax subscription does *exactly that*06:11
lifelesswallyworld_: but thats not today.06:11
lifelessjtv: why does it have different DSDs ?06:12
wallyworld_even in that case though, the server would just push out new state for a domain object and it wouldn't know what's already been rendered06:12
jtvBecause it's a filtered view.  DSDs change status.06:12
wallyworld_it would be up to each client to "do the right thing"06:12
jtvA DSD gets resolved, it falls off the page.06:12
jtvA package change may push a new DSD onto the page.06:12
wallyworld_lifeless: storm doesn't support sql case statements does it?06:14
lifelesswallyworld_: sure does06:14
wallyworld_oh cool.06:14
* wallyworld_ looks for it06:15
lifelessjtv: then perhaps just request that the dsds present get re-rendered ?06:16
NCommanderStevenK: I don't have changes for it yet, I got tied up withspecs so I only finished the test suite today to see if its sane, as I'm unsure if this is the proper solution. I kinda felt it mightbe clearly to maintain publishing for SUPERSEDED items ...06:16
jtvlifeless: that's going to be very similar, except with unnecessary rendering and a bigger payload.  Where's the gain?06:17
StevenKNCommander: Hopefully, the test fails, then?06:17
lifelessjtv: its simpler06:17
lifelessjtv: you could just return domain objects, but I got the impression you didn't want to do the ui in js06:18
jtvThat's right, I didn't want to do the UI in JS.06:18
lifelessthough domain objects are often *more* expensive to generate than rendering a page.06:18
jtvI don't think rending all items takes away much complexity: instead of keeping track of {id: cookie} we'd need to keep track of [id], and that's about all I see changing.06:19
NCommanderStevenK: indeed since everything expect the i386 binary should still be PUBLISHED06:19
jtv*rendering06:19
wallyworld_lifeless: sorry. i can't see any native support. i know i can inject the required sql into the find(), i was looking for a built in Expr subclass06:19
StevenKwgrant: The first 14 errors fixed06:19
wgrantStevenK: That was easy.06:19
StevenK1506:20
StevenKtest_realiseUpload_for_delayed_copies is still broken06:20
wgrant:(06:20
wgrantWhat is its complaint?06:20
lifelessjtv: it means you don't need a cookie, generation of which is usually expensive [in all similar systems I've sen]06:20
StevenKwgrant: It was expecting an annoucement mail06:20
wgrantHmm06:21
StevenKwgrant: Let me commit and push06:21
lifelesswallyworld_: hmm, sorry :(. Would you like some pointers on adding a case statement expr ?06:21
StevenK% bzr di | wc -l06:21
StevenK41306:21
StevenKI am such a bad person06:21
jtvlifeless: even if generating the cookie is as expensive as rendering an item, big win.06:21
wallyworld_lifeless: i should be ok to do that. i'm not sure if i need it. just experimenting at the moment06:22
jtvlifeless: the cookies can be generated in batch.06:22
lifelessjtv: rendering can be done in a batch too?06:22
jtvAre you asking or saying?06:22
lifelessboth I guess06:23
jtvWhat I'm saying is, I don't see why generating the cookie and in most cases doing no rendering at all and sending basically no data across the wire is going to be anywhere near as expensive as re-rendering all items on the page and sending them to the client.06:24
jtvAlso, I think saw IE running JS once.06:24
lifelessi/win 2106:24
jtvThere's no longer a monitor attached to that computer, so I don't know how well it does.  But not replacing items on a page that don't need touching may also be a plus.06:24
lifelessso, I've fixed something like 10+ timeouts related to generating API objects now06:26
jtvHow does that follow?06:26
lifelessthe API definition for an object includes grabbing *all* the adacent objects and calculating their urls06:26
jtvGood point: another reason to do it the way I had in mind I guess.06:27
lifelessthe reason I suggested rendering is that rendering is *targeted*06:28
jtvThey're going to have to do something with the internet here, so I'll be offline for a bit.06:28
lifelessk06:28
lifelesspick this up in a bit06:28
wgrantHm.06:28
wgrantDid someone break PQM?06:28
wgrantNobody fixed the conflict, but it has stopped complaining.06:29
wgrantah, buildbot failure.06:29
wgrant"Set changed size during iteration"06:29
wgrantWYay06:29
wgrantwallyworld_: Found any remarkable insights from your ranking experiments?06:32
wallyworld_wgrant: there is a relatively simple change that will improve the ordering of results while not changing the query too much. the query is quite complex so i'm loath to mess with it too much. i'm also experimenting a bit with a few other things06:33
wgrantwallyworld_: You mean actually using the rank instead of throwing it away and ordering by displayname?06:35
StevenKwgrant: The diff should be updated.06:35
wallyworld_wgrant: yes, in a nutshell06:35
wgrantwallyworld_: Good luck doing that while not changing the query too much :(06:36
wallyworld_exact matches to name (lp id) > exact matches to displayname > exact matches to irc nick > partial matches to email06:36
wgrantWhat's an exact match to displayname?06:36
wgrantas in a full string match?06:37
wallyworld_wgrant: i've got a solution which i expect wiol work but i'm messing with other things before i implement06:37
wallyworld_yes.06:37
wgrantwallyworld_: We also need to consider affiliation in ranking, or maybe just filtering... and I'm not sure how trusted affiliation wants to be.06:37
wgrantHmm.06:38
wgrantI'd prefer an FTI rank over a string match.06:38
wgrantOtherwise you have to get it just right.06:38
wallyworld_wgrant: we discussed on the call this morning not doing affilliation in rankings first up06:38
lifelessif you're checking displayname be sure to add a db index for it06:38
wallyworld_will do06:38
wallyworld_wgrant: wrt the fti match vs string match. the fti match is still being done too. but if the user does type in an exact match, that should take precedence06:40
lifelesstrust fti to do that06:40
wgrantwallyworld_: But the FTI rank is not taken into account.06:40
wgrantRight.06:40
wgrantIf we take FTI rank into account, we'll get full matches and partial matches, in the right order.06:40
wallyworld_lifeless: the fti will do it but the ranking will be off06:40
wallyworld_we want exact matches ranked higher06:41
stublifeless: "BugTask.sourcepackagename = ss4.sourcepackagename OR ss4.sourcepackagename IS NULL" is better written as "BugTask.sourcepackagename IS NOT DISTINCT FROM ss4.sourcepackagename"06:41
lifelessstub: doh of course... thanks06:41
wgrantwallyworld_: FTI rank should do that.06:41
wallyworld_wgrant: not when fti rank is 0..1 and we use 100 for exact string match on name and 10 for irc nick06:42
wgrantwallyworld_: Better to tweak those than work around FTI, surely.06:42
wallyworld_i could look at adjusting the other raqnking values currently in use06:43
wallyworld_but there must have been a reason for doing it the way it is06:43
wgrantYou've been around Launchpad for long enough to know that's not necessarily true :)06:43
wallyworld_does our local db on our laptops have fti enabled?06:43
wgrantYes.06:44
wallyworld_cool.06:44
wgrantlaunchpad_dogfood=# SELECT Person.name, Person.displayname FROM person ORDER BY rank(fti, ftq('william grant')) DESC LIMIT 10;06:44
wgrant      name       |         displayname06:44
wgrant-----------------+------------------------------06:44
wgrant me-williamgrant | William Grant06:44
wgrant wgrant          | William Grant06:44
wgrant me+testing      | William Grant (test account)06:44
wgrant shuilongzi      | Basil Bakhtin06:44
wgrantWe just have to balance them with exact name matches.06:44
wgrantThose results aren't bad.06:44
wgrantAnd IRC nick matches.06:44
wallyworld_wgrant: wrt the exidting ranking. i realise that it may not be "correct" but i do want to try and understand why it was done the way it was in case there's some corner casse or something i'm missing06:45
stubThose constants were just a guess that have never been tweaked IIRC06:46
stubJust there to get all exact matches above fti fuzzy matches06:46
wallyworld_stub: makes sense. wonder why if fti ranks from 0..1 that string matches used 100 though06:46
wallyworld_if fti gives a ranking of 1 for exact match, then wou;dn't we have used 1 for for explicit exact matches?06:47
stubwallyworld_: Exact match in a particular field. fti match does stemming, and searches other fields too probably, but will give the same score for 'wgrant' as it would 'wgrants'06:48
stubAnd miss you entirely if your name happens to be a stopword.06:48
stubTry a search for 'Ng' for instance...06:49
stubfti is setup for english word searches, and names don't really fit that.06:49
wallyworld_ok. thank for the explanation. sounds like we need to explicitly do any exact string matches we require. and there's none for displayanme yet06:51
* wallyworld_ has to go to soccer training. back later06:51
stubwallyworld_: We likely need an index created to do exact matches fast and case insensitive. Are exact matches on name useful though? Or do you really want a substring match (slow without further work...)06:52
wallyworld_stub: i think they are useful. if you know you want to find "Joe Bloggs" you should be able to type that. you may not know his lp nick or email06:53
wallyworld_i don't think we need substring. fti will cover that? just an index for exact match06:54
wallyworld_for displayname06:54
wallyworld_i'm assuming there is already an index for person.name06:55
* wallyworld_ really has to go now06:55
wgrantstub: Oh yeah, person.fti doesn't have an index on production.06:55
wgrantstub: We discovered this yesterday.06:55
StevenKwgrant: New list: http://pastebin.ubuntu.com/613073/07:06
wgrantStevenK: What's up with soyuz-set-of-uploads?07:07
StevenKwgrant: distroseriesqueue.txt07:08
StevenKSigh07:08
StevenKwgrant: distroseriesqueue.txt is complaining that spr.name is None for an announcement mail07:09
wgrant:(07:09
wgrantspr.name is None, or spr is None?07:09
StevenKThe latter, sorry07:09
wgrantRight.07:09
wgrantWe probably have to infer it from the BPR or something.07:09
StevenKSo, if spr: name = spr.name, if bprs: bprs....07:10
StevenKwgrant: The soyuz-set-of-uploads failure is odd: http://pastebin.ubuntu.com/613074/07:11
wgrantStevenK: Why's it not emailing name16 any more? :(07:16
StevenKIt should be?07:17
wgrantIt was before.07:17
=== al-maisan is now known as almaisan-away
StevenKwgrant: distroseriesqueue.txt fixed07:18
StevenKAh, it's a bug in notify_spr_less07:21
stubwgrant: whoops07:23
wgrantStevenK: Your diff is now Full HD.07:23
* stub wonders how that happened07:23
wgrantstub: Rather...07:23
StevenKwgrant: Oh?07:23
wgrantstub: It's all of 50MB when freshly created on DF.07:24
wgrantStevenK: It is 1080 lines.07:24
wgrantGetting a little on the large side,...07:24
lifeless\o/ I feel validated, I fixed a bug this week07:24
stubfti.py is supposed to maintain all that07:24
StevenKwgrant: Haha07:24
lifelessStevenK: yo07:24
lifelessbah07:24
lifelessstub: yo07:24
StevenKHa07:25
stublifeless: yo07:25
lifelesscall?07:25
stubsure07:25
lifelesssky.net?07:27
wgrant2011-05-26 05:57:06 INFO    2208-62-0 applied just now in 0.3 seconds07:29
wgrantSuccess!07:29
pooliewould it be too snarky to edit "Most developers will be happy with [[API/launchpadlib|launchpadlib]],"? :}07:32
lifelesspoolie: ECONTEXT07:32
StevenKwgrant: 62 is the patch o' doom?07:32
wgrantYes.07:34
pooliethe help.l.n/API page07:34
pooliei was actually going there to add something more objectively useful07:34
pooliewhich is the tip about string parameters being encoded as json strings07:35
lifelessstub: ohhai?07:37
lifelesszing!07:40
StevenKlifeless: I think that's your answer ...07:41
StevenKwgrant: soyuz-set-of-uploads fixed07:41
StevenKIt's still horridly slow07:41
LPCIBotProject db-devel build #581: FAILURE in 7 min 6 sec: https://lpci.wedontsleep.org/job/db-devel/581/07:48
StevenKHmmm07:48
StevenKbzr: ERROR: http://bazaar.launchpad.net/~launchpad-pqm/launchpad/db-devel/.bzr/repository/packs/c953fdd6233a6989afbd047b37b58c4b.pack is redirected to https://launchpad.net07:48
StevenKAgain07:48
wgrant:(07:48
wgrantStevenK: How'd you fix it?07:48
StevenKwgrant: soyuz-set-of-uploads? It wasn't even checking the blamer.07:49
wgrantAh07:49
wgrantThat might do it.07:49
StevenK[16:21] < StevenK> Ah, it's a bug in notify_spr_less07:49
wgrant191 open critical bugs in launchpad :)07:49
StevenKThen fix the topic? :-)07:50
wgrantlaunchpad-project is still 209 :(07:50
=== wgrant changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:209 - 0:[######=_]:256
lifelessstub: https://dev.launchpad.net/ArchitectureGuide/Services08:00
wgrantStevenK: What's still failing?08:08
StevenKwgrant: Everything else on that list aside from the two I've mentioned.08:10
jtvlifeless: we were discussing that DSD page update thingy.08:12
StevenKwgrant: Are you still looking it over, or do you want to fly to Sydney to kick me in the teeth?08:13
wgrantStevenK: A hybrid.08:14
StevenKwgrant: Oh, so you're still looking it over *and* you want to fly to Sydney to kick me?08:16
wgrantRight.08:16
lifelessjtv: hi, yes we were.08:26
lifelessjtv: I have an email I've been trying to get to for a day now, which I want to finish as a priority08:26
jtvOK08:26
lifelessjtv: can we raincheck for a little more?08:26
jtvsure08:26
StevenKwgrant: distroseriesqueue-dist-upgrader.txt fixed. With a one-line patch. :-/08:35
wgrantStevenK: Oh?08:35
wgrantHow?08:35
wgrantI expected it to be harder.08:35
StevenKwgrant: Adding 'MAINTAINER': '', to the information dict08:36
wgrantHeh08:37
StevenKIt fixed distroseriesqueue-debian-installer.txt too08:37
wgrantAnd translations?08:37
wgrantOr ddtp or whatever it's called.08:37
StevenKddtp-tarball looks like whitespace changes08:38
StevenKwgrant: ddtp-tarball fixed with http://pastebin.ubuntu.com/613092/08:40
wgrantAhh, - is the default version, I guess.08:41
StevenKAh08:41
wgrantYou might want to fix that by s/''/'-'/ instead.08:41
StevenKI can fix that08:41
wgrantI was going to chastise you for using '' anyway.08:41
StevenKwgrant: That fixed it, good catch.08:42
wgrantpoolie: Bug #778437 is already released.08:43
_mup_Bug #778437: Recipe build success sends emails, please stop doing that <email> <qa-ok> <recipe> <Launchpad itself:Fix Released by mbp> < https://launchpad.net/bugs/778437 >08:43
wgrantpoolie: Does it not seem to be?08:43
wgrantStevenK: Does that change dist-upgrade/debian-installer at all?08:43
wgrantIs test_realiseUpload_for_delayed_copies still broken?08:46
wgrantAnd what about xx-queue-pages.txt?08:46
StevenKwgrant: Both still pass with the '-' change -- perhaps they don't check the subject.08:46
wgrantHm.08:46
wgrantWould not surprise me :(08:46
StevenKHaha08:46
StevenKI believe test_realiseUpload_for_delayed_copies is still broken08:47
StevenKxx-queue-pages I'm not sure about08:47
StevenKwgrant: I think that gets us to test_realiseUpload_for_delayed_copies, distroseriesqueue-notify.txt and xx-queue-pages.txt as broken08:48
wgrantStevenK: Ah, yeah, look at PackageUpload.displayversion.08:48
wgrantUses source version, then binary version, then -.08:48
StevenKAh yes08:48
StevenKwgrant: Which of the three do you want me to dig into next?08:49
wgrantStevenK: Whichever has the least obscure error message.08:50
pooliewgrant: ooh, that's great08:50
wgrantWhich may well be test_realiseUpload_for_delayed_copies, but possibly not because screw delayed copies.08:50
pooliei have the mail filtered08:50
wgrantAh, heh.08:50
StevenKwgrant: Haha08:51
wgrantpoolie: But yeah, it was released like 7 hours after it landed.08:51
wgrantWhere by 7 I mean 9.08:51
wgrantBecause I can't count.08:51
StevenKwgrant: xx-queue-pages: http://pastebin.ubuntu.com/613096/08:52
pooliei don't have a totally reliable model of which bug state and which branch landing corresponds to 'actually running'08:52
pooliewgrant: so you qa'd it? thanks08:53
wgrantpoolie: Fix Released means "actually running", unless somebody makes a mistake.08:53
StevenKwgrant: The bottom one is fixable, once I figure out where that comment is getting injected08:53
wgrantAnd it's normally lifeless or I, and we are fairly good at that these days.08:53
StevenKwgrant: The top one concerns me08:53
poolieaj08:53
pooliei mean ok08:53
wgrantStevenK: The top one is concerning mostly because more tests did not fail.08:54
adeuringgood morning08:54
wgrantStevenK: It's a reasonable change. But more should have broken.08:54
StevenKwgrant: Beh, the bottom one is because the older code set "Rejected by archive administrator." as the reason if there was none.08:55
LPCIBotProject windmill-db-devel build #326: STILL FAILING in 1 hr 7 min: https://lpci.wedontsleep.org/job/windmill-db-devel/326/08:55
wgrantStevenK: Ah. You should probably do so too.08:55
wgrantStevenK: Eventually that will be gone, but let's preserve behaviour for now.08:55
wgrantAlso, wow our tests are terrible.08:56
poolienight all08:56
wgrantNight poolie.08:56
StevenKwgrant: Fixed that -- should I correct the subject in the doctest?08:58
wgrantStevenK: I'm not sure. Why did it change?08:59
wgrantDid none of the other tests of the ".* rejected" subject change?08:59
wgrantIt seems odd that a single test found it.08:59
StevenKwgrant: So, rejected messages are interesting -- notify_spr_less() will set the subject as "<changesfile> rejected", but notify() will set it as in calculate_subject()09:00
wgrantRight.09:00
wgrantThat's what I thought.09:00
wgrantSounds reasonable.09:00
wgrantFor now, at least.09:00
wgrantSo change the test.09:00
StevenKAnd interestingly, the test is rejecting alsa-utils09:00
StevenKBut the test is coded to expect the subject is 'netapplet-1.0.0.tar.gz rejected'09:01
StevenKSo, fail.09:01
wgrantPossibly sampledata fail.09:01
wgrantWait.09:01
wgrant*tar.gz* rejected?09:01
wgrantHow does that make sense :(09:01
StevenKIt doesn't!09:01
StevenKxx-queue-pages.txt fixed09:02
StevenKwgrant: distroseriesqueue-notify.txt suffers from the same brain damage09:04
wgrantStevenK: Yay sampledata.09:04
StevenKwgrant: -notify sorted out, that leaves test_realiseUpload_for_delayed_copies09:12
StevenKwgrant: Which is strange. It seems to only want an annoucement mail and no other09:13
wgrantStevenK: That's right.09:14
wgrantStevenK: Since there is no requester.09:14
StevenKAnd I don't want to put a delayed copy hack into notification09:14
wgrantStevenK: Notifying the signer is probably wrong.09:14
wgrantCheck what the old code did.09:14
wgrantAre you still using spr.packageupload.signingkey?09:14
StevenKYes09:15
wgrantThat's probably it.09:15
StevenKEr, no09:15
wgrant:(09:15
wgrantYou're using blamer now?09:15
StevenKEverything is09:15
wgrantOK.09:15
wgrantSo whatever is passing in blamer might be wrong.09:15
wgrantthis is just a guess; I may be entirely wrong here.09:16
StevenKPU.notify() sets it to self.signing_key.owner if signing_key isn't None09:16
wgrantHmm. So it should be None for delayed copies still.09:16
StevenKLet's find out09:16
wgrantWork out why it's sending the extra email.09:16
wgrantThen work out why it wasn't sent before.09:16
StevenKIt's a unit test, so I can trace easier09:16
wgrantdoctests rule the world!09:17
* StevenK hangs himself09:17
StevenKwgrant: (Pdb) p self.signing_key09:25
StevenK<GPGKey at 0xf332950>09:25
StevenK:-(09:25
=== almaisan-away is now known as al-maisan
wgrantStevenK: .. on a delayedcopy?09:25
StevenK(Pdb) p self.is_delayed_copy09:26
StevenKTrue09:26
mrevellMorning09:26
StevenKwgrant: So, yes09:26
wgrantStevenK: I don't think that's valid.09:27
wgrantHow does it create the delayedcopy?09:27
StevenK_autotest.distribution)09:27
StevenKRargh09:27
wgrantAnd can you check the code that creates them in reality?09:27
wgrantTo see if it sets it?09:27
wgrantAlso, brb.09:27
StevenKwgrant: The test passes in self.test_publisher.person.gpg_keys[0] explicity09:28
StevenK*explicitly09:28
bigjoolsStevenK: mumble09:30
StevenKwgrant: Right, looks like the package copier sets the key to None, but a lot of tests set it to a key09:31
wgrantStevenK: Kill them.09:46
wgrantStevenK: Actually, probably best to work out why it worked before.09:46
StevenKwgrant: I have no idea :-(09:46
wgrantStevenK: You'd best work that out :/09:53
bigjoolswgrant: don't we have code that stops account merges when someone has a PPA?10:05
wgrantbigjools: Yes.10:07
wgrantbigjools: It worked when I tried it last week, too.10:07
wgrantNFI what happened there.10:07
bigjools:/10:07
bigjoolsthere will be an orphan repo10:07
bigjoolswhich is a bit of a disaster if a new on gets created10:07
wgrantIt's merged on DF.10:08
wgrantLet's see...10:08
wgrantIt's disabled...10:08
wgrantstatus == 210:09
wgrantThe PPA is deleted.10:09
wgrantSo the merge was OK.10:09
bigjoolsah10:09
wgrantBut the sub link shouldn't be shown.10:09
bigjoolsok10:09
StevenKwgrant: Fixed, I think.10:09
wgrantStevenK: How?10:09
StevenKwgrant: Was a bug in notify()10:09
wgrantbigjools: Can you tell sladen so I can pretend to nearly keep to core hours? :)10:09
bigjoolsyeah PMing him now10:09
StevenKwgrant: The old code said "If pocket is SECURITY and there is no source", my code said "If pocket is SECURITY and there is source" ...10:10
wgrantStevenK: aaaaaaaa10:10
wgrantPocket-specific hacks make me cry.10:10
wgrantAnd/or murderous.10:10
=== allenap changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: allenap | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:209 - 0:[######=_]:256
wgrantBut yes, I know the one you mean.10:11
jtvooh allenap, I have one for you!10:11
allenapjtv: Send it over :)10:11
jtvAs soon as the #$%*&@ page will load.10:12
jtvallenap: https://code.launchpad.net/~jtv/launchpad/db-bug-786970/+merge/6229210:13
LPCIBotProject windmill-devel build #141: STILL FAILING in 1 hr 12 min: https://lpci.wedontsleep.org/job/windmill-devel/141/10:13
jtvHmm it's still showing the conflicts.  But that should update any moment now.10:13
StevenKwgrant: So I think all tests pass now.10:13
wgrantStevenK: -vvt soyuz -t archiveuploader -t archivepublisher10:14
StevenKwgrant: I don't really want to tie up my machine for 50 minutes10:14
wgrantYeah.10:14
wgrantec2 it.10:14
bigjoolsand the rest10:14
StevenKbigjools: Speak for yourself, my machine runs -vmm soyuz in 29 minutes.10:15
StevenK-vvm, even10:15
bigjoolsStevenK: and archivepublisher, archiveuploader, builddmaster ? :)10:15
StevenKwgrant didn't say buildmaster10:15
wgrantbuildmaster's not so relevant here.10:16
bigjoolsit'd be a good idea to run it though10:16
wgrantBut still useful.10:16
jtvbigjools: should the UI allow the user to request a sync for a DSD that also has a DSDJob pending?  Probably not what you _want_, but don't know whether we should be difficult about it.10:16
bigjoolsit generates emails10:16
wgrantThere may be one or two relevant tests.10:16
StevenKAnyway, ec2 is off10:16
jtvallenap: my diff's updated.  Conflicts are gone.10:16
bigjoolsjtv: it's a valid thing to do so don't prevent it10:16
allenapjtv: Cool. I've claimed it.10:16
StevenKwgrant: If it passes ec2, what's the next step?10:16
jtvthanks allenap10:16
bigjoolsjtv: which of course means there may be more than one DSDJ for the package10:17
wgrantStevenK: I will rereview it first thing tomorrow morning.10:17
jtvbigjools: yes, makes sense (otherwise parent updates could become a DoS condition :) though it introduces a slight asymmetry in the logic.10:17
wgrantStevenK: And attempt to restrain myself from asking you to split it.10:17
StevenKHah10:17
* bigjools starts looking at what info +queue and the queue tool need out of PackageCopyJob to work10:17
wgrantbigjools: Surely you wouldn't be insinuating that we don't have a nice clear, simple interface between the queue UI and the data model :)10:18
bigjools:/10:19
bigjoolsthe queue page is already a nightmare.  this will make it a zombie nightmare10:19
StevenKAnd pitti was asking us yesterday to make it quicker10:20
StevenK:-)10:20
wgrantAt least delayed copies are nearing their end.10:20
bigjoolsyay10:20
bigjoolsPCJ is the new delayed copy :)10:20
wgrantExcept slightly less ugly.10:20
* StevenK shoots self, allenap 10:20
jmlDo we have a policy template (distinct from the process template, which I know we have)10:20
jmlStevenK: tch tch. such violence is unnecessary.10:21
allenapStevenK: Why?10:21
StevenKallenap: [19:20] < bigjools> PCJ is the new delayed copy :) And PCJs are your fault :-)10:21
StevenKAnd delayed copies make me want to hurt people.10:22
wgrantbigjools: One day we will properly unify them.10:22
wgrantbigjools: But until then PCJ is a much less bad hack.10:22
* bigjools is not responsible for delayed copies!10:22
wgrantI don't appreciate your lies.10:22
allenapStevenK: I blame Jelmer :)10:22
bigjoolsa certain Brazilian did them10:22
StevenKallenap: Actually, it's my fault! I told you how to do it quickly!10:23
wgrantI can understand why they were done, given time pressures and reuploading... but doesn't make me like them any more.10:23
allenapStevenK: Ah ha, that's why you were proposing to shoot yourself!10:23
StevenKI've been reading delayed copies code today, I'm suicidal10:24
wgrantStevenK: It's OK to think about delayed copies if you are doing it to remove them.10:24
StevenKBleh, branch is now 1116 :-(10:26
StevenKIt still removes more than it adds back10:26
wgrantAt least you've done what LCD manufacturers have failed to do.10:26
StevenKWhat's that?10:27
wgrantExceed the 1080p you were stuck at for a while.10:27
StevenK"lol"10:27
* bigjools strokes his 1920x1200 24-incher10:28
* StevenK stabs his eyes10:29
StevenKI've forgotten how to check resolution10:29
wgrantxrandr10:29
StevenKBut I think this LCD is only 22 inches10:29
StevenK1920x108010:30
bigjoolswgrant: so, the plan was to create a PU at the same time as a PCJ, right?10:31
wgrantbigjools: I think that is best for now.10:31
* allenap gingerly pets his 2560x1600 30-incher.10:31
bigjoolsor did we talk about making the PCJ create the PU?10:31
wgrantallenap: !!10:31
wgrantallenap: I want one.10:31
* bigjools drives to allenap's house with a lock pick and a shotgun10:31
wgrant24" @ 1920x1080 is almost painfully low DPI.10:31
wgrantbigjools: How are PCJs normally created now?10:32
StevenKallenap: Which make and model?10:32
bigjoolswgrant: in the browser code10:32
StevenKHm, I wonder if X can spit out the EDID information10:32
allenapIt's an Apple thingy, I'm not sure they sell 30" models any more. It's 4 years old.10:32
wgrantStevenK: xrandr --prop10:33
StevenKYou said the magic A word that makes me lose interest.10:33
allenapHehe :)10:33
wgrantbigjools: And the real permission checks are done at job execution time?10:33
StevenKwgrant: EDID isn't the make of model of the display?10:33
bigjoolswgrant: yeah it would have to, as a backstop10:34
wgrantStevenK: It contains that information, plus the supported modes.10:34
wgrantbigjools: This is going to be ugly for a while :(10:35
wgrantNot sure how to do this efficiently...10:35
bigjoolswgrant: s/for a while/10:35
wgrantbigjools: It can be cleaned up as tech-debt eventually.10:35
wgrantEVENTUALLY10:35
wgrantThis is some tech-debt I am happy to tolerate for now, though.10:36
wgrantbigjools: We are moving to one PCJ per package, right?10:36
bigjoolsthe form button is intelligently presented depending on whether you have permission but there's nothing to prevent url hacking to POST something it seems10:36
wgrantRight.10:36
wgrantThat's sensible enough.10:36
bigjoolswgrant: yes, one per package to make error reporting easier10:36
bigjoolsalso so that mass-sync completes :)10:37
wgrantYeah.10:37
wgrantSo.10:37
wgrantWhat we want, I guess, is a quick bit of hackery to work out whether to create an UNAPPROVED or DONE packageupload.10:37
wgrantSince the autoapproval logic will have to be batched.10:37
wgrantAnd is currently lurking in the depths of Archiveuploader the Great.10:37
bigjoolsI already did the policy stuff10:38
bigjoolsjust need to hook it into the PCJ10:38
wgrantDoes it work?10:38
bigjools...10:38
bigjoolsit's just the policy object10:38
bigjoolsit's not *used* yet10:38
wgrantYes, but that doesn't mean it is completely working.10:38
wgranteg. overrides aren't *quite* done yet.10:39
bigjoolsthey're not done at all, until something uses the code in PCJ10:39
bigjoolswhich sort of tells me that we probably need to create the PU in the PCJ10:39
wgrantThe underlying logic is incompletely implemented.10:39
bigjoolswhat logic?10:40
wgrantThe override policies.10:40
wgrantNo multiverse override, no way to handle newness, etc.10:40
wgrantHee hee newness.10:40
wgrantWe still have absolutely no way to handle that.10:40
wgrantBut we'll see.10:40
wgrantAnd/or die.10:40
jmlwgrant: newness is actually a perfectly cromulent word10:41
wgrantjml: It's also a good way to describe the demise of several of the grand plans.10:41
bigjoolsthe newness has to come from the ancestry check10:41
wgrantBut that is yet to be seen.10:41
wgrantbigjools: Sure, that's how we identify it.10:41
wgrantBut we have no way to resolve it.10:41
bigjoolsthat can now be hooked into the PCJ10:41
bigjoolseh?10:41
wgrantYou know how queue overrides are done, right?10:42
bigjools...10:42
wgrantQueue overrides are required for NEWing.10:42
wgrantAnd queue overrides involve mutating the SPR and BPRs.10:42
jtvGrrr how do I get privileges to see +localpackagediffs on my local machine again?10:42
henningeCan somebody give me some help on vocabulary lookup?10:42
wgrantThis doesn't work quite so well in a copying world.10:42
bigjoolssince I wrote a lot of the original code I do have some idea, yes10:42
wgrantjtv: The FF name changed yesterday. Check /+feature-info for hints.10:42
bigjoolsno, we don't ever, ever mutate SPR or BPR10:42
wgrantbigjools: orly.10:43
wgrantLet me find it for you.10:43
bigjoolsif it's happening somewhere it's a bug10:43
wgrantNo, it's just terribly ufly.10:43
wgrantugly.10:43
bigjoolsI changed some code once that did that, so it creates the publication properly10:43
wgrantlololol10:43
wgrantbigjools: PackageUpload.overrideSource.10:44
wgrantCalls SourcePackageRelease.override.10:44
wgrantWhich you may not want to view without an empty stomach.10:44
jtvwgrant: ah great, somebody did something about the "-" issue10:44
henningeI have a lookup code like this in InlineEditPickerWidget: http://paste.ubuntu.com/613120/10:44
henningeThe exported field is an "owner" from IHasOwner. Where is that vocabulary defined?10:45
bigjoolswgrant: too late10:45
wgranthenninge: That's not a vocab.10:46
wgranthenninge: You'd normally use a variant of ValidPersonOrTeam for that.10:46
henningewgrant: I don't understand. What is not a vocabulary?10:47
wgranthenninge: IHasOwner.10:47
wgrantOr owner, even.10:47
bigjoolswgrant: so those overrides are only manual overrides10:48
henningeFTR, this is not code I wrode, I am just trying to understand existing code.10:48
henninges/wrode/wrote/10:48
henningewgrant: The widget gets instantiated like this: http://paste.ubuntu.com/613126/10:49
henningewgrant: ISourcePackageRecipe inherits from IHasOwner10:49
henningeit does not define anything else for owner10:49
henningewgrant: never mind, there it is in the interface10:50
* henninge was blind again10:50
wgrantbigjools: Right, but you need manual overrides when you're NEWing.10:50
bigjoolswgrant: we can make the PCJ code DTRT for non-NEW stuff as it won't hit the queue, but anything that is held and overridden will be a problem :(10:50
henningeUserTeamsParticipationPlusSelf10:50
bigjoolswgrant: this is a nightmare.10:51
wgrantbigjools: Yes, that's what I said :)10:51
wgrantThe demise of several of the grand plans.10:51
bigjoolswgrant: I said it was a zombie nightmare :)10:51
bigjoolswe'll have to have different logic in the manual overrides if it's a PCJ10:51
wgrantYes, but we have nowhere to put them.10:52
bigjoolsgood point.10:52
bigjoolsshit10:52
wgrantRather.10:52
bigjoolswe could dupe the SPR10:52
wgrantYou're a bad person.10:52
bigjools:)10:52
bigjoolsit's no different to what happens when someone uploads manually10:53
bigjoolsbut with no publishing records, wtf else can we do10:53
wgrantWe'd have to store JSON overrides on the PCJ or something.10:53
bigjoolshmmm10:56
lifelessdid you just tell data integrity to go f**k itself bob?10:56
bigjoolsthat means fixing process-accepted10:56
wgrantbigjools: Why is p-a affected?10:57
wgrantlifeless: Yes.10:57
wgrantlifeless: The proper fix for this is too big to consider now.10:57
bigjoolsbecause it creates publications, it'd need to read the json blob with the override10:57
wgrantlifeless: But it's not that hard for one person to retrofit in a week or so.10:57
wgrantI don't think.10:57
wgrantbigjools: No... PCJ creates the publications.10:57
wgrantbigjools: This is not delayed copies.10:57
wgrantbigjools: Your mind is tainted.10:58
bigjoolsnot really10:58
wgrantp-a only creates publications for builds and delayed copies.10:58
wgrantPCJ will create these publications.10:58
bigjoolsok so this is easy, as I first though.  You're the one dropping poison in my head10:58
bigjoolsthought*10:59
wgrantYou still need some new way to store overrides on PCJ.10:59
bigjoolsnope10:59
wgrantOh?10:59
wgrantHow do you propose to do it?10:59
henningelifeless: ping11:07
lifelesshenninge: hi11:08
henningelifeless: Hi, I'd like to discuss my options for fixing bug 77812911:08
_mup_Bug #778129: cannot change owner for recipe - picker shows 'undefined' <regression> <Launchpad itself:In Progress by henninge> < https://launchpad.net/bugs/778129 >11:08
lifelessshoot11:09
henningelifeless: it seems that only few people are affected, namely those that have a lot of team participations.11:09
henningeThe simplest solution would be to increase the number of batches11:09
henningelike from 20 to 30.11:09
lifelessI thought the problem was that 'big' was being assessed in two different ways11:10
lifelesslike, there is one metric that defines 'huge'11:10
henningeThe vocoabulary for this does not provide IHugeVocabulary and therefore no search box is displayed.11:10
lifelessand another that defines 'too many batches'11:10
henningeright, "huge" is by providing the interface11:11
lifelessso, can we provide the interface?11:11
henninge"too many batches" is a fixed literal in the js11:11
henningewe could but then everybody gets it, even if they are only in three teams ...11:12
henningeI mean , the search box.11:12
lifelessso11:12
lifelessperhaps a short + long term fix.11:12
henningeThe most complex solution would be to first peek how many entries there are and only present the searchbox if it exeeds a limit.11:13
henningeyes, so my short term fix would be to increase the number of batches11:14
lifelesshow many items per page ?11:14
henninge611:14
henningei could increase that instead11:14
lifelesswe need to show 230 items11:14
lifeless38 pages11:14
henningewhy 230?11:15
lifelesscody11:15
henninge;-)11:15
henningeok11:15
lifelessthats without a safety margin11:15
lifelessone thing I don't understand11:15
lifelesswhy don't we grab the first page of the vocab, *not* now a total batch, link to 'next' (not 2, 3, 4 etc) and if the first page of the vocab is filled up offer the serch box11:16
lifelessthat seems to me like it would scale low (< 7 items would show a simple page), scale medium (click next a couple of times) and scale indefinitely (folk can search)11:17
henningethat would be my long-term solution.11:17
lifelessI don't know how much work this would be11:17
henningeThe vocab needs to provide IHugeVocabulary because that gives search capability.11:17
lifelessyes, thats pretty easy11:18
henningeI know, just saying11:18
lifelessyeah, agreed.11:18
lifelessanyhow11:18
henningelifeless: I will fix this bug with the short-term solution and file a bug for the complex solution.11:18
lifelessI have no particular view on whether we should invest in the long term solution right now.11:18
lifelessI do think that the inability to use the form is the crucial thing to address11:19
henningeI think it may also tie in with the broken search that was discussed11:19
henningeright11:19
henningeany form that uses this vocab11:19
lifelessits a little odd that the vocab is restricted as it is11:21
lifelesswe used to be able to hand off objects to any user11:21
lifelessbut perhaps I'm out of date11:21
lifelesscertainly teams one is directly related too is a common case11:21
henningeyes, I think so11:22
lifelessthinking slightly bigger picture showing just some sensible teams and allowing a search of either 'my other teams' or 'all people in launchpad'11:22
lifelesswould let things be more flexible11:22
lifelesse.g. the way I found this bug I was handing a recipe off to a new maintainer11:22
lifelessthere was no expectation that there be a team in common11:23
henningeso this really should just be "any team or person"11:23
henninge?11:23
lifelessso another way you could fix this is to change the vocab11:23
henningegood point11:24
lifelessI would consult with sinzui, as master of all abandonded objects11:24
wgrantIn this case it's critical that it be limited to teams of which you are a member.11:24
wgrantIt's used for privilege checking for daily builds.11:24
lifelesswgrant: how so?11:24
lifelesshuh?11:24
wgrantlifeless: The requester of a daily build is the recipe owner.11:24
wgrantThe requester is used for privilege checking on the archive.11:25
lifelessdo you mean 'the only valid owners of the recipe are folk that can upload to the archive' ?11:25
wgrantLaunchpad impersonates the recipe owner when scheduling daily builds.11:26
wgrantSo setting the recipe owner is delegating impersonation rights.11:26
wgrantSo it must only be done by a member of the team selected.11:26
lifelesshang on11:26
lifelessthe dots aren't joining11:27
=== al-maisan is now known as almaisan-away
lifelessI get why we can't use anyone11:27
StevenKwgrant: archiveuploader tests are broken :-(11:27
wgrantStevenK: TYS11:27
wgrantStevenK: But howso?11:27
lifelessbut both henninge and I can upload to the lp ppa11:27
lifelesswhy can't I make a recipe and hand it over to him ?11:27
wgrantlifeless: Because that would be impersonating him.11:27
StevenKwgrant: Wrong number of recipents11:27
wgrantStevenK: Yay11:27
StevenKreference = ['Foo Bar <foo.bar@canonical.com>', 'Foo Bar <foo.bar@canonical.com>']11:28
StevenKactual = ['Foo Bar <foo.bar@canonical.com>']11:28
wgrantHahaha11:28
lifelesswgrant: who does it impersonate when the owner is a team ?11:28
wgrantlifeless: You have an anthropomorphised team.11:29
lifelesswgrant: then I'm missing the issue11:30
lifelessif the impersonation is checking permissions11:30
wgrantHmm?11:30
wgrantIf I set the daily build archive of a recipe I own to be the OEM primary archive, it will fail because I can't upload to the OEM primary archive.11:30
lifelessand the selection of owner is limited to entities with upload on the archive, and I have upload permission as well.11:31
StevenKwgrant: You think those are buggy tests?11:31
lifelesswgrant: right, it shouldn't let you set it to that archive.11:31
wgrantlifeless: Mm, I guess......11:31
wgrantStevenK: I'd work out why it wants a duplicate.11:31
lifelesswgrant: I'm spotting an inconsistency here is my point:11:31
wgrantStevenK: You probably do have a bug in your code.11:31
wgrantStevenK: But the test is also clearly crap.11:31
lifeless - the teams I'm in are not the same as 'folk with upload access to the archive'11:32
lifeless - because those teams are not me, and only *some* of them may grant upload access to the archive11:32
lifeless - so limiting it to those teams does not make sense11:32
lifeless - limiting the selection to entities that *do* have upload access to the archive would make sense, but to prevent privilege escalation I must also have said access.11:33
lifelessright now, I can select a broken team as easily as a working one.11:33
wgrantWe'd need to think about how restricting those would work.11:34
wgrantIt may make some moves impossible.11:34
lifelessI put it to you the right vocab is ICanUploadToArchiveButEmptyIfICannot11:34
wgrantNeeds thought.11:34
wgrantProbably.11:34
lifelessit would make a move impossible where there isn't a common archive that the source and target can both upload to11:35
lifelessto do that move would need a handshake rather than a simple assignment11:35
lifelesshenninge: does anything else use the vocab ?11:35
lifelesshenninge: and have you followed this chatter?11:36
henningeat first I did ...11:36
* henninge reads rest11:36
lifelesswgrant: we could say 'anyone with upload if I have upload, or any team I'm in if I don't have upload' - but thats just an ugly way of permitting a hand-shake to do arbitrary moves.11:37
lifelesswgrant: I think at the point you want to change trust boundaries like that its better to say to folk 'copy the recipe text across and delete the old one'11:38
henningelet me check on the vocab11:39
gmballenap: Hola. Can you take a look at https://code.launchpad.net/~gmb/launchpad/conjoined-oops-bug-106338/+merge/62456 for me?11:40
lifelessbrb11:41
allenapgmb: Sure. I'm looking at a branch for Jeroen right now, but I'll do your's right after that.11:41
gmbOk. No rush.11:41
allenapgmb: I have a sneaking suspicion that the apostrophe was unwarranted.11:42
gmballenap: I'll forgive you THIS ONCE.11:43
allenapThank you :)11:43
henningelifeless: it's also used for Branch and BranchMergeQueue11:44
henningelifeless: anyhhow, I think that discussion is about  a different bug then what I am trying to fix here.11:44
henningeI will go with the short-term/long-term solution that we discussed.11:45
* henninge has to change locations now11:45
=== henninge is now known as henninge-lunch
bigjoolswgrant: you've got mail12:04
wgrantForboding.12:04
wgrantIs it like 100MB or something?12:05
mwhudsonthat's kind of a redundant thing to say to a canonical employee12:06
wgrantHm, only 616KB.12:07
wgrantWhy did it take 2 minutes to download? :/12:07
wgrantbigjools: Why "in different distro"?12:08
wgrantbigjools: PPA -> primary copies should be queued too.12:08
wgrantbigjools: Hm, so the job will run twice?12:08
cjohnstonhenninge-lunch: I'm around when you get back.12:08
bigjoolswgrant: yes it needs to run twice12:09
bigjoolsotherwise webapp requests need to start checking policy and ancestry12:09
wgrantAh, I didn't read your prose.12:09
wgrantThat makes sense.12:09
wgrantI was hoping I could think of a way around that.12:09
wgrantBut I cannot right now.12:09
wgrantEw @ json_data, but it will work.12:09
wgrantdoit.12:09
lifelessjml: I think talking at the very end of my day gets into rambling conversations.12:11
jtvallenap: I'll be away now, so will have to follow up on that review tomorrow.12:12
lifelessjtv: sorry12:12
lifelessjtv: I just cleared my plate !12:12
lifelessjtv: but its really late.12:12
lifelessjtv: lets talk your morning?12:12
jmllifeless: heh12:12
jmllifeless: certainly is the case with me.12:12
jtvlifeless: never mind, it's not needed now!  Will explain another time if desired.12:12
lifelesssure12:13
allenapjtv: Okay, have a good evening. Fwiw, I'll be finished in less than 5 minutes.12:13
jtvOoh@12:13
jtv@12:13
jtv!12:13
jtvsuch temptation.12:13
jtvBut that's how it always goes.  "Just this one more, darling"12:13
jtvAnd then there's yet another bug to fix, another branch to land.12:13
=== jtv is now known as jtv-afk
jmlany maint squad folk around to deal w/ doko's problem?12:14
lifelessjml: I'm not sure I've made sense in my latest mail; be generous reading it :)12:23
lifelessalso python 3 upstream attitude about bytes vs unicode really is starting to depress me12:24
jmlwhat's their attitude?12:25
lifelessit seems to be 'its appropriate for it to be hard to work with bytes, because bytes are not unicode/text'12:25
jmllifeless: it does make sense, thanks. still thinking about the answer to the "where to capture?" question12:25
lifelessthe latter I agree with, the conclusion bogus12:26
lifelessjml: [back to bytes]12:26
lifelessok gnight12:28
wgrantallenap: Ah, nice, we have the actual rabbit log this time!12:50
LPCIBotProject db-devel build #582: STILL FAILING in 4 hr 58 min: https://lpci.wedontsleep.org/job/db-devel/582/12:52
henninge-lunch /nick henninge12:53
=== henninge-lunch is now known as henninge
henningeHi cjohnston!12:57
allenapwgrant: Yes, at last :)13:01
cjohnstonhey henninge13:03
henningecjohnston: hang on, I am preparing something13:06
cjohnstonyup13:06
jmlmrevell: strikethrough doesn't work on the dev wiki. where should I file the bug?13:07
=== matsubara-afk is now known as matsubara
=== almaisan-away is now known as al-maisan
henningecjohnston: are you familiar with doctests and how to read them or would you like me to explain?13:12
henningecjohnston: also, we can do this in voice, if you prefer that ;-)13:13
cjohnstonThat would be fine.13:13
cjohnstonI'm guessing at it, but I think I'm doign ok13:13
henningewhich of the two? ;-)13:13
cjohnstonexplain and voice ;-)13:13
henningecjohnston: I only have our internal Mumble server set up, the other option is skype.13:15
LPCIBotProject windmill-devel build #142: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-devel/142/13:22
henningecjohnston: one thing I saw that may be confusing is that one of the tests is run four times.13:24
henningethat's a bug in our test suite13:24
cjohnstonok13:24
wgranthenninge: Are you sure? It's not run once for each implementation of an interface?13:24
henningewgrant: it's a doctest13:25
henningebugnotificationrecipients.txt13:25
henningewgrant: http://paste.ubuntu.com/613205/13:25
wgranthenninge: Ah, it's run in four different DB users.13:26
henningeah, ok13:26
henningeI remembered jtv reporting tests being run multiple times13:26
henningeanyway13:26
henningecjohnston: we'll only have to deal with it once, though.13:27
cjohnstonok.. cool13:27
henningecjohnston: but first I have this: http://paste.ubuntu.com/613206/13:27
henningethat's the output of the other two failing doctests. I pasted it so we have linen numbers to talk about.13:28
cjohnstonok13:28
henningecjohnston: doctest will output a lot of context that is not really failing but look like it.13:28
cjohnstonmy thought is  ^^^^^^^^^^^^ is what we are looking at?13:29
henningein this case, the actual failure is on lines 87-8913:29
cjohnstonok.. so I was in the right area atleast13:29
henningethe other differences it points out is where it matched '...' to '--' on the page.13:30
henningedo you have a local copy of the branch?13:30
henningewell, you should13:31
cjohnstonyes13:31
henningeso, in lib/lp/bugs/doc/bugnotification-sending.txt line 68 is where this starts13:31
henningethat's what line 24 in the diff tells us13:31
henningescrolling down, line 123 is where the text needs to be adapted to the new wording13:32
cjohnstonso just s/xx/xx to make it match?13:33
henningeright13:33
henningedoctests don't care about line breaks, so you can fit it nicely in the 78 columns limit13:34
cjohnstonok.. That one is done.13:34
henningecool, next one13:35
henningeline 32313:35
henninge(line 101 of the diff)13:35
cjohnstonyup13:35
henningeyou are aware of the meaning of '...'13:36
henninge?13:36
henningeIt just maches any text13:36
cjohnstonno13:36
cjohnstonok13:36
henningeline 105 of the diff shows you what the test saw, starts with a '+'13:37
henningelines 106-114 show you what it expected13:37
cjohnstonright.13:37
henningethat's from the doctest line 324...13:37
henningeThe first one starts with [...13:38
henningeso there it eats any text it finds until the next text fits13:38
cjohnstonhttp://paste.ubuntu.com/613218/13:38
henningeFor this array literal it means ignoring the first elements until the '-- ' element.13:39
gmballenap: Thanks for t'review. I'll make the change you suggest.13:39
henningecjohnston: perfect!13:40
henninge... and here I am explaining13:40
henninge;-)13:40
cjohnstonwell.. learning what the stuff means is more helpful than just being able to s/xx/xx13:40
henningeright13:41
henninge;)13:41
cjohnstonso the next issue is 152 of the diff?13:41
henningeyup13:41
cjohnstonbugnotification-sending.txt 43713:41
henningeright13:41
mrevelljml, https://bugs.launchpad.net/launchpad-dev-moin-theme/13:42
henningecjohnston: bug line 162 of the diff also says that it is missing the unsubscribe footer.13:42
henningehm13:42
cjohnstonI don't understand what 173/175 means13:43
henningecjohnston: there is a ... that is replaced by an 1813:43
henningeit's not a failure although the output makes it look like one13:44
cjohnstonok13:44
cjohnstonso the test is bug 18 I guess?13:44
_mup_Bug #18: RFE: I'd like to be CC:d automatically to bugs I report <feature> <lp-bugs> <Launchpad itself:Fix Released by bradb> < https://launchpad.net/bugs/18 >13:44
henningethe test does not care about the bug number, that's why the ... is there13:44
henningebut when the test is run it happens to be 18, yes.13:44
cjohnstonok13:45
henningeline 184 is the actual failure13:45
cjohnstonright.13:45
henningeand line 196 is ok, just a trailing ... to leave the dummy text out of the test.13:45
cjohnstonok13:46
cjohnstonthe next one I'm kinda condused about.. starting at 20113:46
henningeyeah, I was just wondering waht's going on there13:46
jmlmrevell: thanks.13:49
henningecjohnston: I am not quite sure but it seems the test runner is getting mixed up a bit.13:49
henningeI would let this one be for now and go to the next one.13:50
cjohnstonok13:50
henningeonce we fix all places that we can spot, we can re-run the test and see if it fits now.13:50
henningethe next one is line 242 of the diff13:50
henningecjohnston: I mean, you know what you changed and it should not affect anything else.13:51
henningeJust look for where those phrases appear and adapt them in the test.13:52
henningeline 27213:52
henningeline 32213:53
cjohnstonI'm up to 40013:53
cjohnston;-)13:53
henningecool13:53
henninge419, actually ;)13:53
cjohnstonthere isnt anything wrong with 416 is there?13:53
henningeno, it appears on 42113:54
henningeit's just different line wrapping in the test and the actual output.13:54
henningeonce all the text fits, the line wrapping is ignored, as it should be.13:54
cjohnstonI almost wonder if it should be "which is subscribed to this bug report."13:58
bigjoolswould anyone care to have a pre-imp chat with me about a change to the Job system?13:58
bigjoolsjust the man14:00
henningecjohnston, bigjools: we are having our team call now ;)14:00
bigjoolsabentley: good morning.  When you have a moment can I have a chat with you about a change I would like to make the Job system?14:01
cjohnstonhenninge: I'm down to line 1263 looking for anything else. how do I fix those? just edit unsubscribe to Edit Subscription?14:01
abentleybigjools: sure.  I'll be free in a few minutes.14:01
bigjoolsabentley: thanks.  shouldn't take long14:01
henningecjohnston: re-run the test when you are done to see if anything else fails14:02
henningebin/test -vvt bugnotification-sending.txt14:02
cjohnstonhenninge: I have no idea how/where to do that14:12
henningecjohnston: run the test?14:12
henningecjohnston: is that what you mean?14:13
cjohnstonyes14:13
henningedo you have a working launchpad setup or were you just working on the branches?14:14
jmloff for lunch14:14
cjohnstonjust working on branches14:14
cjohnstonI thought just editing text wouldn't be a big deal.. I guess I was wrong. ;-) lol14:14
cjohnstonhttps://code.launchpad.net/~chrisjohnston/launchpad/land-chrisjohnston-187013-197793-48337314:15
henningeyeah, Ill run the test for you, np.14:15
cjohnstonDo I want to know what all of those things that got added in my branch are?14:16
henningewhat things?14:18
cjohnstonif you look at that branch theres 20 files added14:18
cjohnstonhttp://bazaar.launchpad.net/~chrisjohnston/launchpad/land-chrisjohnston-187013-197793-483373/revision/1304714:18
henningewhat did you do to get this branch?14:20
cjohnstonI just merged in your branch made the changes and pushed back14:20
henningeright14:20
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: allenap, jcsackett | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:209 - 0:[######=_]:256
henningemy branch is based on a current (at the time) devel, so merging my branch pulls in all the changes that have been merged since you branched devel.14:21
StevenKwgrant: ec2 returned -- it is only the seven archiveuploader tests.14:21
wgrantStevenK: Good news.14:21
henningecjohnston: You can ignore those but you should have committed after merging.14:21
henningebzr merge lp:...14:22
henningebzr commit -m"Merged such-and-such"14:22
cjohnstonok14:22
henningeor in this case it actually would have been best to just create a new branch from my branch.14:23
henningebzr branch lp:~henninge/launchpad/land-chrisjohnston-187013-197793-48337314:23
henningeif you could do that and then manually copy the changes to the doctest into that branch, I think it would be cleaner.14:24
cjohnstonworking on it14:24
henningeI mean, just copy the doctest file you changed.14:24
cjohnstonyup14:24
henningeand then do "push --overwrite" if you want to continue using the branch name.14:25
cjohnstonok14:25
abentleybigjools: I'm free to chat.14:33
bigjoolsabentley: great, mumble?14:33
abentleybigjools: sure.14:33
cjohnstonhenninge: https://code.launchpad.net/~chrisjohnston/launchpad/land-chrisjohnston-187013-197793-48337314:39
henningecjohnston: still failing but less. Let me see what might be going wrong.14:44
* henninge aims at deryck ....15:22
henninge... POW! http://paste.ubuntu.com/613269/15:22
deryckhenninge, on call, just a minute15:22
henningederyck: nm, you're dead15:23
henningecjohnston: that ^^ is the reason why the unsubscribe link is missing.15:23
bigjoolsabentley: should the new exception handler do anything with incomplete_jobs?15:24
abentleybigjools: Yes, when a job is suspended, it should be added to incomplete_jobs.15:25
bigjoolsok thanks15:26
cjohnstonhenninge: I'm not sure I understand whats wrong15:26
henningecjohnston: that code is searching for "direct subscriber"  in order to determine if it should add the unsubscribe link.15:28
cjohnstonok15:28
henningelike the XXX correctly points out, that is not a good way because it is fragile.15:29
henningelike we saw now - change the wording, and it breaks.15:29
cjohnstonya.. So maybe if 'subscribed to the bug' and not 'member of' ?15:30
* jcsackett is starting to hate his computer.15:35
bigjoolsabentley: when you're ready -> https://code.launchpad.net/~julian-edwards/launchpad/suspend-running-jobs-bug-788612/+merge/6249415:43
abentleybigjools: ack15:43
bigjoolsthanks15:43
=== al-maisan is now known as almaisan-away
cjohnstonhenninge: https://code.launchpad.net/~chrisjohnston/launchpad/land-chrisjohnston-187013-197793-48337315:47
henningecjohnston: yup, that's the fix15:50
cjohnston:-)15:50
henningecjohnston: there is still a failure  in line 178 http://paste.ubuntu.com/613283/15:52
henningean lingering " a"15:52
henninges/an/a/15:53
cjohnstonpushed15:54
henningecool, bugnotification-sending.txt is passing now! ;-)15:55
henningecjohnston: here is how "subscribing.txt" is failing15:58
jcsackettsinzui: chat?15:58
henningehttp://paste.ubuntu.com/613288/15:59
sinzuijcsackett: yes15:59
cjohnstonhenninge: s/Unsubscribe/Edit Subscription?16:00
henningecjohnston: right! I was trying to remember what might have changed here ... ;-)16:00
cjohnstonI'm not sure totally how to read this one16:00
deryckhenninge, hi.  ready for our call when you are.16:02
henningederyck: one moment16:02
deryckhenninge, np16:02
cjohnston>>> unsubit = browser.getControl(name='unsubscribe')  what are the requirements for that? is 'Edit Subscription' valid?16:03
cjohnstonwait... that should be unsubscribe16:03
henningecjohnston: well, the remaining failures may just be results of the initial failure. That is one of the problems with doctests.16:03
henningelet's see if the test passes with that first fix ...16:03
cjohnstonpushed16:04
henningeit's "Update Subscription"16:05
cjohnstonI changed it, you would think I would know that.. lol16:06
cjohnstondone16:06
henningecjohnston: there is one more getLink('Unsubscribe')16:09
henningecjohnston: I have to be otp now.16:09
cjohnstonok16:10
cjohnstonhenninge: your talking about line 105? The way the text reads is that is the button that you click to unsubscribe no?16:10
henningecjohnston: ok, back16:24
cjohnston:-)16:24
henningeline 105 is clicking on the link, then the test browser goes the next page and finds the actual unsubscribe button.16:24
henningeso line 105 needs to be updated for the test to pass16:25
cjohnstonok16:25
jcsackettderyck: would you have an opportunity to talk javascript picker with me by any chance?16:27
deryckjcsackett, I've been on calls non-stop since I logged on.  Can we wait 30 minutes to and hour and let me wrap a couple loose ends first?16:28
cjohnstondone henninge16:28
deryckif you're blocked and it's critical, I can manage the time.16:28
jcsacketti'm semi-blocked, but i can certainly wait 30 minutes to give you a rest.16:29
henningecjohnston: passing ;-)16:29
gary_posterallenap, you around?16:29
jcsacketti'll ping you again in a bit then, deryck. thanks in advance.16:29
allenapgary_poster: Yeah, hi.16:29
allenapGot a branch for me?16:29
deryckjcsackett, thanks.  and it's not rest.  :-)  I need to finish somethings from the calls before I loose the thought or note. ;)16:30
gary_posterhey allenap.  No, this is more in line of "picking malone dev's brain." :-) Do you happen to know anything about how we process incoming mail for comments?  In particular, do you know if we honor SPF records when we are processing mail?  Context: someone has had their account suspended because the account is being used to send spam.16:33
gary_posterThey say they do not use web mail, and only use kubuntu, and have SPF records for their domain, so I am trying to see if I can give a scenario for this happening other than "your box or your webserver have probably been hacked, sorry."16:33
henningecjohnston: here is the output for bugnotificationrecipients.txt http://paste.ubuntu.com/613310/16:34
allenapgary_poster: I have no knowledge that we check SPF in Launchpad. Martin Pool is probably the most versed in Launchpad's mail code right now, but I suspect SPF would be a question for the LOSAs or IS.16:34
gary_posterok cool, thanks allenap16:35
henningecjohnston: Thats all just replacements of the wording, towards the end of each section.16:35
henningeeasy ;)16:35
henningecjohnston: and finally http://paste.ubuntu.com/613313/16:38
henningeThe error is on line 22. It's searching for "duplicate bug (17)" but now it's "duplicate bug report (17)"16:39
henningeline 20 of the diff tells you that it fails on line 62 of the test16:40
abentleybigjools: r=me.  I would call it "SuspendJob", not "SuspendJobError", because it's one of those rare exceptions that doesn't indicate an error.16:41
henningecjohnston: EOD for me. Just push what you got and email me a reminder, I will take care of it tomorrow.16:41
bigjoolsabentley: yeah I thought about that one, I just wanted it to "look" like an exception16:42
cjohnstonThanks henninge16:42
cjohnstonHave a good night!16:42
bigjoolsabentley: I'll change it, thanks16:42
bigjoolsabentley: although, SuspendJob looks like a type of Job :)16:42
abentleybigjools: SuspendJobException?  Anyhow, no big deal.16:42
bigjoolsyeah that's better16:43
jmlgood grief16:46
jmlthunder16:46
jmlin London16:46
timrcNoticed the topic in #launchpad-reviews.  Is this a permanent change?  If so, can someone please change #launchpad-reviews to #launchpad-dev in Step1, https://dev.launchpad.net/PatchSubmission16:47
henningecjohnston: you have a good day ;-)16:51
cjohnstonThanks :-)16:51
timrcbigjools (+ friends), I'm looking at #724740... before I talk about my implementation idea, I've noticed (what seems to be) an inconsistency with how we set buildd_secret... in lib/lp/soyuz/model/archive.py we use create_unique_token_for_table(20, Archive.buildd_secret) whereas in lib/lp/soyuz/browser/archive.py we use "create_token(16)... should that not be create_token(20) or visa-versa ?16:52
_mup_Bug #724740: setting a ppa private cannot be done over the API <api> <oem-services> <ppa> <Launchpad itself:Triaged> < https://launchpad.net/bugs/724740 >16:52
bigjoolstimrc: yeah they could be the same, it doesn't really matter though.17:01
timrcbigjools, ah ok17:01
bigjoolsit's just the length of the auto-generated password17:01
bigjoolsand it's not about size, it's about what you do with it :)17:01
timrcbigjools, lol17:01
timrcallenap, jcsackett: do you have some time today to discuss #724740 ?17:01
_mup_Bug #724740: setting a ppa private cannot be done over the API <api> <oem-services> <ppa> <Launchpad itself:Triaged> < https://launchpad.net/bugs/724740 >17:01
jcsacketttimrc: the ppa machinery is well out of my experience, i'm afriad. you would be better served with someone else. not sure about allenap, but i think he's approaching the end of his day.17:01
jcsackettderyck: had enough time to collate your thoughts from earlier calls?17:01
timrcjcsackett, okay :) so who are your ppa gurus and do you guys rotate the ocr responsibility?17:01
timrcis there a schedule that I can view so I know when to nag17:01
deryckjcsackett, yes.  5 more minutes.  I'm only marveling at my new found net fame.  But need to grab a coke.17:01
bigjoolsjcsackett: you don;t need to know anything about PPAs, it's about setting a property over the API that we don't want all and sundry to do17:01
jcsackettbigjools: ah, i see.17:01
jcsacketttimrc: i probably can help with that, but i'm about to be otp and then out for a bit. i can ping you later to talk about API stuff, if you like.17:02
allenaptimrc: Sorry, I have almost no PPA knowledge, and I will be afk in a short while too.17:02
jcsacketttimrc: off the top of my head, i believe benji might be able to help you out if you need assistance ASAP, though i don't know about his current availability.17:02
timrcthe change as I see it basically making the private attribute on IArchivePublic read-only, creating a mutator for it (e.g. setPrivate), and then placing the validator code into this mutator along with the logic to set the private attribute and the buildd_secret if it does not exist17:03
jcsackettperhaps ASAP isn't quite right, given that. :-P17:03
timrc(and the ppa was set to private)17:03
bigjoolstimrc: that sounds ok to me, what would the validator look like?17:04
bigjoolsie. who can do it? :)17:04
deryckjcsackett, drag me where you want or meet me in orange.17:06
jcsackettderyck: mumble is apparently rejecting my password. one sec.17:06
deryckjcsackett, np17:06
timrcbigjools, the validator is the exact same validator that's currently used on the property17:06
bigjoolstimrc: ok, and the zope security will ensure it's only commercial admins who can do it17:07
timrc bigjools, e.g: _validate_archive_privacy17:07
timrcbigjools, ok, well I'm going to assign the bug to me and proceed with the implementation if that's okay with you17:10
bigjoolstimrc: sounds great17:11
bigjoolsthanks for contributing17:11
jmlI'm going offline for a bit. Will see you all tomorrow, most likely.17:12
bigjoolscircular imports BLOW17:12
jmlyeah, it's a glitch in Python.17:15
bigjoolsor, I am being a moron17:15
jmlHmm. I've had the same issue.17:16
jmlWhat version are you using?17:16
bigjoolsnothing to see here, move along17:16
jmlloggerhead         1417:17
jmllaunchpad-buildd    317:17
jmllaunchpadlib        217:17
jmllazr.delegates      117:17
jmloops-tools          117:17
=== matsubara is now known as matsubara-lunch
jmlbye for real.17:22
bigjoolscheerio17:22
LPCIBotYippie, build fixed!17:29
LPCIBotProject db-devel build #583: FIXED in 4 hr 36 min: https://lpci.wedontsleep.org/job/db-devel/583/17:29
=== salgado is now known as salgado-lunch
=== jcsackett is now known as jcsackett-lunch
LPCIBotProject windmill-db-devel build #327: STILL FAILING in 1 hr 7 min: https://lpci.wedontsleep.org/job/windmill-db-devel/327/17:36
jkakarIt's sad that price is coming as a reason to use GitHub over Launchpad (for private projects).17:43
jkakarIt'd be nice if Launchpad just set the prices to the same as GitHub.17:44
bigjoolscan anyone think of any SQLObject model classes that have a FK to a StormBase model class?17:53
sinzuibigjools: Nothing comes to mind17:59
bigjoolswell I am trying to do just that and getting:18:00
bigjoolsPropertyPathError: Path 'PackageCopyJob.<primary key>' matches no known property.18:00
bigjoolswhere PackageCopyJob is the FK table18:00
abentleyI mean https://code.launchpad.net/~abentley/launchpad/handle-concurrent/+merge/6251118:25
abentleysinzui: I am looking at bug #595166.  ISTM that the root issue is that we expect process-mail to have new messages as its input, not existing ones.  Shouldn't it discard messages that are dupes?19:07
_mup_Bug #595166: IntegrityError raised filing a bug using the email interface <easy> <email> <lp-bugs> <oops> <Launchpad itself:Triaged> < https://launchpad.net/bugs/595166 >19:07
abentleyderyck[lunch]: pre-implementation call when you're back?19:11
=== jcsackett-lunch is now known as jcsackett
jcsackettabentley: sorry for the delay, looking at your branch now.19:14
abentleyjcsackett: s'okay.19:15
sinzuiabentley: I am re reading.this to remember is this really is a spam issue19:15
abentleysinzui: I don't see this being a spam issue unless an identical spam message gets sent to bugs twice.  Non-identical messages with the same msgid produce different messages.19:16
sinzuiabentley: I think we really do want to discard messages from dupes19:16
abentleysinzui: cool, thanks.19:17
sinzuiabentley: I investigate three cases. All were different messages with differnt spam links from different people, but the message ids were the sam19:17
sinzuisame19:17
abentleysinzui: Was the original message spam, or had the content changed?19:18
sinzuiyes the orginal was spam.19:18
abentleysinzui: cool.19:18
sinzuino client/process should reused an id, so if someone stole another users legitimate message, we want to reject that oo19:18
sinzuitoo19:18
=== deryck[lunch] is now known as deryck
benjianyone have pointers to how mailing lists work in LP?  I have a user that isn't getting emails he sends to the list19:30
benjiperhaps user's don't get their own messages?19:30
sinzuibenji: I can help19:34
sinzuibenji: 1. verify lp shows he is subscribed.19:34
benjisinzui: https://launchpad.net/~syncany-team/+mailing-list-subscribers shows him as subscribed19:35
sinzuibenji: 2. verify he is sending with a registered email address (lp rejects those it does not know about)19:35
benjihe is19:35
sinzuibenji: 3. is the message in the archive? This is dodgy because there can be a backlog19:36
benjian unrelated CHR question: is hiding non-spam comments at the commentor's request ok? (he was confused when he commented and doesn't want to spread confusion)19:36
sinzuiwow, the empty archive view is bad...19:36
benjire. archive: not yet19:36
sinzuiI think there means something else19:36
benjiI was wondering if LP and MM aren't in sync19:37
sinzuiI tested an empty archive view a few weeks ago. I it pretty19:37
sinzuibenji: I think you are right. when we call create list, the archive is setup and we expect 2 index pages19:38
sinzuidate and thread19:38
* sinzui reads code to learn the order of events.19:39
sinzuioh, we create the directory, but do not call mhonarc because there is nothing to do19:40
benjisinzui: he just said that the first message showed up (https://lists.launchpad.net/syncany-team/)19:40
sinzuibenji: regardless of nhonarc, we know that mm knows about the list because it made the dir and it sent back the success message19:41
jcsackettabentley: r=me, with a comment on the MP.19:41
abentleyjcsackett: thanks!19:42
jcsackettbenji: it's fine to hide a confused comment at the commentor's request.19:42
jcsackettthe control was changed to "Hide comment" for precisely that reason. spam is not the only reason we hide things.19:42
benjijcsackett: great! thanks19:43
jcsackettsinzui: have a few moments to chat?19:48
sinzuibenji, I was going to point you to a bug about the delay in the mailing list archive, but I do no see it.19:48
sinzuijcsackett: I can talk19:48
sinzuimumble or sip?19:48
jcsacketti'm good with either. are you already on mumble?19:49
benjisinzui: no problem, thanks for all your help!19:49
=== almaisan-away is now known as al-maisan
lifelessmornink20:51
* benji suspects lifeless has been replaced by a Russian imposter.20:53
lifelessin soviet russia, bugs close you20:53
jcsackettthat sounds ominous.20:54
benjilol20:55
lifelessflacoste: on bug 419531 - are you aware that the same thing makes the legacy input box unusable in those situations ?20:57
_mup_Bug #419531: project name picker search / vocabulary is hard/impossible to use (too many results on exact searches) <disclosure> <project-picker> <vocabulary> <Launchpad itself:Triaged> < https://launchpad.net/bugs/419531 >20:57
=== al-maisan is now known as almaisan-away
bacjcsackett: you have time for a review?21:09
flacostelifeless: it doesn't21:09
lifelessflacoste: its a different cause?21:09
jcsackettbac: sure.21:09
bacjcsackett: https://code.launchpad.net/~bac/launchpad/bug-750984/+merge/6254321:10
sinzuiMy team is work in that bug in the next two weeks, I have refrained from the niggling about its importance21:10
lifelesssinzui: sure21:10
lifelessand I'm ecstatic21:10
flacostelifeless: ok, if you mean that the Choose button suffers from the same bug, yes, that's true, but the previous popup suffered from the same problem there21:10
* sinzui think the search on summary and description leads to false matches21:10
flacostelifeless: but you can still enter 'launchpad' in the input box like you used to and it will accept your input21:10
lifelessah yes21:11
lifelessmmm21:11
lifelessthis evaluation of regression is inconsistent with our bug triage docs & critical escalation rules. So I think we need to revisit them.21:12
flacostehow is it inconsistent21:14
flacoste?21:14
flacosteand fwiw, deryck is working on clarifications to the bugtriage rule concerning UI issues21:15
lifelessthats great21:15
lifelesshttps://dev.launchpad.net/PolicyAndProcess/ZeroOOPSPolicy21:15
lifelessThis mean that any user-visible error happening in production is a stop-the-line event and should be fixed ASAP21:15
deryckyeah, I'm really not try to niggle, as sinzui called. ;)  Just want to be clear about when something is critical or not.21:15
lifelesswhen we last spoke about, we decided js errors count as oopses21:16
sinzuilifeless: I believe there is a regression. The current code does not scale to the volume of projects we have now. The vocabulary uses searching-like behaviour which did work for a small set of project (with poor summaries and descriptions).21:16
lifelessand the motivation is solving problems users see promptly21:16
lifelesssinzui: I do too21:16
lifelesssinzui: but opinions differ21:16
flacostei probably does need clarifications21:17
sinzuiThe useless number of results is because it matches "launchpad" or "ubuntu" in the project summary or description, but the user is thinking of the name or displayname21:17
flacostebut for the record21:17
flacostei don't see any regression here21:17
flacostenor any JS OOPS21:17
lifelessflacoste: I'm looking at the spirit not the legals :)21:17
flacostei do too21:18
flacoste:-)21:18
flacosteif this was new work21:18
flacosteand would have been caught during acceptance testing, it would have warranted a High bug21:18
lifelessreally?21:18
lifelessI would have marked something like this qa-bad and reverted.21:18
lifelessI am sure others in the team would have too - in fact we have done so in the last few months21:19
flacostethat doesn't match current practice21:19
flacostein some case we have reverted21:19
flacostein others we haven't21:20
lifelessthen current practice is inconsistent :)21:20
deryckfeature flags protect us, and prevent having to revert in some cases.21:20
flacostei think it is consistent21:20
=== mwhudson_ is now known as mwhudson
flacostewith applying common sense judgement21:20
flacosteabout when the error is found21:20
flacosteand what's the impact of the error21:20
flacosteremember that exploratory testing happens after deployment21:21
flacosteso it's after the qa-bad step21:21
lifelessflacoste: qa happens before deployment21:21
flacostei wouldn't thinkg the suitability for deployment check would have caught such a corner case21:21
flacostei might have confused you21:22
flacosteby saying acceptance testing21:22
lifelessflacoste: its not such a corner case though21:22
flacostewhen i really meant exploratory testing21:22
lifelessno, I knew you meant at the stakeholder-check phase21:22
flacosteyeah, that's after deployment21:22
lifelesswhich is nicely decoupled from deploys now21:22
flacosteagain confusion with the terms21:22
flacostei mean live on production (maybe behind a feature flag)21:23
flacostebut that's after qa-bad has any significance21:23
lifelessyes, I know, there is no confusion21:23
lifelessif its behind a feature flag it would not get qa-bad21:23
lifelessif someone noticed during qa21:23
flacosteof then we are saying the same thing then :-)21:23
lifelessand this is such a glaring issue, I'm reaonably sure someone would have noticed21:23
lifelessI usually test with launchpad itself on qastaging21:23
pooliehi lifeless21:24
pooliesorry about https://bugs.launchpad.net/bugs/78680421:24
_mup_Bug #786804: branch scanner rlimit failures cause the next branch to be incorrectly scanned and fail <oops> <regression> <Launchpad itself:Triaged> < https://launchpad.net/bugs/786804 >21:24
flacosteanyway, this is speculative at this stage21:24
lifelessflacoste: the regression angle i'm arguing is that the user story we had got broken21:24
lifelessflacoste: I know there are workarounds but the old story - including doing a choose based search - *no longer works*21:24
flacosteyeah, from my point of view, there is no additional breakage21:24
lifelessflacoste: and that is the *classic* definition of a regression.21:25
flacostei'm arguing it didn't work before21:25
flacostefrom the user point of view21:25
flacostein both case, the work-around was the same21:25
flacosteenter the project name textually in the input box21:25
lifelessflacoste: what happened before?21:25
flacostethat hasn't regressed21:25
flacosteyou just had too many results to sift through21:25
flacostebecause we never ranked the result sanely21:26
flacostelaunchpad wasn't in the first page of results21:26
flacostemight be hidden on the second or third page21:26
flacostewhich is just as bad21:26
flacosteas saying: 'sorry dude, try again'21:26
lifelessflacoste: but its not equivalent - annoying vs impossible21:26
flacostei bet there is a bug about that21:26
flacostesemantic21:26
lifelesspoolie: thats fine; we traded 'the system dies in a fire' for 'bad jobs die quickly and oh we have missing code around handling such deaths'21:28
lifelesspoolie: its a move forward overall21:28
lifelessderyck: feature flags are intensely useful21:28
lifelessflacoste: so, it returns 464 items21:28
lifelessflacoste: which is pretty useless21:28
lifelessflacoste: for launchpad itself21:29
lifelesssearching for bazaar returns 32021:29
lifelessand AIUI the vocab wasn't changed21:29
flacosteyep21:29
lifelessso - I buy your analysis on this one21:30
flacostelifeless: bug 25528221:32
_mup_Bug #255282: The string "launchpad" is hard to find in the Projects search <lp-foundations> <Launchpad itself:Triaged> < https://launchpad.net/bugs/255282 >21:32
lifelesshahahaha21:33
lifelesssinzui: would it make your life hard if I dupe these ?21:33
flacosteit would appear on page 5!21:33
deryckwe can all agree: if there's a dupe, it's not a regression! Consensus, yay! :-) :-)21:33
flacoste2008-08-06: "I'd go so far as to say that the project search pop-up is rendered so useless by this almost-but-not-quite findable presentation that it perhaps ought to be removed until it can be fixed. I"21:33
lifelessderyck: heh. orthogonal I think :P21:34
sinzuilifeless: they are not the same :(21:34
lifelesssinzui: in that you can fix one without the other ? ok.21:34
deryckdang you sinzui  ;)21:34
sinzuilifeless: ProductSet find methods are not vocabulary lookup methods21:35
lifelesssinzui: huh, thats the vocab in use with the old UI, isn't it ?21:36
sinzuiI noted to wgrant and jcsackett a few days ago that I was concern that PersonSet.findPerson() and the person vocabularies were both inconsistent and do not appear to know what use case they serve21:36
flacostesinzui: bug 255282 is about the Choose widget which uses a vocabulary21:36
_mup_Bug #255282: The string "launchpad" is hard to find in the Projects search <lp-foundations> <Launchpad itself:Triaged> < https://launchpad.net/bugs/255282 >21:36
sinzuiThis is true for several set vs vocabs and I would like dry code21:36
flacostesinzui: i agree that it would be sane to use the model's find() method from the vocabulary21:37
sinzuiflacoste: sorry I thought it was about /projects21:37
lifelesssinzui: I would like that too; I don't see that this is a case of that though. They describe the same widget as it used to be.21:37
lifelessI would like to dupe these on the old one and update its metadata.21:37
lifelesssinzui: will that cause you any difficulty?21:37
flacostethere is a slight variation21:37
sinzuiThey It is a dupe. I did fix the tags a moment ago though21:38
flacostein that the new widget should allow exact match selection21:38
flacosteeven if there are too many results for the search21:38
lifelessflacoste: thats about how we fix it21:38
flacosteyeah, agreed21:38
lifelessI think bugs should be separate if we're liable/reasonably going to fix one without the other21:38
lifelessbut I don't think that applies here21:39
sinzuiflacoste: the project vocan does not attempt to rank the quality of matches. people does, but I am given to understand the rank is dropped in a late step in the process :(21:39
lifelessok21:41
poolielifeless: glad to hear you think it's a step forward; on the whole so do i21:42
lifelessI've made the old one the master, moved the metadata across.21:42
lifelessEOF, next topic :)21:42
=== salgado is now known as salgado-bbl
lifelesssinzui: please let me know if/when you'd like me to chat with you guys.22:08
poolielifeless: should i feel the ulimit fallout is my obligation to address?22:16
lifelesspoolie: no22:20
lifelesspoolie: but I'd be delighted if you were to do so22:21
pooliei proposed some ideas22:24
poolielet me know what you think22:24
pooliei won't treat it as personally critical then, but i may try something22:25
bigjoolscan someone please look at this zope proxy problem I have and tell me where I am being completely stupid   http://pastebin.ubuntu.com/613493/22:54
lifelessdo you have access to the attribute?23:08
lifelessif verifyObject runs as you, it might fail if you can't access the attribute23:08
bigjoolslifeless: branch is here: https://code.launchpad.net/~julian-edwards/launchpad/packageupload-with-pcj23:15
bigjoolsah cock23:15
=== salgado-bbl is now known as salgado
bigjoolsit's an old-style zcml declaration with explicit properties instead of interfaces23:16
lifelessyup23:16
bigjoolsI hate soyuz23:16
lifelessonly cause it hates you23:16
bigjoolsin soviet russia ...23:17
bigjoolsthis is a good time to get the last ditch battery warning23:17
bigjoolsgood night!23:18
lifelessnn23:18
bigjoolslifeless: can I push without a repack happening?23:21
thumperemail processing is fucked23:30
thumperI just checked the logs23:30
thumpernot sure how long it has been fucked for though23:30
thumperat least an hour23:30
lifelessdetails!23:30
thumper2011-05-26 22:18:23 ERROR   An exception was raised inside the handler:23:30
thumperhttp://launchpadlibrarian.net/72491135/1052aa70-87e6-11e0-a1bd-001e0bc3957e.txt23:30
thumper -> http://launchpadlibrarian.net/72491136/9DXUl51Txcr83QLvOBe5YOGwyvJ.txt (Msg <1306439950.10927.2.camel@nbjplevy> size 12930186 exceeds limit 10485760)23:30
thumperevery 30 seconds23:30
thumperfailing on the same incoming email message23:31
mwhudsonwhoops23:43
wgrantsinzui: The pickers and vocabs are pretty bad, yeah :(23:44
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:209 - 0:[######=_]:256

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