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

sinzuiwgrant, mumble?00:18
LPCIBotProject windmill-db-devel build #320: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-db-devel/320/00:21
abentleylifeless: re your service-based Launchpad idea, it would be really nice to eliminate branch scanning and just have a service to query the branches.00:31
* wallyworld_ needs caffeine stat!00:40
* thumper passes wallyworld_ the IV00:41
lifelessabentley: In principle yes00:56
lifelessabentley: I wonder if bzr is quite fast enough yet00:57
lifelessabentley: I think there are some things we'd want to have caches for - e.g. 'show me branches that have new work' might want a fast graph query00:58
mwhudsona nice thing about a SOA is that you can make that change independent of more or less everything else00:58
lifelessyes indeed!00:58
LPCIBotProject windmill-devel build #132: STILL FAILING in 1 hr 10 min: https://lpci.wedontsleep.org/job/windmill-devel/132/01:37
abentleylifeless: I think that it probably is fast enough, considering there's no invocation time.  Fast graph traversal is a service you were already going to provide, right?01:41
abentleylifeless: by invocation, I mean bzrlib import cost.01:42
lifelessabentley: right; I think it depends on the particular bit of bzrlib we're talking about01:42
lifelessabentley: things like extracting a file can still do substantial IO, grabbing a revision should be pretty quick01:43
lifelessabentley: and it will depend on what we're doing whether a particular thing works / doesn't.01:43
lifelessabentley: where it will, I think using the branches directly is a good idea.01:43
abentleylifeless: The data we currently retrieve from scans doesn't include files, though.  It's mostly revision ids and a revision graph.01:44
lifelessabentley: given the complexity of bzrlib, memory footprint etc, I'd be inclined to have a webservice - say loggerhead :) - providing this, and it be backed by the raw branches01:44
abentleylifeless: Yes, this is what I meant by "a service to query the branches".  I didn't mean using the bzr protocol.01:45
lifelessabentley: we may still need scanning to populate a graph cache for graph queries, but it could stop being relevant for viewing the recent commits in the web UI01:45
lifelessabentley: cool01:46
lifelessabentley: did you know loggerhead has a json API already?01:46
abentleylifeless: You did mention it before, but I hadn't thought about it.01:46
wgrantHow complete is it?01:46
lifelesstopically, gustavo wants an API to query branch revision tips for principia01:47
abentleylifeless: providing that service via loggerhead makes sense, *iff* we have a well-behaved, performant loggerhead.01:47
lifelesswants a collection of (branch url, revid)01:47
lifelesswgrant: its minimal; easy to extend though01:47
wgrantTrue.01:48
lifelesswgrant: we'd need to add something for private branch lookups if appservers do them01:48
=== mwhudson_ is now known as mwhudson
wgrantHm.01:53
wgrantLooks like staging updates are working fine, but the code isn't being synced beforehand?01:54
lifelessscripts/update-bzr-version-info.sh01:57
lifelessCreating bzr-version-info.py at revno 1057401:57
lifelessI bet its the config-manager change on carob01:57
lifelessspm!01:57
wgrantsuccessful-updates.txt shows it updated to 10574 for the second time several hours after a new rev was blessed.02:00
wgrantSo I'm pretty sure that's it.02:00
wgrantsinzui: Sorry I missed the call this morning.02:00
wgrantsinzui: Did you make any progress on the picker issue?02:00
wgrantI think we basically need to completely rethink it before we can make any progress.02:01
lifelesswgrant: we had nothing blessed for 5 days ?02:01
wgrantlifeless: 10578 was only bleesed May 22 23:3202:03
lifelesswgrant: which is still 3 days ago02:03
wgrantSure. We've had stuff blessed since.02:04
wgrantBut potentially only a single update has failed to update the code.02:04
wgrantSince the 2011:05:23 13:21 update could have started before 23:4002:04
lifelessthe update on the 24th02:06
lifelesssaw rev 1057402:06
lifelesson sourcherry02:06
wgrantRight.02:07
wgrantAnd that's the only failed update we have evidence of.02:07
lifelesscody-somerville: ping02:33
lifelessbug 787765 - can you tell me the figure you see under '79 queries/external actions issued in 0.85 seconds' on the page that was/is failing ?02:33
_mup_Bug #787765: ProductSeries:+index timeouts <oem-services> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/787765 >02:33
lifelesscody-somerville: and can you reproduce it on qastaging02:33
cody-somervillelifeless, under?02:41
lifelesscody-somerville: what that text shows for you :)02:42
cody-somervilleah02:42
cody-somerville'4 queries/external actions issued in 0.14 seconds'02:42
lifelesscody-somerville: timeout though, right ?02:42
cody-somervillelifeless, yup02:42
cody-somervillelifeless, And it does load on qastaging.02:42
lifelesscody-somerville: can you get a profile on qastaging ?02:42
cody-somervilleoh wait, my bad. Was loading wrong milestone on qastaging.02:44
cody-somervilleIt timesout on qastaging as well02:44
lifelesscody-somerville: can you add me as a driver on qastaging?02:44
cody-somervillelifeless, Sure. FYI, the project page is timing out on qastaging.launchpad.net as well but not every time.02:46
cody-somerville(https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1971QASTAGING19)02:46
cody-somervillelifeless, Done. Added 'lifeless' to oem-solutions-releng team on qastaging.02:47
lifeless16            0      7.5976      0.1703   lp.bugs.browser.structuralsubscription:431(expose_user_administered_teams_to_js02:47
lifelesscody-somerville: you're in lots of teams aren't you ;)02:49
=== StevenK changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: StevenK | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:214 - 0:[######=_]:256
cody-somervillelifeless, 22502:50
cody-somerville(indirect + direct)02:50
lifelessdo you know how many you have admin access over ?02:51
cody-somervillelifeless, Administrator of 15, Owner of 17.02:53
cody-somerville(cut, grep, and wc for the win!)02:53
lifelessheh02:53
lifelessthat probably fails the indirect test02:53
lifelessanyhow02:53
cody-somervilleah, true, I could have used grep to instead of wc02:54
cody-somerville*to count02:54
cody-somervilleAnd could have used a regular expression instead of cut to make sure I was looking at the right field02:55
* StevenK hands cody-somerville a 'pointless pipe' award02:55
LPCIBotProject windmill-db-devel build #321: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-db-devel/321/02:55
wgrantwallyworld_: How's your picker stuff going?02:57
wallyworld_wgrant: been tied up doing other stuff - revising popup field name branch, doing a feature flag branch for disclosure, seperating out a separate branch for the irc nick formatter etc02:59
wgrantwallyworld_: Ah, right.02:59
wgrantwallyworld_: It seems to me that we're not going to get very far by treating the search/rank/affiliation issues separately.02:59
lifelesswow, slow02:59
lifeless190530            0      3.2106      1.3876   +storm.properties:51(__get__)02:59
wgrantWe have a set of requirements and seem to be jumping into designing these three things separately.03:00
wgrantWithout actually really thinking about how they will work together.03:00
lifelesscody-somerville: so this is easy fixed03:00
wallyworld_wgrant: did you know there's a FormattersAPI class which is supposed to handle escaping of invalid html ids. but it doesn't ensure uniqueness03:00
lifelesscody-somerville: care to put the patch up?03:00
wgrantwallyworld_: I didn't!03:00
wgrantwallyworld_: That's somewhat unpleasant.03:00
lifelessits probably the root cause for a half dozen timeouts03:00
wallyworld_wgrant: curtis mentioned it in reviewing the mp03:01
wallyworld_wgrant: with the picker stuff, i think we can do alliliation separately from search/rank. affiliation will be expensive, but we will only need to do it for each batch of 6 or whatever results03:02
wallyworld_potentially expensive03:02
wgrantwallyworld_: I don't think that's the case.03:02
wgrantwallyworld_: We need to be able to filter by affiliation, or at least rank by it.03:03
wgrantSearch for "william" on a Launchpad bugtask.03:03
wgrantThat's clearly wrong.03:03
wallyworld_hmmm. that will complicate things for sure03:03
wgrantExactly.03:03
cody-somervillelifeless, Ugh, sure! :-)03:03
wgrantThe search at the moment is useless.03:04
wgrantIt finds the 100 most relevant results, then orders them by displayname.03:04
wallyworld_we will need to consider denormalising the data model in that case to make affiliation easy to get03:04
wgrantPossibly, but we first need to consider what we *want*.03:04
wallyworld_agreed03:04
wgrantDo we want ranking, do we want filtering, or what?03:04
wallyworld_no question there03:04
wallyworld_wgrant: that's what the product team needs to feed us - requirements :-)03:04
lifelesscody-somerville: we're doing 64K __eq__ calls03:05
wgrantwallyworld_: Are those requirements, or design?03:08
StevenKCan haz review from someone?03:08
wgrantwallyworld_: The only real requirement is that it returns "good" results. :)03:09
StevenK+13/-003:09
lifelesswgrant: wallyworld_: can I be of assistance?03:09
wallyworld_requirements. ie what  we need to deliver as opposed to how to do it03:09
wgrantwallyworld_: This is part-way between requirements and design, IMO.03:09
wallyworld_lifeless: we are pondering the new search behaviour of the picker03:10
wgrantBecause currently it is useless unless you type the full username or displayname.03:10
wallyworld_wgrant: not sure i agree :-) i think we need to be clear about what we need to deliver, not how to do it03:10
wgrantwallyworld_: You have a branch to stop using Person.fti, right?03:11
wallyworld_wgrant: yes, in ec2 now03:11
wgrantwallyworld_: Have you tested how that works in practice?03:11
wgrantwallyworld_: I think it will eliminate displayname matching.03:11
wgrantWhich would be a very bad thing.03:11
wallyworld_wgrant: well, i ran it locally and tried a couple of searches with and without the fti removed and they appear to behave the same03:11
wgrantwallyworld_: I don't see where it does a displayname search.03:12
wgrantApart from fti (which is name, displayname)03:12
wallyworld_i can't recall if i checked display name matching. i'll have another look03:12
wallyworld_to be sure03:12
wgrantBut the query is obscene, so it's a bit hard to tell :/03:13
* wgrant tries.03:13
cody-somervillelifeless, I've got to take the garbage out and then I need to head to bed but I'll push a branch with a patch tomorrow morning if someone else hasn't gotten around to it. Kudos for looking into this. :-)03:13
lifelesscody-somerville: I've finished capturing my learnings03:16
lifelesscody-somerville: if you  need a hand, just shout03:16
* cody-somerville nods.03:16
wgrantwallyworld_: So, back to affiliation for a sec: yes, it's easy to just show the affiliation of the current six, but that doesn't help if I have to scroll through 10 non-deterministic batches to find the right person :/03:16
wgrant(yes, it is actually non-deterministic, it seems :/)03:17
lifelesswgrant: wallyworld_: is there a LEP ?03:17
wgrantTrustedPickers03:17
wallyworld_wgrant: yes, i agree that we may want to sort by affilliation. that is not something i was previously considering03:17
wgranthttps://dev.launchpad.net/LEP/TrustedPickers03:17
wgrantAhh, https://dev.launchpad.net/LEP/TrustedPickersUseCases doesn't seem to be linked from anywhere.03:18
wgrantBut is useful.03:18
wgrantIt has a usecase like the one I raised03:19
wgrantStevenK: Can I revert your changes on DF?03:19
wgrantLooks like it's just that merge from yesterday.03:19
lifelesswhat defines affilate?03:20
=== jtv changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: StevenK, jtv | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:214 - 0:[######=_]:256
lifelessI'm worried about the use of irc handles, maybe I'm cracked03:21
wgrantlifeless: Probably membership in a team related to the project.03:21
wgrantBut then we may well also want a Canonical affiliation, so that falls apart.03:21
StevenKwgrant: Sure03:27
wallyworld_lifeless: getFeatureFlag. i want to add a variant which returns a user specified default value if features.getFlag() returns None. i'd like to add this to lp.services.features.__init__. but i think you disagree about doing that there?03:28
StevenKjtv: Can haz review?03:28
jtvStevenK: when I finish my current one, sure03:28
lifelesswallyworld_: why do you want to do that ?03:28
lifelesswallyworld_: what problem are you solving?03:28
wgrantStevenK: Thanks.03:29
wallyworld_lifeless: i have an int feature flag and i don't want to do what was done in archive.py03:29
wallyworld_        limit = getFeatureFlag(FEATURE_FLAG_MAX_SYNCHRONOUS_SYNCS)03:29
wallyworld_        try:03:29
wallyworld_            limit = int(limit)03:29
wallyworld_        except:03:29
wallyworld_            limit = 10003:29
lifelesswallyworld_: you'll still need that code03:29
lifelesswallyworld_: because crap might be entered in03:30
wallyworld_not if i can specify a default as in myflag = getFeatureFlag('flagname', 1)03:30
lifelesswallyworld_: I'm totally happy with folk layering convenience functions; I'm unhappy with folk embedding schemas in it03:30
lifelesswallyworld_: thats not sufficient to remove the try:except:03:30
wallyworld_sure, i'd do the try except inside the getFeatureFlag03:31
wallyworld_and maybe name the function getIntFeatureFlag03:31
lifelesswallyworld_: I think thats a bad idea because it hides the ability to tell whats going on, and the casting you want isn't related to feature flags03:31
lifelesswallyworld_: I think you want a safe_int(value, default=0) function03:32
wallyworld_hmmm. i think it is because we specify the type of feature flag - boolean, string, int etc - so there should be relevant methods to get flags cast to the expected type03:32
wallyworld_safe_int works for me03:33
wgrantwallyworld_: That type is just documentation.03:33
lifelesswell, the type is crufty and I'm not 100% on board with it being there03:33
lifelessbut I support folk doing what they think makes sense ;)03:33
wallyworld_not sure why you dislike it. it serves a good purpose03:34
wallyworld_can i add safe_int to features __init__ ?03:34
lifelesswallyworld_: I don't think it belongs in features03:34
lifelesstheres probably an implementation in the tree already03:34
lifelessin a util or misc or helpers or some such module alrady03:35
lifelesswallyworld_: i dislike it because typing drives the requirements -way- up for very little win.03:35
wallyworld_fair enough. will look. i wasn't going to call it safe_int if it were in feaures init :-)03:35
wallyworld_i can't yet bring myself agree with that :-)03:36
lifelesswallyworld_: I'm totally in favour of the documentation we have03:36
wallyworld_i like the doco too. but if it makes sense to define a flag as an int, we should easily be able to treat it as such03:37
wallyworld_s/treat/use03:37
wgrantwallyworld_: You may want to kill that ec2 instance before it lands.03:37
wgrantwallyworld_: Try searching for "william grant" in the assignee picker on https://bugs.dogfood.launchpad.net/launchpad/+bug/123403:38
_mup_Bug #1234: Gina is an unmaintainable mess of command line options, environment variables and shell scripts <lp-foundations> <Launchpad itself:Fix Released by debonzi> < https://launchpad.net/bugs/1234 >03:38
wallyworld_wgrant: sure. i had retested yet. was on my todo :-) display name matching broken then i assume03:39
wallyworld_?03:39
wgrantwallyworld_: Yeah :(03:39
wgrantI'm not sure why it returns what it does, but it's certainly not right!03:40
wallyworld_wgrant: bollocks. i'll look at modifying  the query to specifcally match displayname03:40
wgrantwallyworld_: We probably still need FTI over that.03:40
wgrantwallyworld_: And Person.fti is already over just name and displayname.03:40
wgrantSo we probably want an index on Person.fti instead.03:41
wgrant(which dev and DF already have, but production doesn't)03:41
wallyworld_really?03:41
wallyworld_why not production?03:41
wgrantBecause production lacks it.03:41
wgrantIt only exists on DF because I created it yesterday totest :)03:41
wgrantNo idea why :/03:42
lifelesswe can add that now, losas are around03:42
wgrantTrue.03:42
wallyworld_are we sure it wouldn't be better just to say (pseudo)  'xxxx where name like ? or displayname like ?'03:42
lifelesswgrant: how big is it on df ?03:42
wgrantlifeless: Most will only have three terms, so it should be small, but let's see.03:43
lifeless\di+ person_fti03:43
lifelesswallyworld_: there is no index on display name03:43
wallyworld_doesn't seem worth the cost of creating and maintaining a fti over just two simple string fields?03:43
wgrant49MB03:44
lifelesswallyworld_: fred bloggs should match fred J bloggs03:44
wgrantwallyworld_: But how do you propose to do a full-text search of displayname?03:44
wgrantWithout an FTI index?03:44
wgrantRight, what lifeless said.03:44
lifelesswgrant: from the perspective of a user doing a search03:44
lifelesswallyworld_: and foo%bar style searches are terribly slow03:44
wgrantlifeless: Hm?03:44
wallyworld_fair enough.03:45
lifelesswgrant: wildcard searches are not indexed03:45
lifelesswgrant: literal prefixes sometimes use indices03:45
lifelessok on the LEP03:46
lifelessMust point 103:46
lifelessI think is over broad03:46
lifelessI would say that the information which lead to a *hit* must be shown03:46
lifelesswhich is not the same as showing all the possible things we search on on every hit03:46
lifelesssecondly, point 2: will require a new cached data structure03:47
wgrantAgreed03:47
lifelesswgrant: agreed on 1 or 2  or both ?03:48
wgrantI don't agree that 2 needs a new datastructure, unless we want to search/rank on it, which we probably do.03:48
lifelesswgrant: ' previous bug assignee'03:49
lifelesswgrant: + Ubuntu03:49
wgrantAh, missed that.03:49
wgrantUbuntu?03:49
lifelessUbuntu scope searches03:49
wgrantWhat about them?03:49
lifeless400K bugs to consult to find previous bug assignees03:49
wgrantRight.03:49
wgrantI hadn't considered the assignee case.03:50
lifelessI suspect we want to expose whatever thing we have an let folk delete inappropriate things03:50
lifelessbut thats a different discussion03:50
wallyworld_lifeless: perhaps a case for a new service :-)03:51
lifelessperhaps03:51
lifelessI think it would fit well in a services model03:51
wgrantlifeless: Right, if we have assignees then we very probably want to permit manual administration.03:52
wallyworld_yep, especially since there will likely need to be a (denormalised) data model to go with it03:52
wgrantlifeless: Shall we hijack a LOSA to 'CREATE INDEX person_fti ON person USING gist (fti);'?03:53
wallyworld_lifeless: btw, found intOrZero() and friends in canonical.lp.helpers.py03:53
lifelesswallyworld_: hahahahaha :>03:53
wgrantcanonical.lp buuuuuuuuuurn03:53
StevenKI've been trying to remove that, with little to no success03:54
wallyworld_so how confident are we that creating that fti index will solve the picker timeouts?03:54
wallyworld_StevenK: well, seems like i'm about to add another bit of code that uses it :-)03:55
wgrantwallyworld_: The queries execute in <3s on DF, and that's DF.03:55
StevenKwallyworld_: DIE03:55
wgrantwallyworld_: There's no other significant explanation for its slowness.03:55
lifelesswallyworld_: there may be other causes of slow, but we know that that is a cause03:55
wallyworld_besides all the unions etc03:55
StevenKjtv: Still reviewing?03:55
jtvYes03:55
lifelesswallyworld_: unions are not prima facie causes of slowness03:55
wgrantwallyworld_: Unions aren't slow unless the queries are slow.03:55
StevenKjtv: How large is this branch? :-)03:56
jtvStevenK: it's not the size that matters03:56
jtvit's the distractions of people going "hey jtv are you still reviewing that branch?"03:56
wgrantThe emailaddress search seems to be the slowest now.03:56
wallyworld_i agree about unions not being slow per se. i was more commenting on the number of queries. and when you consider our batcher does a count(*) and then a select it's doubly bad03:57
wgrantYes, our batcher is stupid :(03:58
lifelessI really must finish that upgrade03:58
wgrantYeah.03:58
wallyworld_and in postgres a count(*) is just as bad as a select i'm told so in effect we are executing our queries twice03:58
wgrantThe FTI is 100ms on DF. Still slow, but not timeoutfully so.03:58
lifelesswallyworld_: yes, thats true.03:59
wgrantMVCC FTW03:59
wallyworld_i wonder if we can't fix that?03:59
lifelessits mostly fixed but not followed through on03:59
wallyworld_ah, the non exact count stuff?04:00
lifelessthree things04:00
lifelessusing query estimates - function is in the tree04:00
wallyworld_can you point to the function?04:01
lifelessmaking 'last' links cheap (batchnav fixed, need to merge into the tree and start updating collections to use it)04:01
lifelessand lastly making arbitrary offsets cheap (same code as point 2)04:02
lifelessoh04:02
lifelessand turning off estimates entirely for collections where we can do that04:02
lifelesswallyworld_: its in lib/canonical/database I think04:03
wallyworld_ta04:03
lifelessestimateRowCount04:03
lifelessbasically parses EXPLAIN04:04
wallyworld_that's nice assuming it works well04:05
lifelessso one thing you can do is estimate and if the count is < 100 execute the count04:05
lifelesson the assumption we've appropriate indices for small datasets to be answered well04:05
lifelesswgrant: wallyworld_: on the LEP then04:08
wgrantI was about to say.04:08
lifelesswhat should I do with my feedback - leave it with you, add to the LEP ?04:08
wallyworld_i haven't digested the comments yet. we can add them and discuss with the product team etc04:11
wgrantIt seems slightly bad that we have a picker deliverable in 1.5 weeks but we don't actually know what we're doing.04:11
wallyworld_lifeless: with the ff int thing, even if i use intOrZero(getFeatureFlag('foo')), that will be used all over the place and will pollute the code with stuff StevenK is trying to get rid of. sure wish i could just add a single helper to features __init__ and use that....04:12
lifelesswallyworld_: what stuff is stevenk trying to get rid of ?04:12
wallyworld_the helpers.py i think he said04:13
lifelesswallyworld_: and why do you need to use it all over the place?04:13
lifelesswallyworld_: totally unrelated efforts04:13
spivwallyworld_: canonical.lp as a place I think rather than helpers.py specifically, I think04:13
wallyworld_because anywhere we want to see the value if the ff in order hide a block of code, we need to do that test04:13
lifelesswallyworld_: I'm confused, if its an int you're not using it for hiding stuff04:14
wallyworld_spiv: ah ok. makes more sense04:14
lifelesswallyworld_: for hiding stuff just use04:14
lifelessif getFeatureFlag('foo'):04:14
wallyworld_lifeless: we will be. we will be incrementing the int each time a 2 week sprint is done04:14
wallyworld_so pickers first04:15
lifelessplease start from the beginning04:15
wallyworld_we say "if ffvalue == 1" then show the picker stuff04:15
wgrantThis sounds like a very strange use of flags.04:16
lifelesswhat does this do for you that 'if getFeatureFlag('newpicker'): does not ?04:16
wgrantExactly.04:16
wallyworld_ok. so we want to use the one feature flag value04:16
wgrantWhy?04:16
lifelesswhy ?04:16
wallyworld_feature flag name i mean04:16
lifelesswhy?04:16
wgrantWhat benefit does that provide?04:16
wgrantBesides no fewer LOSA requests and less flexibility?04:16
wallyworld_so that we don't have to keep adding new flags each 2 weeks04:16
lifelesswallyworld_: flags are free04:16
wgrantAdding a new flag is not expensive.04:17
lifelesswallyworld_: /by design/04:17
lifelesswallyworld_: you don't even need to document them.04:17
wgrantYou just use them.04:17
lifelesswallyworld_: and for ephemeral ones I wouldn't bother documenting.04:17
wgrantAnd then ask an admin to add them.04:17
wgrantYou'd have to ask an admin to change the int anyway.04:17
wgrantSo no admin time saved.04:17
wgrantNo coding time saved.04:17
wgrantMuch flexibility lost.04:17
wgrantTransparency lost.04:17
lifelessand you'd be stuffed if you were not ready to flick the switch for one part but were for another04:17
jtvStevenK: moving on to yours… it's the copy-into-derived-series branch you want reviewed?04:18
wallyworld_wgrant: we can talk tomorrow at teh standup. sinzuiand i discussed it today and sort of thought using an enum style flag was going to be ok04:18
lifelesswallyworld_: using a flag as an enum is fine04:18
lifelesswallyworld_: I don't think this is an enum situation though, do you ?04:18
lifelesswallyworld_: what problem are you trying to solve?04:19
wgrantIt sounds like you're trying to put a whole lot of features as different stages on a single flag.04:19
wallyworld_not having to change flags.py each time we incrementally deliver a new disclosure feature04:19
wgrantYou don't have to change it, but changing it is roughly two lines.04:19
lifelesswallyworld_: so you don't ever change flags.py when you deliver a feature04:20
lifelesswallyworld_: you change flags.py when you *start* a feature.04:20
lifelesswallyworld_: *if* you chooes to change it.04:20
wallyworld_lifeless: yes agreed. and since we are starting a new feature of disclosure each 2 weeks, that's a lot of editing to flags.py04:20
lifelesswallyworld_: I don't understand that04:21
lifelesswallyworld_: its *literally* 2 lines, with no tests needed.04:21
wgrant*And* it's optional, but encouraged.04:22
wallyworld_lifeless: and if every sqaud added two lines each time, it will bloat. but i guess we remove old entries when a feature is delivered04:22
lifelesswallyworld_: yes04:22
lifelesswallyworld_: just imagine the help text you'd need to describe 8 weeks of work loaded onto one flag04:22
lifeless'1 means pickers, 2 means bug unsubscribe on mistakes, 3 means ...'04:23
lifelesswallyworld_: I wanted the help text to be federated across the codebase04:23
lifelesswallyworld_: but that got lost in translation04:23
wallyworld_ok. you win :-)04:24
lifelesswallyworld_: KISS wins04:24
wallyworld_i didn't realise adding to flags.py was optional but i sort of think it should be mandatory04:25
lifelesshell no04:26
lifeless:)04:26
lifelessthe -whole- point of these things is to be ultra lightweight04:26
wallyworld_why? it adds necessary doco04:26
wallyworld_so devs can know wtf is going on04:26
lifelessit adds doco04:26
lifelessnecessary is a matter of perspective04:26
lifelessnot all things need prose to explain them.04:27
lifelessthings that will only last a few days certainly don't04:27
wallyworld_so how else can one quickly get an overview of what ff are used? i like being able to go lp.net/+feature-info04:27
wallyworld_sure, ones that only last a few days re different04:28
lifelessso +feature-rules shows the live rules04:28
lifeless+feature-info includes all features evaluated during the appservers lifetime04:28
wgrantwallyworld_: Flags that have been queried but are undocumented are listed there.04:28
jtvStevenK: you're done04:28
lifelesswallyworld_: wgrant: on the LEP : I'll leave my feedback with the two of you. Does it help at all with your planning, or are you still in a state of stuck ?04:29
wgrantlifeless: I think we're going to be stuck for at least another couple of days.04:30
wgrantlifeless: We have been given usecases and that's it.04:30
wallyworld_lifeless: i've got enough to do today. we need to talk to curtis though04:30
lifelesswgrant: I'd be delighted to help - as a sounding board or whatever - if you like.04:31
lifelesssinzui is still doing bug triage though :) so I know he's arund04:31
sinzuiAm I needed?04:31
wallyworld_wgrant: do we have the business rules for deciding affillation documented? that would be a good start04:32
lifelesssinzui: so, bug 696973 - what are we doing to satisfy the multi-tenant case?04:32
_mup_Bug #696973: There are no roles that can see all private artifacts in (public or private) projects <disclosure> <projects> <teams> <users> <Launchpad itself:Triaged> < https://launchpad.net/bugs/696973 >04:32
lifelesssinzui: (two proprietary organisations working on one public project)04:32
sinzuiIf we had business rules this feature would have been created in 200704:32
wallyworld_sinzui: we sort of need them because htey will drive the design decisons we need to make04:33
wgrantwallyworld_: We don't even have requirements for affiliation.04:33
wallyworld_eg do we need to sort of affilliation is a big issue and will affect to what extent we need a bdifferent data model04:33
sinzuilifeless: I believe that rule is supposition. Every person I interviewed assumed that the owners of the project had access to all private bugs. We want to make the rules work like the stakeholders assume they do04:34
wallyworld_the stuff i've done so far is geared towards displaying affilliation info04:34
wgrantwallyworld_: eg. we clearly want to show affiliation with the project, but we might also want to show other organisational affiliation (eg. to identify Canonical employees). And we might want to filter by it, or rank by it, or just show it in search results. And what about on comments? Do we show all of them? Just the ones for the relevant tasks? Nothing at all? And how do we distinguish types of affiliation? Ubuntu developer vs. bugsquad ...04:34
lifelesssinzui: branch privacy is explicitly built to support the rule04:34
wgrant... person vs whatever.04:34
lifelesssinzui: I don't care if we have it or not, but I do care if we half-have-it04:34
lifelesssinzui: because it will make implementing 696973 impossible.04:35
wgrantsinzui: I don't think Ubuntu desires that.04:35
wallyworld_wgrant: yes, important questions04:35
wgrantsinzui: Ubuntu's owners shouldn't be able to see security bugs by default.04:35
lifelesssinzui: we want to deliver the stakeholders needs, which is different04:35
wgrantsinzui: They are embargoed.04:35
sinzuiThey can choose to speak against it then So sar they have not!04:35
wgrantsinzui: Erm, have we told them? :)04:35
wgrantsinzui: The pillar-owners-can-sort-of-see-all-bugs-except-it-doesn't-actually-work appeared one day and even I didn't notice.04:36
wgrant*And* it doesn't actually work.04:36
lifelesssinzui: whats the right way for me to help refine this? I can think of at least one other approach that doesn't break multi tenancy04:36
lifelesssinzui: and would deliver what the stakeholders want, reliably.04:36
wgrantI think we want something pretty much like branch visibility policies.04:36
wgrantExcept a little less unpolished.04:36
wgrantWe need to have multiple sets of visibility rules.04:37
sinzuiThe crux of poolie's bug was private bugs. And I really do mean everyone I spoke to in landscape, OEM, HWE, U1, Ubunyu, linaro thought their private bugs were getting to the developers...They want  the bugs available to the developers...that is why they were reported04:37
lifelesssinzui: yes, I agree04:37
wgrantsinzui: Who are "the developers"?04:38
wgrantHWE needs private bugs in Ubuntu.04:38
sinzuiPS. No one understand private branches except the authors of the code. User literally cannot use them without an admin and an interpreter.04:38
wgrantDoes that means that we can have no community Ubuntu developers?04:38
sinzuiStakeholder believe the are the owners of the project registered in Lp04:39
lifelessand for some projects they are04:39
sinzuiMaybe the LP contributes to the communication problem but not delivering the correct messages to the right people04:40
wgrantThere are bugs which are to be worked on by "the developers". But there are others that aren't.04:40
lifelessso there are a few horribly intersecting things04:40
lifeless - shared workspaces04:40
lifeless - unique workspace names04:40
sinzuiOur stakeholders do not report bugs on public projects if they do not want someone from that project to work on it!04:40
lifeless - branding04:41
wgrantsinzui: Why?04:41
wgrantsinzui: That sounds like it's because our privacy is terrible.04:41
wgrantsinzui: Not any real reason.04:41
wgrantsinzui: And that is clearly false.04:41
wgrantsinzui: Security bugs in Ubuntu.04:41
sinzuiBecause They beleive that if the bug on on that project, the owners can see it. This is a simple model04:41
wgrantsinzui: Are embargoed from everyone but the security team.04:41
lifelessone way we can address this is to ditch the shared workspace model04:42
lifelessand say 'a workspace is for one group/organisation/team'04:42
lifelessand provide a way to aggregate workspaces that are working on the same codebase04:43
lifelessthis would greatly help OEM/HWE I believe04:43
wgrantIt is upsetting that we are working on this feature and supposedly have a schedule but really have no idea what we are doing.04:44
lifelessone workspace per client, aggregate all the workspaces to see overall OEM work04:44
wgrantRight.04:44
lifelesseach workspace would be a distro/project as appropriate04:44
wgrantThat's already sort of what they do.04:44
sinzuiThis sounds like an effort to make something even more complicated than what was rejected by our stakeholders. We are not being asked to design a system with more rules, or to solve the worlds problems.04:44
wgrantBut in workaroundish ways.04:44
lifelessthis fits -very- well with the derived distro works.04:44
wgrantsinzui: What was rejected?04:44
wgrantsinzui: And who are the stakeholders?04:44
lifelesssinzui: this actually fits very tightly in with what you are proposing (owners can see everything)04:45
wgrantAnd was the issue communicated clearly?04:45
sinzuiPlease read the lep for names04:45
wgrantWe have had major misunderstandings before.04:45
lifelesssinzui: I very strongly believe in building simple things that work well04:45
sinzuiYes, like how every thinks the can change the bug supervisor role.04:45
wgrantsinzui: I see no Ubuntu stakeholder there.04:46
sinzuiIf someone blogged about that we would be hunted down and clubbed like baby deals04:46
lifelesssinzui: I fear that we are in a half-way house at the moment with some very complex stuff (like branch privacy) mixed in with naive stuff (like inaccessible private bugs)04:46
sinzuis/deals/seals/04:46
lifelesssinzui: we need to decide what the overall shape will be so that we can head towards it04:47
lifelesssinzui: if you've decided that we're not doing multitenancy04:47
lifelesssinzui: thats fine - I respect that04:47
sinzuilifeless: I agreed, and can only provide a UI that our stake holders can use. The UI does describe a simpler model than we have built in the past04:48
lifelesssinzui: but it implies we need to change the multitenancy things and address issues like  name squatting when two folk would currently multi-tenant successfully.04:48
lifelesssinzui: the alternative is to multi-tenant correctly.04:48
sinzuiI am relying on the team to do the implementation. The concerns everyone brings up are legitimate, but I think the weight of many users voices are being ignored for reasons that need revalidation04:49
lifelesssinzui: s/the/an/04:49
lifelesssinzui: I don't understand the ignoring comment - I think everyone here is taking users confusion into account04:49
wgrantI agree that branch privacy is currently pretty and terribly confusing, but we have learnt from it. I think we know how to do multi-tenancy fairly well.04:50
wgrants/pretty/pretty bad/04:51
lifelesswgrant: I don't know that we do. I'm sure we can for private tenants (bug supervisor per tenant etc), but what about public bugs ?04:51
sinzuiwgrant: stakeholders will not benefit if we do not fix it. Working on bug and branch privacy is not in scope04:51
=== nigelb_ is now known as nigelb
wgrantErm.04:52
wgrantwhat is in scope, then?04:52
lifelesssinzui: In which case I think its misscoped. I will raise this with francis & jml.04:52
wgrantHow can we fix project privacy without fixing bug and branch privacy?04:52
sinzuiWe are working on project/distro privacy and allowing projects to state who they trust so that they do no need to manage subscriptions04:52
wgrantI don't think fixing the privacy of root objects is useful or practical unless we fix the privacy of the underlying artifacts too.04:52
lifelesssinzui: this is squarely in the space of tenancy as a concept. I'm hugely excited about this work.04:53
wgrantWe are going to have a fourth privacy mechanism, and it will be an unprecedented mess.04:53
sinzuiI was hoping to abandon it. Since we are not we are supporting those stories for legacy purposes. The principle means to control access will be on the porject04:53
lifelessthat means we're dropping multi tenancy04:53
wgrantAnd that is a big change.04:53
wgrantOf the Launchpad model.04:54
lifelesswhich I'm ok with, but we should make sure we resource it properly04:54
wgrantI thought Launchpad was about keeping project communities together.04:55
wgrantNot forcing fragmentation because two parties want to have their own private artifacts.04:55
sinzuiwell I thought you were arguing other otherwise wgrant. If I reported a private bug on a public project that the owner of the project could no see, I am not collaborating. Our stakeholder do want those bugs seen04:56
lifelesswgrant: the way we do this is not necessarily the best04:56
sinzuiwgrant: lifeless. There has been no conversation about transition from private to public. Private teams cannot do that. I assume that a commercial story will require that04:58
lifelesssinzui: I assume its a desired feature too.05:00
wgrantsinzui: Teams can work partly in private and partly in public.05:00
wgrantlifeless: Sure, but not doing it at all is also probably not the best.05:01
wgrantSo, we don't know how privacy is going to work (we don't even know what's in scope), we don't know how pickers are going to work (we don't even have requirements for some parts)...05:03
lifelesssinzui: it must be late for you05:03
lifelesssinzui: perhaps you me and francis can talk after the TL meeting tomorrow ?05:03
sinzuiYes. I am in bed and my turned out the lights05:03
sinzuioh...05:03
wgrantHeh05:04
sinzuiabout shared and private workspaces. That may overlap with the request for 3 and 3 level nested projects05:04
lifelessit may indeed05:04
sinzuiOEM wants projects that represent factories nested below a project that uses the parts. This is ugly though, because factory a cannot know about factory b05:05
lifelessyes05:05
sinzuiI blew a gasket thinking about it05:05
lifelessthis is a form of multitenancy05:05
lifelessits precisely the thing that the bug we're talking about will break - or if we do either aggregation of workspaces or stay with multitenancy it will enable it05:06
sinzuilifeless: The TL meeting is my only meeting tomorrow. I am available to talk most of the day05:06
lifelesssinzui: I would like to have some time with you and francis tomorrow on voice to tease things out, after the TL meeting05:07
sinzuiwgrant: I do not believe we are going to get requirement that could work with agile development. Building the UI first to understand what stakeholders will accept allows us to discover what is needed in the months that are a lotted.05:10
wgrantsinzui: Sure, we can't spec it out fully from the start.05:11
lifelessI'm +1 on building the UI first, but we do need to have an idea of what it will look like05:11
wgrantBut we really have very little idea what it's going to look like and again lifeless beats me.05:11
sinzuiwgrant: The one consistent rule is the members of canonical must have access to all canonicals projects, the bug and branches too, without managing individual subscriptions05:11
wgrantsinzui: That is false.05:12
sinzuiWe have pictures that were we recieved05:12
wgrantSimple counterexample: Ubuntu security bugs are not to be seen by all Canonical employees,.05:12
sinzuiI thought we aggeed in the past that security != private05:13
wgrantIt is true for most things, but there are exceptions.05:13
wgrantPerhaps.05:13
wgrantBut special-casing security seems like it may be overcomplex.05:13
wgrantWe may see.05:13
lifelessother organisations may choose to fund security work in the ubuntu space05:14
lifelessmultitenancy would suggest showing the entity that will get the bug rather than a plethora of checkboxes05:14
lifelessmultiple workspaces would suggest that other organisations get their own workspace05:15
lifelessjml: if you can be around after the TL call that would be great too05:15
wgrantlifeless: Precisely!05:16
wgrantWe had a bug filed this morning that ubuntu-security is not subscribed to some security bugs.05:16
wgrantI imagine that private projects would have a couple of visibility policies.05:16
wgranteg. "Canonical" and "Security"05:16
wgrantPrivate artifacts would have one or the other.05:16
lifelessyes, I sketched something like this in prague05:17
wgrantNo subscription fiddling, no security hardcoding.05:17
wgrantBetter for everyone.05:17
wgrantAnd it is, to me, the obvious solution.05:17
wgrantOh, we have designs around this?05:17
lifelessI do05:17
wgrantI'd not heard of this.05:17
lifelessor was it texas05:17
lifelessperhaps texas05:17
sinzuiprague05:17
lifelessbut they are merely options05:17
lifelesswgrant: I don't have answers for public multitenancy yet05:18
lifelesswgrant: github doesn't multitenant05:18
wgrantlifeless: Is public multitenancy a problem?05:18
lifelesswgrant: its inconsistent05:18
wgrantYeah, I looked at GitHub yesterday.05:19
wgrantIt is an interesting model.05:19
sinzuiI was just doing UI at the time. I went to UDS N and told everyone that while I was working on the UI, I would not be involved in the implementation. Then we switched to squads and I am leading the implentation05:19
wgrantlifeless: What's inconsistent about it?05:19
wgrantlifeless: I'm not saying there isn't anything.05:19
wgrantI just want to know what you think.05:19
lifelesswgrant: there is one bug supervisor and one bugtask status05:19
lifelesswgrant: but potentially many organisations with differing triage and prioritisation rules05:20
wgrantAh, right.05:22
wgrantYes.05:22
wgrantThat is slightly more awkward.05:22
wgrantIt should be considered here.05:22
wgrantBut I don't think it really requires resolution.05:22
wgrantBut we should not design against it :)05:22
lifelessfor example05:23
lifelessbazaar had/has another company doing consulting and contracting05:23
wgrantYeah05:24
lifelessthey would benefit from being able to say 'this matters to me'05:24
lifelessand in principle each user has their own prioritisation rules05:24
lifelessI'd be quite happy if users could mark all the bugs they care about critical and it didn't impact the LP team.05:24
lifelessFor instance.05:24
lifelessThis could either be a genuine discriminator05:24
lifelessor terrible05:24
wgrantRight, and splitting workspaces will not solve this.05:25
lifelesswell it would05:25
wgrantMMm, I guess.05:25
wgrantBut not in really useful ways.05:25
lifelessthere are two issues there05:25
lifelessname squatting05:25
lifelessand aggregation05:25
lifelessif folk can fork the workspace easily and aggregate only what they trust easily05:26
lifelessthen naming and the passion around that becomes the sole issue05:26
lifelessthis is roughly the same as the single-blessed-tenant for public tenancy vs private multitenancy05:26
lifelessI mean - the two approaches have some common challenges05:28
lifelessbut will tradeoff on things they do better05:28
lifelessthe naming/branding thing is actually very important05:29
wgrantThat's one reason I am reluctant to not multi-tenant.05:31
lifelessit may be a driving factor to choose one approach over the other05:33
lifelesshowever I don't know what side of the equation it sits on :)05:33
=== almaisan-away is now known as al-maisan
wgrantAnyway, I guess discussing this further here is pointless, so I shall await the outcome of your discussion with Francis and co tomorrow.05:38
StevenKwgrant: Do you want to look at refactor-notification again?05:43
StevenKwgrant: I've not done some of what you mentioned, however I think I've addressed most of your concerns.05:43
wgrantStevenK: Let me have a look.05:44
=== al-maisan is now known as almaisan-away
wgrantStevenK: Have you run the delayed copy tests over this?05:46
wgrantI'm pretty sure the announcement tests will fail.05:46
wgrantAlthough they may be crap enough that they don't.05:46
* StevenK does so05:47
StevenKwgrant: 88 tests, 0 failures and 0 errors05:50
wgrantYay.05:50
wgrantspr.package_upload is not what you want.05:50
wgrantSo the tests should fail :(05:50
StevenKIs that a sarcastic yay I see?05:50
wgrantNever!05:50
StevenKITYM "Always!"05:51
wgrantHm.06:01
wgrantWhy does AJAX "Subscribe someone else" on a bug check whether I can unsubscribe the subscription before it creates it?06:01
wgrant* * Check if the current user can unsubscribe the person * being subscribed. * * This must be done in JavaScript, since the subscription * hasn't completed yet, and so, can_be_unsubscribed_by_user * cannot be used.06:02
wgrantBut why?06:02
lifelessthats surprising06:02
wgrantIt's an extra 5 requsets :(06:02
lifelessit may be about teams06:02
wgrantHowso?06:03
wgrantIt should just be able to get can_be_unsubscribed from the subscription once it's created, AFAICT...06:04
wgrantIt basically reimplements inTeam in JS :/06:05
wgrantBuggily, too!06:05
wgrantPerhaps I should remove it and see what tests fail.06:06
StevenKwgrant: Did you get distracted? :-)06:09
StevenKLike I did ...06:10
wgrantStevenK: I was waiting for your responses on spr.package_upload.06:10
StevenKwgrant: I had no idea it was a question. It seems to work?06:11
wgrantStevenK: It's the wrong one.06:11
wgrantFor delayed copies, at least.06:11
StevenKSo I change it back to taking a packageupload and getting the spr from the PU?06:12
=== _thumper_ is now known as thumper
wgrantI don't know.06:13
wgrantPossibly optionally taking a PackageUpload.06:13
wgrantBut then what about binaries?06:13
* StevenK tosses the entire soyuz tests at this branch06:13
StevenKLet's see what blows up06:14
wgrantI suggested progressive refactoring to avoid this sort of dead-end. But that doesn't work so well if the tests don't exercise the stuff that is going to break :/06:14
thumperdoes anyone know about poolie's script for making a kanban board?06:16
wgrantlp:kanban?06:16
* thumper looks06:16
StevenKwgrant: So I get questioned either way. Crumbs, this code sucks.06:17
wgrantStevenK: It sucks, and it's not clear how to solve this particular bit. We need to handle cases without an SPR, and cases without a PackageUpload.06:18
wgrantFun for all!06:18
wgrantStevenK: That's why I suggsted an exploratory refactoring to minimise dependencies on SPR without changing behaviour.06:21
wgrantBut we need to work this out somehow.06:21
wgrantHmmm.06:21
wgrants/SPR/PU/06:21
StevenKwgrant: Which I attempted, and then you said I've gone too far. I've dialed it back a bit and it's still wrong.06:22
StevenKlib/lp/soyuz/doc/distroseriesqueue-notify.txt is utterly broken06:22
wgrantStevenK: The fact that you've gone too far is not a problem. The problem is that you've broken functionality!06:23
wgrantAnd your reversion is broken because SPR.package_upload is stupid and legacy :(06:23
wgrantWell, possibly more because delayed copies are stupid and hackish :(06:23
wgrantBut we still have the binary upload problem which makes me cry.06:24
wgrantStevenK: Perhaps we announce on a set of packages.06:24
wgrantMay have zero or one SPRs, zero or more BPRs, and zero or more baby-eating custom uploads.06:25
StevenKAnd then my explodes trying to keep track of changes files and content for each of those06:25
StevenKs/my explodes/my head explodes/06:26
wgrantSounds like it already may have :(06:26
wgrantRight. But each announcement has a single changes file.06:26
wgrantWhich you can possibly pass in for now.06:26
wgrantRemember that changes files will be optional soon.06:26
wgrantOut of necessity.06:26
wgrantSo the changes file stuff does not have to be pretty; it is going to be aggressively mutilated in a week or two.06:26
StevenKBy whom?06:27
wgrantundef06:27
StevenKPERL!06:27
wgrantBut it's needed for copies from Debian.06:27
wgrantSo it has to be done.06:27
wgrantSo it is left as an exercise to the Julian, and can be disregarded by us as a given.06:27
wgrantSo.06:28
wgrantit looks like we are looking at sets again.06:28
wgrantSets of SPRs and BPRs and pedovores.06:29
wgrantWhat still uses the changesfile....06:35
wgrantApart from too much.06:35
wgrantHm.06:36
wgrantSo we still parse Changed-By and Maintainer and Changes out of it.06:36
wgranthmmmm.06:36
wgrantDifficult.06:36
wgrant:(06:36
StevenKYes.06:37
wgrantThe first two are easily replaced with looking at SPR. The last needs to be replaced anyway.06:37
wgrantSo we can continue passing the content around for now, I think.06:37
wgrantAnd remove it eventually.06:37
wgrantBut does that mean we can just use the string?06:38
wgrantAnd not a file object?06:38
StevenKThe reason we use the file object is due to attaching the actual file to the mail06:38
wgrantHm. We can't do that with a string?06:39
StevenKOrdering06:39
wgrantEven if we can't, let's just write that to a temporary file or stringio or something.06:39
wgrantHuh?06:39
StevenKOh, string06:39
StevenKNot dict06:39
wgrantString.06:39
wgrantRight, not parsed.06:39
wgrantAlthough I guess we need the parsed version too, is that what we parse around niow?06:40
wgrants/parse/pass/06:40
StevenKYes, we pass around a dict and a file-like object06:40
StevenK        for build in packageupload.builds:06:41
StevenK    AttributeError: 'NoneType' object has no attribute 'builds'06:41
StevenKFor crying out loud06:41
wgrantAh.06:41
wgrantsad.06:41
StevenKThis is all broken06:41
wgrantDo we use the dict outside assemble_body?06:41
wgrantOr can we just parse it in there?06:41
wgrantAnd just pass the string around.06:41
StevenKYes, in notify_spr_less()06:42
wgrantThat doesn't count.06:42
wgrantIt's a separate beast.06:42
StevenK_getRecipients wants the parsed dict too06:42
wgrantWhy? :/06:42
wgrantAh06:43
wgrantIs that used by notify_spr_less too?06:43
StevenKNo06:43
wgrantHrmph.06:43
StevenKIt is tied pretty tightly to packageupload, so I ignored it06:43
wgrantAnyway, let's try not to change that yet.06:43
wgrantWe can continue passing around both the dict and file versions, I guess.06:43
StevenKTotal: 1101 tests, 10 failures, 5 errors in 29 minutes 58.207 seconds.06:44
StevenKThose 15 are mostly doctests, so it's worse06:44
wgrantThat's what I was hoping for.06:44
wgrantFailures, not worse.06:44
StevenKlp.soyuz.tests.test_packageupload.PackageUploadTestCase.test_realiseUpload_for_delayed_copies06:45
StevenKDamn it, I hate it when you're right.06:45
StevenK:-P06:45
wgrant:(06:45
* StevenK looks at the failure and goes cross-eyed06:46
wgrantStevenK: No point looking at the failure yet.06:47
wgrantUntil you've fixed it to use the right BPRs and PUCs.06:47
StevenKSo, stop tossing around SPR and go back to PU?06:47
wgrantThen we should have just about nearly almost slightly restored the original behaviour.06:47
wgrantAnd there will be reasonable failures.06:47
wgrantGiven how far you've gone already, I think just take optional sets of BPRs and PUCs.06:48
wgrantIn addition to the SPR.06:48
wgrantDon't take a PU.06:48
wgrantYou don't need it.06:48
wgrantYou just need the subordinate releases/uploads and the changesfile.06:48
StevenKYou said the opposite for the subject06:48
wgrantWe can sort of sourceless notifications after that.06:49
wgrantHm?06:49
StevenKpackageupload.displayname has behaviour we might still need06:49
wgrantArgh, forgot that bit.06:49
wgrantWe need to reimplement that.06:49
wgrantLet me look at it.06:49
wgrantAh.06:49
wgrantStevenK: You'll see you undo about half of what it does anyway.06:51
wgrantStevenK: I think just grab the names yourself from the packages you're given.06:51
wgrantIgnore the (delayed) bit.06:51
wgrantWhich I filed a bug about years ago anyway.06:51
StevenKwgrant: If spr.package_upload is wrong, does that mean packageupload.sourcepackagerelease is also wrong?06:51
wgrantStevenK: No. PackageUpload.sourcepackagerelease is fine.06:52
wgrantBut an SPR may have multiple PackageUploads.06:52
wgrantspr.package_upload is the original one.06:52
wgrantWhich isn't the right one in the case of a delayed copy.06:52
wgrantStevenK: Do we use the PU for anything else?06:54
wgrantStevenK: Apart from getting the BPRs and PUCs, and displayname?06:54
StevenK_buildSummary, but I just ripped that out06:54
wgrantGreat.06:54
StevenKPerhaps I should write a PUS to string function06:54
wgrantHm?06:55
wgrantYou're not going near PUS here...06:55
wgrantAt least I hope not.06:55
wgrantPUC, sure.06:55
wgrantBecause we have no other way to represent custom uploads.06:55
wgrantBut not PUS.06:55
StevenKwgrant: A lot of the new code I've written takes an action as a string06:55
wgrantOh.06:55
wgrantPackageUploadStatus.06:56
StevenKPUS being PackageUploadStatus06:56
wgrantNot PackageUploadSource.06:56
wgrantRight!06:56
wgrantBut not quite.06:56
wgrantSince you need 'announcement' as a separate thing.06:56
wgrantOr maybe not.06:56
StevenKI do, but that's only called once06:56
wgrantIf you can separate that out somehow, by all means use PUStatus instead.06:56
wgrantMuch cleaner.06:56
StevenKEr? I'm advocating *not* using it06:56
wgrantOh, you want a map (no need for a function) to turn a PUS into a string to pass into notify?06:57
wgrantMm.06:57
wgrantI guess.06:57
wgrantDoesn't make much difference.06:57
StevenKNot really06:57
StevenKRight, assemble_body still uses spr.package_upload06:58
StevenKAnd calculate_subject06:58
StevenKThat's it06:58
wgrantWhat do they use them for?06:59
wgrants/them/it/06:59
StevenKassemble_body wants the signing key06:59
StevenKcalculate_subject wants displayname06:59
wgrantsigning key is OK for now. calculate_subject doesn't really want displayname... it's exactly 6 lines to reimplement the part of it that it requires.07:00
StevenKSo calculate_subject also wants builds and customfiles?07:01
wgrantBPRs and PUCs, but yes, it will need to know about them.07:03
wgrantStevenK: I think we may actually have a reasonable solution here!07:04
StevenKIt doesn't look reasonable yet07:06
wgrantWell, a reasonable *vision* of a solution.07:06
StevenKwgrant: Did you want spr.package_upload.signing_key usage to die too?07:06
wgrantMore than my "refactor mercilessly and see what falls out" started with.07:06
wgrantStevenK: I think that's OK for now.07:07
wgrantStevenK: Eventually it will be the requestor instead.07:07
StevenKYes07:07
wgrantStevenK: But for now all we have is the SPR signer.07:07
wgrantAnd that's on the original package_upload.07:07
wgrantSo spr.package_upload.signingkey is OK.07:07
StevenKwgrant: Commit and push?07:07
wgrantIdeally run a couple of the failing tests first.07:08
wgrantBut then, sure :)07:08
StevenKRight, one is because I can't code07:10
StevenKAnother is due to the exact thing I just questioned07:10
wgrant:O07:10
wgrantHeh.07:10
wgrantWhich? signingkey?07:10
StevenK       if spr.package_upload.signing_key is not None:07:11
StevenK    AttributeError: 'NoneType' object has no attribute 'signing_key'07:11
wgrantGuard it with a spr.package_upload None check.07:11
wgrantAnd see what happens.07:11
wgrantI suspect the test is dodgy.07:11
wgrantNot creating a valid initial PackageUpload.07:11
wgrantOr not invalidating a cache.07:11
wgrantOr something like that.07:11
StevenKOh, BAH07:15
StevenKset.add(string) is not helpful!07:15
StevenK    + '[ubuntu/breezy-autotest] a, e, l, n, p, t 0.99.6-1 (New)'07:15
wgrantHeh. That should work.07:16
wgrantBut set(string) won't.07:16
StevenKAh07:17
StevenKWhich is what I do exactly07:17
StevenK:-(07:17
StevenKset([string]) makes me sad07:17
wgrantWe'll move to 2.7 within a few months.07:17
wgrantWhere you can just do {string}07:17
StevenKGrumble. I think PackageUpload.sourcepackagerelease is also None for dist-upgrader uploads07:24
wgrantIt is :D07:24
wgrantDon't worry about sourceless uploads right now.07:24
wgrantGet delayed copy and mixed upload announcements working first.07:25
wgrantLet me glance over that, then we can strategise on sourceless.07:25
jtvHey everyone, an American just told me I had to learn about sarcasm!07:27
wallyworld_jtv: noooo, really? surely you jest07:49
wgrantStevenK: How's it going?07:51
StevenKwgrant: test_realiseUpload_for_delayed_copies sucks07:52
wgrantSurely not?07:52
StevenKHah07:52
jtvwallyworld_: see, there, what you said there?  I can spot sarcasm!07:55
StevenKwgrant: Right, delayed_copies fixed07:55
wgrantStevenK: Excellent!07:56
wgrantStevenK: Hopefully this only leaves sourceless uploads broken.07:56
StevenKwgrant: I dunno. :-)07:56
StevenKwgrant: http://pastebin.ubuntu.com/612607/ are the failing tests07:57
wgrantYe of even less faith than me, if that is possible.07:57
StevenKwgrant: I've fixed test_realiseUpload_for_delayed_copies07:57
wgrantOK, that's not too bad.07:58
StevenKwgrant: What else do you think I should look at before pushing?07:58
wgrantYou might want to have a look at TestQueueTool next.07:58
wgrantSince it's likely to be more understandable than the doctests.07:58
wgrantI hope.;07:58
* StevenK peers at it07:58
StevenKNot sure if I've broken nascentupload-mumble.txt either07:59
wallyworld_StevenK: wgrant: you guys are watching SOO tonight, right?07:59
wgrantMumble integration in archiveuploader sounds like a critical bug.07:59
wgrantSOO?07:59
StevenKState of Origin07:59
wgrantI have heard of it but can't remember to which sport it relates.08:00
wallyworld_wgrant: sad that you have to ask :-)08:00
wgrantPossibly rugby.08:00
StevenKThugby league08:00
wallyworld_heathens!08:00
wgrantVictorians :P08:00
wgrantAFL is all the rage here.08:00
wallyworld_and you call yourselves australian08:00
wgrantAlthough I hate it with passion :)08:00
wgrantNo, I'm Canadian !08:00
StevenKI don't really like the thought of watching grown men grop each other for 80 minutes08:00
wallyworld_grop? is that a kinky version of grep?08:01
wallyworld_or maybe grok?08:01
StevenKgroupe08:01
StevenKSigh08:01
wgrantGroupé?08:01
StevenKgrope08:01
wallyworld_ah well, i won't bother talking about the gaem tomorrow then08:02
StevenKwgrant: 4 of the 5 errors are fixed by side-effect, the other is due to the test tossing in stringio08:02
StevenKwgrant: (For TestQueueTool)08:02
wgrantStevenK: Great, we're getting there :)08:02
wgrantwallyworld_: Did you see that ludicrous display last night?08:03
wallyworld_wgrant: no, didn't watch much tv last night08:03
wallyworld_what happened?08:03
wgrantBah.08:03
wgrantDoes nobody watch The IT Crowd?08:03
wallyworld_wgrant: yes, but i think i've seen them all08:04
StevenKI've seen up until the end of season 408:04
wgrant"Did you see that ludicrous display last night?" is the opening of the responses they use from bluffball.co.uk.08:04
wgrantTo cope with colleagues discussing the game the following day :)08:05
wallyworld_hey, how do i use addCleanup() in a doc test? ie how do i get a reference to the test case being run?08:05
lifelesswallyworld_: you don't08:05
thumperwallyworld_: you don't08:05
StevenKwgrant: Commit and push, or fix more?08:05
thumperwallyworld_: unless someone fixed it08:05
wgrantStevenK: Commit and push and then fix more!08:05
lifelesswallyworld_: However it is possible to add a cleanup facility to the globals that our doctests have08:05
StevenKwgrant: I don't like that idea. I think it's your turn. :-P08:06
lifelesswallyworld_: this is yet another fail of doctests08:06
wallyworld_so i want to use a feature flag. i can set it up but i need to be able to discard it afterwards08:06
StevenKwallyworld_: with FeatureFixture?08:06
wgrantwallyworld_: If you must use it in a doctest, can you use a FeatureFixture with a with block?08:06
wallyworld_StevenK: yes08:06
lifelesswallyworld_: or08:07
StevenKwgrant: distroseriesqueue-views.txt08:07
StevenKSigh08:07
lifelessfeature = FeatureFixture(...)08:07
wallyworld_wgrant: well, the stuff that needs it is spread throughout08:07
StevenKwgrant: distroseriesqueue-views.txt also fixed by side effect08:07
lifelessfeature.setUp()08:07
wgrantwallyworld_: :(08:07
lifeless...08:07
lifelessfeature.cleanUp()08:07
wgrantStevenK: Excellent!08:07
wgrantStevenK: Do you use testr?08:07
* StevenK runs soyuz-set-of-uploads, but that crap fails if the wind is blowing the wrong way08:07
wallyworld_lifeless: that will work. i was hoping not to have to spread that stuff from one end to the other08:07
StevenKwgrant: I do not08:08
wgrantStevenK: It's handy for stuff like this.08:08
wgranttestr run --failing, done!08:08
LPCIBotProject db-devel build #578: FAILURE in 5 hr 16 min: https://lpci.wedontsleep.org/job/db-devel/578/08:10
wgrantzomg, it works.08:10
wgrantGot rid of that hideous pre-subscription inTeam reimplementation.08:10
StevenKwgrant: Pushed08:11
wgrantStevenK: Great. Will check in a sec.08:11
wgrantStevenK: Is anything left failing except for sourceless uploads?08:11
wgrantAlso, will my eyes survive the diff?08:12
wgrantOur JS infrastructure is fairly nice.08:12
StevenKwgrant: Running -vvm soyuz again ...08:12
wgrantSee you in 50 minutes :(08:12
StevenK29, on this machine08:13
wgrantHmm.08:13
wgrantOh, right 50 was with archiveuploader and archivepublisher too.08:14
=== danilos changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: danilos | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:214 - 0:[######=_]:256
danilosoh, jtv, StevenK: I've removed you from the topic as OCRs, are you still "on duty"? (I thought that was from yesterday)08:21
jtvdanilos: I still am, on request.08:21
StevenKdanilos: I am, for another 35-ish minutes08:21
jtv(But have done about all the backlog I was going to)08:21
* StevenK drops two from the backlog08:25
danilosStevenK, I assume you need not go back on OCR anymore then, and as for you jtv, please re-add yourself to the topic if appropriate :)08:26
jtvdanilos: you broke it, you fix it.  Or just take over OCR.  Your pick.  :)08:27
danilosjtv, heh, ok, ok08:27
=== danilos changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: jtv, danilos | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:214 - 0:[######=_]:256
StevenKdanilos: *shrug* :-)08:28
StevenKI attempted to review benji's drop feature flag branch, but my eyes glazed over at about line 60008:29
jtvAnd I limited myself to one backlog review per person, on grounds of fairness (as in, it's not fair to an engineer to give the poor bastard multiple jtv reviews on the same day)08:31
StevenKHaha08:31
wgrantStevenK: 'for build in builds' should be 'for bpr in bprs', right?08:34
StevenKProbably08:34
wgrant"build.build" is slightly nonsensible.08:34
StevenKwgrant: Fixed locally08:35
wgrantStevenK: Thanks. So packageupload is entirely gone now (apart from spr.packageupload.signingkey), and it appears to work for everything except sourceless uploads?08:35
StevenKwgrant: def notify() depends on it08:36
StevenKwgrant: And _sendSuccessNotification08:36
wgrantThat's rather antisocial of them.08:37
StevenKsend_mail() needs to be weaned off, but that is simple, since it expands all of them from packageupload anyway08:38
wgrantAh, right, I was hoping they'd all just be passed down from notify().08:39
wgrantIs that easy enough?08:39
wgrantIt's a lot of arguments, but meh.08:39
StevenKIt can worked out inside _sendSuccessNotification or inside notify08:39
wgrantWe need to pull it up high enough that we can send notifications without a PU.08:40
wgrantI don't know how high that is.08:40
StevenKwgrant: Currently, notify()08:41
wgrantYou'd best take it all the way to the top, then :(08:41
StevenKI can't easily wean notify off PU08:41
wgrantWhy not?08:41
StevenK_send{Success,Rejection}Notification is fine08:42
StevenKwgrant: Because nearly everything notify() does is in relation to packageupload08:42
StevenKwgrant: http://pastebin.ubuntu.com/612620/08:43
wgrantAh.08:43
adeuringgood morning08:48
StevenKwgrant: I've pushed it all up to def notify()08:51
wgrantStevenK: Great.08:51
StevenK_sendSuccess and such need to grow an action, now08:51
wgrantStevenK: So, that's enough refactoring for now... we just have to get sourceless announcements working. What crashes?08:51
wgrantOr that.08:51
StevenKSince it wants the PackageUploadStatus08:52
wgrantRight.08:52
wgrantThat's all that's keeping packageupload anywhere other than notify()?08:52
StevenKI *think* so08:52
wgrantGreat.08:52
wgrantThis is a really good first step.08:53
StevenKwgrant: Almost08:58
StevenKpackageupload.isAutoSyncUpload(changed_by_email=changes['Changed-By']):08:58
wgrantCan that be a class method?08:58
wgrantNo.08:59
wgrantStill, easy to move across.08:59
wgrantBut what a dirty, dirty piece of code :(09:00
StevenKCan't we just kill it and replace it with if not bprs and spr and changed_by == katie?09:00
wgrantThat was my intention.09:00
StevenKBut yes, makes me vomit09:00
wgrantAnd check signingkey and stuff, yeah.09:00
wgrantThat's the only place it's used, except for tests.09:01
wgrant(yes, it's tested!)09:01
wgrant... but only in distroseriesqueue-translations.txt.09:01
wgrantYay09:01
StevenKHaha09:01
StevenKFail09:01
StevenKIf not signing_key, from_addr is None. Otherwise, it's Changed-By.09:02
StevenKShoot me now09:02
StevenKwgrant: Actually, it's *worse*09:03
StevenKNo, it isn't.09:04
StevenKdistroseriesqueue-translations.txt's isAutoSync... is a re-implementation09:04
wgrantHahahaha09:04
StevenKIt's not bad, so I'll leave it be09:04
StevenKIt's in the interface :-(09:05
wgrantIs that a problem?09:06
StevenKChecking if it is09:06
=== almaisan-away is now known as al-maisan
StevenKwgrant: I was worried it was exported09:12
wgrantPU is exported rather minimally, fortunately.09:12
StevenKIndeed09:12
StevenKI think I've run out of steam, but with one grave hack, packageupload is contained in notify() only09:13
wgrantExcellent.09:13
StevenKSigh, and _getRecipients09:14
wgrantHmm.09:15
wgrantThis is slightly entertaining.09:15
wgrant"Subscribe someone else" makes four AJAX requests to work out where to put the spinner, then three more to perform the action once the spinner is there.09:16
StevenKHaha09:16
wgrantThis means there's more lag between the picker closing the and the spinner appearing than there would be if the spinner was just not used at all.09:16
StevenKwgrant: Do you want to claw your eyes out with this diff?09:16
wgrantStevenK: With pleasure.09:16
wgrantI think I will instead place a static spinner on the "Subscribe someone else" link.09:18
mrevellHello devotrons09:19
lifelesswgrant: ---hah---09:20
wgrantlifeless: Rather.09:20
henningeoh, jtv left us :(09:34
henningedanilos: Hi!09:34
henningedanilos: Can I bother you for a very quick review, please?09:35
henningehttps://code.launchpad.net/~henninge/launchpad/bug-753387-ajax-bug-subscription/+merge/6225609:35
daniloshenninge, if you must09:35
henningedanilos: suffer it to be, I pray thee09:35
danilos;)09:36
henninge:)09:36
daniloshenninge, btw, have you thought of using the actual feature flag check? that makes it so much easier to find it when removing the feature flag09:38
henningedanilos: oh, we have that in js?09:39
* henninge reads up on feature flags09:39
lifelesswe don't09:39
henningeah09:39
lifelesswe generally export a value to the js for the js to consult09:39
lifelessor export custom js based on the flag09:39
lifelessusually the former09:39
daniloshenninge, we do have it in that particular JS file09:39
henninge;-)09:40
henningedanilos: use_advanced_subscriptions09:40
henningedanilos: sorry, I was blind09:40
daniloshenninge, nothing a pair of glasses won't fix :)09:40
henningeotoh, it always makes sense to check is something is null before you use it09:40
wgrantI've just moving that same code around, and was wondering why that isn't all one function.09:41
daniloswgrant, henninge: fwiw, we expect a lot of that code to be refactored with the one final big bug our team is still working on09:41
jmllifeless: I'm not around for the TL call09:42
daniloshenninge, as for the null check, sure09:42
wgrantdanilos: Which bug is that?09:42
daniloshenninge, also, note that I'd move the null check to update_mute_after_subscription_change() then to encapsulate it properly09:42
wgrantI'm refactoring the subscribe someone else stuff at the moment.09:43
wgrantWhich is hopefully mostly unrelated.09:43
daniloswgrant: it's not, it's very much related :(09:43
daniloswgrant: bug 77275409:44
_mup_Bug #772754: After better-bug-notification changes, list of bug subscribers is confusing <story-better-bug-notification> <Launchpad itself:In Progress by gary> < https://launchpad.net/bugs/772754 >09:44
lifelessjml: ok09:44
daniloswgrant: basically, we are changing the subscribers list in a big way, and that means that these links are going to change as well09:45
daniloswgrant: mock-up we are going for: https://launchpadlibrarian.net/71552495/all-in-one.png09:45
henningedanilos: that was actually my first solution09:45
henningedanilos: but I thought "Well, usually there is no reason to do that"09:45
henningeand I'd think it is the caller's responsibility to provide correct parameters, is it not?09:46
wgrantdanilos: How can you separate them like that when the "Other bug subscribers" might include teams of which the user is a member?09:46
wgrantdanilos: Anyway, I think my refactor is pretty much necessary for that. And I hope to be done with it tomorrow.09:47
wgrantdanilos: (at the moment it tries to predict where the new subscriber node will end up, which looks like it'll be just about impossible)09:47
wgrantBut if you are working on this imminently, I can drop this and leave you to it.09:48
daniloswgrant: yeah, we're already in the process of changing that all09:49
wgrantAh, OK.09:49
daniloshenninge, r=me, your call on this, you've got good arguments, and I am not strongly tied to any of the sides09:49
wgrantIt seems odd that the feature was declared done on Monday with a massive change still underway...09:49
jmlwas it?09:50
daniloswgrant: I agree09:50
henningedanilos: I'use the feature flag check and leave out the null check.09:50
henningell09:50
lifelessjml: the squad roster was changed09:50
lifelessjml: which is slightly different, but closely related09:50
jmllifeless: oh ok.09:51
wgrantIt was also intended to release on Monday.09:51
lifelessjml: as you aren't around for the tl meeting, can we have a brief call in ~20 minutes time ?09:51
wgrantAnd it was only decided on Monday that that would not happen...09:51
wgrant:/09:51
jmlwgrant: don't frown. agility!09:51
lifelessjml: new stuff09:51
danilosjml, well, kind of, we left the subscribers list (bug 772754) for maintenance as well, and the "restore subscription on unmute" will only be released with db-deploy09:51
_mup_Bug #772754: After better-bug-notification changes, list of bug subscribers is confusing <story-better-bug-notification> <Launchpad itself:In Progress by gary> < https://launchpad.net/bugs/772754 >09:51
wgrantjml: Heh, maybe.09:52
danilosI do concede that this didn't require full team to work on this one remaining bug, so switching to maintenance was a practical solution09:52
jmlbut, in case you were curious, the whole "moving from feature squad to maintenance" thing is a bit of a mystery to me. flacoste has ideas that I don't quite follow.09:53
jmllifeless: ok. I've got to arrange some stuff, might be a little longer.09:53
daniloshenninge, if you use the use_advanced_subscriptions check, perhaps you should wrap the get_mute_subscription() call in it as well09:53
lifelessjml: a little longer is fine09:53
daniloshenninge, also, note that you might see a merge conflict with db-devel where entire get_mute_subscription was removed09:53
henninge:-P09:54
henningedanilos: err09:54
lifelessbtw09:54
henningedanilos: I did wrap09:54
lifelessexpose_user_administered_teams_to_js is causing timeouts09:54
daniloshenninge, cool, I haven't checked the diff, just responding to your comment, seeing now that you did :)09:54
lifeless(to anyone that recognises that function name)09:54
daniloslifeless, sounds familiar to me09:55
danilosis that +subscriptions page perhaps?09:55
lifelessdanilos: its being called into from milestone view initialisation, and it causes about 5K sqlobject object comparisons (quadratic on number of teams)09:56
lifelessdanilos: which turns out to be moderately inefficient, and when multiplied by the number of milestones series pages show (and others may show) it becomes pretty huge09:57
henningedanilos: do I have your r= for merging into db-devel as well?10:01
henningedanilos: I just tried out the conflict and would like to fix it now and foget about it ;-)10:01
lifelessjml: that said, because the tl call is crazy early, sooner is better ;)10:01
lifelessallenap: jml: bigjools: https://dev.launchpad.net/LEP/NotificationService10:02
lifelessflacoste: ^10:02
allenaplifeless: Cool.10:02
daniloshenninge, yes, you do :)10:03
lifelessallenap: I've just updated the servicesrequirements page, if you were already reading it10:04
allenapotp10:05
henningedanilos: thanks a lot10:06
henningedanilos: for reference, this is the resolved diff against db-devel.10:07
henningehttp://paste.ubuntu.com/612645/10:07
daniloshenninge, cool, thanks10:08
lifelessstub: hi10:09
lifelessstub: I wonder, branchsummary, could I ask you to do the sqlobject/storm bits, enough that it can have some tests wrapped around it?10:10
jtvallenap: somewhat sad news—we'll have to stick to single-package PlainPackageCopyJobs for the time being.10:21
jtvWhich means that the "collate by archive" code that both of us wrote in our own ways go out the window.10:22
bigjoolsit may come in useful later10:23
wgrantIs this for PackageUpload integration?10:26
wgrantOr is there some other consideration?10:26
wgranteg. error reporting10:26
allenapjtv: :_(10:29
jtvwgrant: yes, it's basically error reporting & handling.10:30
jtvNot related to PackageUpload work.10:31
jtvbigjools: I doubt it'll be useful to keep any of that code—it's basically 3 lines.10:32
jtvAnd while I'm looking at this… can we really only copy from a series' main archive?10:33
LPCIBotProject windmill-devel build #133: STILL FAILING in 1 hr 10 min: https://lpci.wedontsleep.org/job/windmill-devel/133/10:33
wgrant:(10:35
jtvOh, to _and from_ main archives.10:36
wgrantjtv: Doesn't PackageCopyJob store the source and target archive?10:40
wgrantPossibly only in the JSON.10:40
wgrantBut still.10:40
jtvwgrant: store, yes.10:40
jtvBut those values get set to the respective main archives for the source and target distroseries.10:40
* jtv mumbles about forgetting non-primary archives altogether and modeling "partner" as an additional distroseries parent instead10:41
wgrantAre we considering partner here?10:42
wgrantIt is meant to be demolished soon.10:42
bigjoolspartner can go to hell10:42
stublifeless: EPARSE10:42
wgrant:)10:42
wgrantI am glad we agree.10:42
wgrantSo it doesn't matter.10:42
bigjoolspartner has no place in DDs10:43
wgrantIf a derivative wants partner, they are stupid.10:43
wgrantRight.10:43
bigjoolsI'm simply not supporting it so they have no option10:43
wgrantHeh, good policy.10:43
* stub tries to recall BranchSummary10:44
wgrantbigjools: I guess creating a new distro doesn't even create the archive, does it... that's handy.10:44
wgrantMay 534 be the only purpose 4 archive that ever exists :)10:44
bigjoolswith any luck10:44
lifelessstub: bug 75858710:45
_mup_Bug #758587: summarising bugs is expensive <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/758587 >10:45
wgrantbigjools: I might point out that rabbit isn't usable in the test suite yet :/10:50
wgrantbigjools: It was disabled yesterday, reenabled yesterday, and is failing again today but I haven't disabled it again yet.10:50
wgrantallenap: Did you see that? :(10:51
allenapwgrant: No, I haven't seen that yet :-/10:51
wgrantIt's failed twice.10:52
wgrantOn lucid_lp10:52
stublifeless: Ahh... confused me by saying 'BranchSummary', not BugSummary11:04
stublifeless: sure11:04
lifelesshhhha 0- yes11:05
lifelessthanks!11:05
lifelessgnight all11:05
jtvI guess we're not actually putting anything in Job.requester yet?11:34
jtvbigjools: Job.requester isn't hooked up yet.  :(11:36
bigjoolsjtv: cock11:36
jtvSee how useful a Launchpad Person would be sometimes?  Even as a stopgap?11:36
bigjoolsjtv: did you see how much work it would be to add?11:36
bigjoolsjtv: I'd not be averse to using the Janitor11:37
jtvProbably not a lot of work… just a matter of adding it to the interface, the model class, & the utility.  Just not sure whether that might interfere with abentley's ongoing Job work.11:37
jtvThe Janitor as a bug reporter?  Heaven help us.11:38
bigjoolsjtv: it's just going to be adding comments on DSDs ...11:38
bigjoolsit already adds comments on bugs elsewhere11:38
jtvBut only along the lines of "you left this open overnight so I threw it away," no?11:38
bigjoolsjtv: no, when uploads close bugs, for example11:39
jtvWell it's a bit of a metaphorical stretch but that to me is still "you left this open so I threw it away."11:39
bigjoolsit's nothing like that!11:39
jtv"It was starting to smell funny."11:39
bigjools:)11:39
jtvAlthough... true, an upload is different from a regular time-based closing.11:40
jtvSo we've already got the Janitor filling in for that Launchpad persona I suggested.11:40
jtvGreat.11:40
jtvMaybe I'll just make the problem worse to drive the point home.11:40
bigjoolsjtv: the janitor is not actually *doing* anything, it's a fake persona that we just stamp onto things11:44
bigjoolsperhaps that was the point that nobody understood in your email?11:44
jtvYes, perhaps.11:46
jtvI thought the examples of "be the owner of things" and "be the author of messages" would exemplify that, but I suppose they didn't.11:46
jtv(As opposed to "create things" and "post messages").11:46
jmlhenninge: I notice that https://code.launchpad.net/~chrisjohnston/launchpad/197793/+merge/61053 hasn't landed. Any special reason?11:48
jmlalso https://code.launchpad.net/~chrisjohnston/launchpad/483373/+merge/6104211:49
henningejml: actually, three of his branches havn't landed.11:50
henningejml: test failures, simple to fix11:50
henningejml: I emailed him to ask if he wanted to fix these himself11:50
henningejml: if don't here back from himi I'll JFDI myself11:50
jmlhenninge: thanks!11:50
henningeI consolidated them in one branch to land: lp:~henninge/launchpad/land-chrisjohnston-187013-197793-48337311:51
StevenKwgrant: packageupload ripped out of _getRecipients12:10
wgrantStevenK: !12:11
wgrantExcellent.12:11
wgrantSo it's in notify() only now?12:11
StevenKI think so. I'll check once I fix this pyflakes issue12:11
=== henninge is now known as henninge-lunch
StevenKwgrant: Yes, it's just notify()12:13
wgrantExcellent.12:13
wgrantSo now we just need to deal with sourcelessness.12:13
wgrant... and test fallout.12:13
StevenKwgrant: I've been thinking about this while cooking dinner. We can probably just re-implement notify() as notification() with spr, bprs and customfiles12:14
wgrantStevenK: If you call it that your apartment will collapse.12:14
wgrantBut yes, something along those lines.12:14
StevenKwgrant: notification() was what we agreed to before? :-)12:14
StevenKwgrant: And then the packageupload gubbins can be held inside queue.py12:15
wgrantnotification() isn't a verb.12:15
wgrantBut yeah.12:15
StevenKOh well, we just fix notify()12:15
wgrantYes.12:15
wgrantFix notify() to not take a PU, moving that into PU.notify.12:15
=== al-maisan is now known as almaisan-away
jtvWhy, oh why does LaunchpadScriptLayer.switchDbConfig sabotage my database connection?12:46
jtv"Connection is closed."12:46
stubIf it was deliberate, maybe to ensure a rollback?12:49
jtvWell the one test for this does switchDbConfig, then opens a cursor and does a query,.12:49
jtvSo I suspect it's something that broke when we went to Storm.12:50
jtv"Test that […] we end up connected as the right user."12:50
jtvIt actually queries current_user.12:51
jtvI try commit / switchDbConfig / access-the-db and it fails in that last step.12:52
jtvswitchDbConfig is implemented as a call to reconnect_stores12:53
jtv…which actually accesses the database through the main store.12:54
jtvI tried passing the same config name as the layer test did, but no change.12:56
wgrantYou know that switchDbConfig is called once in the whole codebase, right?12:58
wgrantWhat are you doing with it?12:58
wgrantEveryone tends to use switchDbUser normally...12:58
=== benji is now known as Guest53291
=== henninge-lunch is now known as henninge
=== almaisan-away is now known as al-maisan
=== matsubara-afk is now known as matsubara
LPCIBotProject windmill-devel build #134: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-devel/134/13:21
abentleyhenninge: bug #41953114:06
_mup_Bug #419531: project name picker search / vocabulary is hard/impossible to use (too many results on exact searches) <disclosure> <regression> <vocabulary> <Launchpad itself:Triaged> < https://launchpad.net/bugs/419531 >14:06
=== jtv changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: danilos | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:214 - 0:[######=_]:256
jcsackettjtv: you still having a problem with the switchDb stuff?14:21
jtvjcsackett: no, I dropped it.14:22
benji___danilos: if you're looking for a somewhat big branch to review, I have just the thing for you: https://code.launchpad.net/~benji/launchpad/bug-784575-flags/+merge/6217514:23
=== benji___ is now known as benji
jcsackettjtv: dig. i was about to suggest the helpers in lp.testing.storm but i just realized those are for switchDbUser, not *Config, so no help anyway.14:23
danilosbenji, ha, sounds just like the thing I've been missing in my life today :)14:23
benjiheh14:23
danilosbenji, though it's measly 2627 lines, not up to my standards :) I'll take it, but it's going to be the last one for today then; also, you've got a conflict14:24
benjidanilos: thanks; I'll look at the conflict now14:24
danilosthank you14:25
=== danilos changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:214 - 0:[######=_]:256
danilosbenji, you might want to prepare a merged branch with db-devel as well since that one has more changes to the code you are touching, so it will raise conflicts when your branch hits stable and is attempted to be merged to db-devel (saying because I've seen the changed code :)14:27
LPCIBotProject windmill-db-devel build #322: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-db-devel/322/14:31
danilosbenji, lines 112, any reason not to make this an actual property defined on the class level? (i.e. field_names = ['bug_notification_level'])14:31
benjidanilos: well, we wouldn't want a list as a class attribute (shared mutables are bug magnets), but we could make it a tuple -- assuming no one tries to append to it14:33
danilosbenji, sure, a tuple would be nicer14:33
benjiif you would, note that in your review and I'll see if the tuple works14:34
danilosbenji, sure, though do note that we've mostly used lists for these in a bunch of LaunchpadFormViews14:34
benjithat's unfortunate; mutable class attributes have cost the universe many an hour14:39
danilosbenji, perhaps worth filing a tech-debt bug and mailing the -dev list to warn of the problem?14:40
benjicould be, I'll think about doing that14:40
danilosthanks14:40
LPCIBotProject devel build #749: FAILURE in 5 hr 34 min: https://lpci.wedontsleep.org/job/devel/749/14:45
jcsackettsinzui: i am trying to qa bug 228355, and it occurs to me that qastaging uses the same signup service as lpnet; i'd rather not create a throwaway account on the service to test the change. thoughts?14:48
_mup_Bug #228355: Unique name reveals hidden email address <disclosure> <lp-registry> <qa-needstesting> <Launchpad itself:Fix Committed by jcsackett> < https://launchpad.net/bugs/228355 >14:48
sinzuihmm14:48
wgrantI have a couple of test accounts on prod SSO.14:49
wgrantAt least one of which I haven't used on qastaging lately.14:49
sinzuiIsn't this about one that has never been used14:50
wgrantWell, I have two SSO accounts that don't have LP people on qastaging. So they will do.14:50
sinzuiyes, thanks14:51
wgrant(I created them back when, er, experimenting with U1)14:51
wgranthttps://qastaging.launchpad.net/~me+ubuntuonetest14:51
wgrantThat looks qa-ok.14:52
danilosbenji, around lines 1224-1254, you remove a test that I believe is still useful to keep around, even if it needs to update for the new +subscribe page (eg. selecting appropriate radio box)14:54
* benji looks14:55
danilosI am mostly concerned because it's related to private bugs14:55
benjiI don't think so.  My reading of that test is that it's about the unsubscribe and then redirect behavior, which the new code doesn't have.14:57
sinzuithanks wgrant14:57
jcsackettthanks, wgrant.14:58
danilosbenji, uhm, ok, but what happens with the new code when someone unsubscribes from the private bug using +subscribe page?14:59
benjido you mean the +subscription page?  or are you really taking about +subscribe?14:59
benjimy understanding is that +susbcribe will be phased out15:00
danilosI mean +subscribe, it's there for non-JS browsers, we are not breaking it even if we were not focusing on it15:00
benjiif you think it's worth testing, I'll rejigger the test to use the new UI15:01
danilosbenji, the test was actually testing +subscribe page for these things, with advanced features, it offers slightly different options, but still works for non-JS browsers15:01
benjiright15:02
danilosbenji, ok, I guess it's best to check with gary when he comes back if we want to keep +subscribe working for non-JS browsers (I assume we do), and then reinstate the tests if true (that includes most of xx-bug-personal-subscriptions.txt that you are removing as well, imo)15:05
danilosbenji, also, this is about Bug:+subscribe, not Product:+subscribe page I think, I am not sure about the latter15:08
LPCIBotProject windmill-devel build #135: STILL FAILING in 46 min: https://lpci.wedontsleep.org/job/windmill-devel/135/15:17
danilosbenji, other than the +subscribe situation which I am unsure about, my other big concern with the branch is keeping the feature flag in the JS, and removing a third feature flag conditional in one place15:29
danilosbenji, thus, needs-fixing for now15:30
benjiit sounds like you found some good stuff, I'll take a look in a while15:31
=== al-maisan is now known as almaisan-away
LPCIBotProject windmill-db-devel build #323: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-db-devel/323/15:53
jcsackettsinzui: chat?16:03
sinzuiyes16:04
jcsacketti believe i have the empathy stuff all set up right.16:04
sinzuiI am told you are not available? were you calling me?16:05
jcsacketti was trying to.16:05
sinzuitry again16:06
jcsacketthuh. empathy just crashed.16:06
deryckHi, everyone.16:14
henningederyck! ;-)16:14
LPCIBotProject windmill-devel build #136: STILL FAILING in 46 min: https://lpci.wedontsleep.org/job/windmill-devel/136/16:17
gary_posterdanilos, benji, yeah, until told otherwise by LP leadership, I suspect we should keep previously-working non-JS functionality around.  I'm thinking of Bug:+subscribe here.16:17
benjigary_poster: the discussion was more about the tests for the new +susbcribe (the one that exists with the feature flag on/removed), I removed some tests for the old +subscribe and need to verify that the new +subscribe has annalogous tests and (I suppose) implement them if not16:19
benji(I haven't (intentionally) removed any functionality.)16:19
gary_posterbenji, huh.  i'm not sure i'm on the right track then'16:20
gary_postergimme a few and we can have a call, to make sure, if that is alright16:20
benjithat's ok, I wasn't on the right track when Danilo and were discussing it earlier :)  I've since found enlightenment.16:21
benjisure16:21
cjohnstonhenninge: ping16:31
henningeHi cjohnston!16:31
cjohnstonHey! Just checking the status of my MPs16:31
cjohnston;-)16:31
henningecjohnston: The tests failed, I forwarded the email.16:37
henningecjohnston: I just wanted to give you a chance to fix the tests yourself but I can do that, too.16:38
henningecjohnston: they are simple to fix16:38
cjohnstonWhen did you send the email16:38
henningecjohnston: yesterday, 9:37 UTC16:39
cjohnstonfound ti16:41
cjohnstonit16:41
cjohnstonwas hidden16:41
jmlhenninge: out of curiosity, did you run the tests with 'ec2 land'?16:49
henningejml: yes, I believe so16:50
jmlhenninge: I ask because it's supposed to email the patch author with the test results as well the lander.16:50
jmlhenninge: if it's not, maybe it's buggy.16:50
henningejml: I created a new branch an merged three of cjohnston's branches and landed that branch16:50
jmlahhh16:50
jmlthat'll do it.16:50
cjohnstonjml just wants me to get more mail since I want to throw the pie :-P16:52
jmlcjohnston: heh16:52
jmlcjohnston: it's actually that I have a deep and abiding belief in automating the processing of information using computers16:53
jmlcall me crazy16:53
cjohnston;-)16:54
deryckhenninge, well done on plowing through some bugs the last couple days.16:54
=== matsubara is now known as matsubara-lunch
henningederyck: ;-)16:55
cjohnstonhenninge: I'm not completely sure how to fix this.. Got time to help me learn?17:01
=== matsubara-lunch is now known as matsubara
henningecjohnston: sure17:03
henningewell, actually, time is the problem17:04
cjohnstonWant to try tomorrow?17:04
cjohnstonI think your nearing your EOD?17:05
henningecjohnston: I am.17:05
henningecjohnston: yes, let's do it tomorrow, if that's ok.17:05
cjohnstonSure.. Do you have a time frame that may be good? Its morning over here, so I'd just like to make sure I'm about.17:06
henningecjohnston: what's your timezone?17:07
* henninge is at UTC+217:07
cjohnston-417:07
henningeoh, not too bad17:08
cjohnstonanytime after 1130 UTC should be good for me.17:09
henningecjohnston: you should just ping me whenever you come online17:09
henningeok17:09
cjohnstonOk.. Sounds great. Thanks17:10
henningecjohnston: actually, I might be at lunch at 1130, make it 1200. See you tomorrow ;)17:11
henningeUTC17:11
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
jmlg'night all17:57
bigjoolsnn from me too17:58
nigelbI'm curious, what's the difference in the two options on the survey?18:12
nigelbjml: ^^18:16
LPCIBotProject windmill-devel build #137: STILL FAILING in 1 hr 8 min: https://lpci.wedontsleep.org/job/windmill-devel/137/18:36
LPCIBotYippie, build fixed!18:53
LPCIBotProject db-devel build #579: FIXED in 5 hr 42 min: https://lpci.wedontsleep.org/job/db-devel/579/18:53
=== abentley changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: abentley | https://code.launchpad.net/launchpad-project/+activereviews | Critical bugs:214 - 0:[######=_]:256
LPCIBotProject windmill-db-devel build #324: STILL FAILING in 1 hr 16 min: https://lpci.wedontsleep.org/job/windmill-db-devel/324/19:33
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
cr3if I get married, I'm registering my marriage as a project on launchpad so that we can track bugs, write blueprints, etc.19:54
LPCIBotYippie, build fixed!20:08
LPCIBotProject devel build #750: FIXED in 5 hr 22 min: https://lpci.wedontsleep.org/job/devel/750/20:08
baccr3: remember we don't have private projects yet, so this will all have to be open source.20:08
cr3bac: I'll make sure the project is under a GPL license so that others getting married have to do the same20:11
beunoI'd be worried about people forking the project with GPL20:15
LPCIBotProject windmill-db-devel build #325: STILL FAILING in 47 min: https://lpci.wedontsleep.org/job/windmill-db-devel/325/20:21
lifelesscody-somerville: hi :)20:31
lifelessflacoste: btw - https://dev.launchpad.net/LEP/NotificationService#preview20:32
cody-somervillelifeless, Hi. :) Besides creating a new branch, I haven't had a chance to start tackling the bug we discussed last night - have been unfortunately been unexpectedly preoccupied today with other matters. I'm still hoping to get around to it today however.20:33
LPCIBotProject windmill-devel build #138: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-devel/138/20:38
lifelesscody-somerville: no worries20:42
lifelesscody-somerville: its rather low hanging, so I might stab at it myself.20:42
lifelessI have one more (phew) email from tuesday to send20:42
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
jkakarDoes Launchpad use PostgreSQL partitions for large tables?21:12
lifelessno21:12
jkakarAh, okay, I've been wondering at what point it makes sense to think about it.21:12
lifelessselena would be a good person to ask, I think21:14
lifelessshe did a 'managing TB's' talk at pgcon last week21:15
cjohnstonIs LP slow for anyone else or is it just me21:17
cjohnstonI'm up to over a minute trying to load a bug report21:17
lifelesswhich bug21:17
cjohnstonhttps://bugs.launchpad.net/bugs/78791421:18
_mup_Bug #787914: Bottom of "Why use Ubuntu?" has "download 11.04" with an 10.10 logo. <Ubuntu Website:New> < https://launchpad.net/bugs/787914 >21:18
lifelessloaded in 3 seconds for me21:18
lifeless0.91 seconds render time21:18
cjohnstonmust be me.. what abot loading the attachment?21:18
sinzuiIt is slow for me, still laoding21:19
sinzuiand still loading21:19
cjohnstonok.. so im not the only one21:19
* sinzui thinks a server is going belly up21:19
lifelessattachment loaded21:19
sinzuistill loading21:19
cjohnstonIt's seemed slow to me for a day or two now, but this is bad.21:19
lifelesswhile thats slow21:20
lifelessplease check -21:20
lifelessping launchpad.net21:20
lifelesswe want no packet loss over 10 pings21:20
cjohnstonFrom eth0.chenet.canonical.com (91.189.88.133) icmp_seq=25 Destination Host Unreachable21:21
lifelessahha21:21
sinzuiI can get to qastaging very quickly, but neither browser is loading lpnet pages21:22
lifeless223 works21:22
lifeless222 does not21:22
lifelessgoig to our ops channel to grab a network guy21:22
lifelesssinzui: could you perhaps tweet on identi.ca? I'll start escalation stuff21:23
lifelessI have to go out soon for a medical appointment21:23
sinzuiokay21:23
cjohnstonI feel better that I'm not imagining things21:24
LPCIBotProject windmill-devel build #139: STILL FAILING in 46 min: https://lpci.wedontsleep.org/job/windmill-devel/139/21:24
lifelesswhen I put 91.189.89.222 launchpad.net into my hosts21:25
lifelessI cannot browse the site21:25
lifelessits failing fast now21:26
lifelessshould be happier now21:28
lifelesssinzui: front end is back21:29
sinzuithanks21:29
cjohnstonlifeless: sinzui 0% packetloss in 14 packets21:34
cjohnstonthis ones from nutmeg21:35
=== mwhudson_ is now known as mwhudson
sinzuideryck: gary_poster: If one of you can confirm that we really do not need to store wiki names any more, we can close about 6 bugs: bug 186660 is the root issue21:47
_mup_Bug #186660: Launchpad shouldn't store wiki names <lp-registry> <users> <Launchpad itself:Triaged> < https://launchpad.net/bugs/186660 >21:47
gary_postersinzui, cool.  deryck, I'm happy to promote that one on my team, or do you want to call it?21:47
deryckgary_poster, you can take that one since I got the downtime action earlier. ;)21:48
gary_posterderyck, +1 :-)21:48
lifelessgary_poster: hi21:50
gary_posterlifeless, hi21:50
lifelessgary_poster: I need a very quick code check with you21:50
gary_posterok lifeless21:50
lifelessgary_poster: can you do voice? its near your EOD so I want to be as prompt as possible21:50
gary_postersure; lemme close a door :-)_21:50
lifelesssay when21:51
gary_posterlifeless, I assume you'd prefer mumble. I'm in yellow one-on-one; join me or drag me21:52
gary_posterSkype is also fine21:52
lifelessgary_poster: mumble is terrible for me from NZ :)21:52
lifelessskype is better, sadly.21:52
lifelessgary_poster: bug 78776521:53
_mup_Bug #787765: ProductSeries:+index timeouts <oem-services> <regression> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/787765 >21:53
=== matsubara is now known as matsubara-afk
=== micahg_ is now known as micahg
cjohnstonlifeless: I'm getting between 5 and 11% packet loss on 222 again23:05
NCommanderStevenK or wgrant: if you have an opportunity, I'd like you to review  my test case for arch any/all skew. (I got sidetracked on working it this and last week due to specs)23:12

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