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

thumperhttps://code.launchpad.net/~thumper/launchpad/epic-email-bug-description/+merge/5197700:04
thumperwallyworld: abentley won't still be here00:04
=== thumper changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
abentleywallyworld: not really :-)00:04
wallyworldabentley: i was hoping for a quick +1 on the recipe build perf mp after i fixed the test :-)00:05
lifelesswgrant: have a look at the same urls in https://bugs.launchpad.net/launchpad/+bug/71106400:05
_mup_Bug #711064: POFile:+translate timeouts <qa-ok> <timeout> <Launchpad itself:Fix Released by lifeless> < https://launchpad.net/bugs/711064 >00:05
lifelesswgrant: (click through I mean) - quite a bit snappier :)00:05
wallyworldabentley:  i take your point about deleted recipes but the page was only designed to show builds with recipes and this mp is a perf tweak. extending what the page is designed to do can be done separately :-)00:06
abentleywallyworld: It doesn't matter what the page is designed to do, because this is model code.00:07
wallyworldthe page will never show builds without recipes due to how the query is structured00:07
lifelessabentley: I thought it was view vode00:07
abentleywallyworld: anyone can see it and reasonably assume that it is safe to call.00:07
wallyworldie select stuff from recipe join build .....00:07
abentleylifeless: no, model.00:07
wallyworldthe recipe will never be None on the page00:08
abentleywallyworld: It does not matter whether the recipe will ever be None on the page.00:08
wallyworldso it is always safe to call00:08
wallyworldsorry, i'm missing something i think00:08
abentleywallyworld: it is not safe to call if the recipe is None, and there's no reason to believe that it will be non-None for an arbitrary caller.00:09
wallyworldbut it isn't a view off of a recipe00:09
wallyworldit is a view off ILanchpadRoot which runs a query and displays some data00:09
wgrantlifeless: Still 4s :(00:09
lifelesswgrant: down from ... 1200:10
wallyworldand that data will only ever contain valid recipes and associated build info00:10
abentleywallyworld: It looks very much like you've added two properties to RecipeBuild.00:10
wallyworldyes, and the recipe there will never be None00:10
abentleywallyworld: is that not the case?00:10
abentleywallyworld: Yes, it will sometimes be none.00:10
wallyworldhow?00:10
wallyworldthe query is guaranteed to return records with recipes00:11
abentleywallyworld: What query?  The query is not connected to RecipeBuild.00:11
wgrantlifeless: :(00:11
abentleywallyworld: It is fully possible for an arbitrary caller to have a RecipeBuild with a None recipe, and to access recipe_name.00:12
wallyworldabentley: the query which is used to implement findCompletedDailyBuilds()00:12
wallyworldbut i guess if they are paging through the results, the recipe could be deleted after the page was first rendered00:12
abentleywallyworld: You have no guarantee that the RecipeBuild was returned by that methode.00:12
abentleywallyworld: Arbitrary code in Launchpad can access RecipeBuilds and then access recipe_name.00:13
wallyworldabentley: the RecipeBuildRecord used in the collection backing the view is constrcuted directly from the result set00:13
wallyworldthe RecipeBuildRecord is a named tuple00:14
wallyworldwith data needed by the view shoved into it00:14
abentleywallyworld: so you're saying that even though this code lives in model, it's actually view code?00:14
wallyworldwell, its code which queries the model and returns some data00:15
wallyworldthe data is currently used by a view but it could be used elsewhere too00:15
wallyworldthe main class is RecipeBuildRecordSet00:16
wallyworldthere's also a BugTaskSet for example that is model code00:16
wallyworldthe rendering of the data is done in the view layer00:17
abentleywallyworld: so my main source of confusion is that I thought we were talking about SourcePackageRecipeBuild, not RecipeBuildRecord, which I don't think I've seen before.00:20
wallyworldah ok. the number of times i've be confused between SourcePackageRecipeXXXX, SourcePackageReleaseXXX is too many to mention. so many similar names00:21
wallyworldetc00:21
abentleywallyworld: well, it's complicated by the fact that SourcePackageRecipeBuild and RecipeBuildRecord seem to refer to exactly the same thing.00:22
wallyworldnot exactly :-)00:22
abentleywallyworld: How not?00:24
wallyworldthe later is akin to a denormalised chunk of data, the other is a straight model object00:24
abentleywallyworld: but they both refer to the same thing, and you can query either to get the same data.00:25
wallyworldmodel object in this case = persistent database object perhaps00:25
wallyworldi would have to take a closer look, but can SourcePackageRecipeBuild directly provide the SourcePackageName, the Archive, the lastest build time etc?00:27
abentleywallyworld: You can get those from SPRB.source_package_release.00:28
wallyworldbut not without navigating the object model00:28
lifelessonely one page of getPublishedSources references to update00:28
lifeless><00:28
wallyworldSourcePackageRecipeBuild is designed to package all required data into a readonly single object, a snapshot of the system state if you like, for easy access00:29
wallyworldto fit the use case00:29
wallyworldi meant RecipeBuiildRecord00:29
wallyworldnot SourcePackageRecipeBuild00:29
abentleywallyworld: I get that you have easier, more efficient access to that data.00:30
abentleywallyworld: I still think the RecipeBuildRecord refers primarily to a SourcePackageRecipeBuild.00:30
abentleywallyworld: And the rest is just precaching.00:31
wallyworldand it comes straight off the query so it can be got with fewer object instantiations, so more efficient00:31
lifelesswgrant: another in _collectLatestPublishedSources00:31
abentleywallyworld: I wasn't talking about whether it was efficient or direct.00:31
abentleywallyworld: I was talking about what it referred to.00:32
wallyworldah ok00:32
wallyworldso given the scope of the mp, ie a perf tweak, you're happy to +1? :-)00:32
abentleywallyworld: I will reluctantly +1 it.  I don't see why you're leaving booby-traps for people who extend it later.00:33
abentleywallyworld: When the fix is a two-line conditional.00:34
wallyworldi don't get what the booby traps are. it's not that uncommon not to pass around entire persistent objects / model objects and instead construct objects more suited to a given use case?00:34
wallyworldbut the conditional is not required00:35
wallyworldi can add it though00:35
lifelesswallyworld: AIUI you're saying that this memo object is never constructed without a recipe00:36
LPCIBotProject db-devel build #413: STILL FAILING in 4 hr 50 min: https://hudson.wedontsleep.org/job/db-devel/413/00:36
wallyworldyes00:36
abentleywallyworld: the booby-trap is that if someone ever constructs a RecipeBuildRecord whose SourcePackageRecipeBuild.recipe is None, then recipe_name will raise an AttributeError.00:36
lifelesswallyworld: and that someone constructing it without a recipe would be changing its contract, so there will be other changes they have to make.00:36
wallyworldsince it is constructed in the resultset decorator00:36
wgrantStevenK: If you see any bug comment spam, you can now hide it yourself.00:36
lifelesswallyworld: I have no particular opinion here, just trying to make sure I understand00:37
wallyworldthe RecipeBuildRecords are not meant to be constructed with null recipes00:37
abentleywallyworld: If that is the contract, then you could put it in the constructor.00:37
wallyworldyes, i could an an assert00:37
wallyworldadd00:38
StevenKwgrant: I didn't think that rolled out yet00:38
wallyworldhopefully namedtuples let me do that00:38
abentleywallyworld: that would make sense to me.  From looking at that object, I see nothing to suggest such a contract.00:38
wallyworldfair call00:38
wgrantStevenK: Just in the last hour or so.00:38
wallyworldi think doing that will remove a lot of the confusion00:39
wallyworldi guess from my perspective, i never expected one would want or need to construct the object without a recipe00:39
wallyworldlifeless: you had a question?00:40
abentleywallyworld: I expect we'll want to construct it with arbitrary SourcePackageRecipeBuilds before long.00:40
abentleywallyworld: and that would include ones without a recipe.00:40
StevenKwallyworld: Looking at production data, there are many SourcePackageRecipeBuilds where recipe is None, because the user has deleted the recipe.00:40
wallyworldabentley: at the moment, it's only constrcuted from the resultset decorator, but that could change00:41
lifelesswallyworld: no, I asked questions to establish a clear picture of the debate00:41
abentleywallyworld: right.00:41
wallyworldStevenK: but those records will never be returned due to how the query is constructed00:41
wallyworldlifeless: oh, i didn't see your questions00:41
lifelesswallyworld: you answered them :)00:42
StevenKwallyworld: I am +0 on adding *another* class for Recipe builds00:42
StevenKThis strikes me as needless duplication00:42
abentleyStevenK: I don't think anyone is suggesting that.00:42
wallyworldlifeless: ok. hopefully you were satisfied with the answers00:42
StevenKabentley: Then I apologise, since I've obviously read what wallyworld is doing wrong.00:43
abentleyStevenK: wallyworld is just extending the existing RecipeBuildRecord class.00:43
StevenKwgrant: Can haz howto?00:43
wallyworldStevenK: it's not duplication since it's not a model object - it's akin to a DTO to package some data needed for a given use case00:43
wgrantStevenK: lp.bugs[1234].setCommentVisiblity(comment_number=2, visible=False)00:43
wgrantWith Visibility spelt properly.00:43
StevenKwgrant: I can't do it via the web UI?00:43
wgrantStevenK: No UI.00:43
wgrantBut it's a trivial API script.00:44
StevenKBah, fail.00:44
StevenKYou'd think the API script would be on the wiki somewhere ...00:44
wallyworldabentley: thanks for the input. i think we managed to reach an acceptable solution once i add the asserts, or maybe i'll just cater for null recipe if we think that's a future possibility, but that will mean changing the page template too perhaps00:45
wgrantStevenK: It is two lines...00:45
wgrantStevenK: I'm not sure that anybody has bothered to publish it.00:46
lifelessI can has OCR? https://code.launchpad.net/~lifeless/launchpad/bug-727560/+merge/5198900:46
wallyworldlifeless: seems there's no OCR but i can have a go if you like00:51
wallyworldor you may prefer a proper review first up00:52
lifelesswallyworld: feel free; we can tap thumper to mentor ;)00:54
thumper?00:54
thumperlifeless: https://code.launchpad.net/~thumper/launchpad/epic-email-bug-description/+merge/5197700:55
lifelessthumper: I have a moderate size, 90% mechanical because of stormification branch needing review00:55
lifelessthumper: on yours now00:55
lifelesstypo00:56
lifelesslots *of* text to add00:56
wallyworldthumper: i was going to have a go since no one was around but if you want it....00:57
lifelesswgrant: want to review thumpers, then I'll mentor?00:57
lifelesswgrant: I see 2 things.00:57
thumperwallyworld: no, you take it00:57
wallyworldthumper: great. i'd like the practice00:57
wgrantlifeless: Sure, looking.00:58
* wallyworld quickly finishes daily recipe build perf fix first so ec2 can chew on it00:59
thumper:-(((01:01
StevenKwgrant: Right, all done. Six comments hiden01:01
StevenK*hidden01:01
wgrantStevenK: Thanks.01:01
thumpertime out proposing a review01:01
StevenKWhee01:01
wgrantthumper: Was it scanning?01:02
thumperpossibly01:02
thumperhttps://code.launchpad.net/~thumper/launchpad/process-email-oops-on-person-adaptation/+merge/5199201:06
wgrantthumper, lifeless: Reviewed the email size thing.01:09
thumperwgrant: ta01:09
lifelesswgrant: thumper: mentored01:13
lifelesswgrant: want to mentor https://code.launchpad.net/~thumper/launchpad/process-email-oops-on-person-adaptation/+merge/51992 ?01:14
thumperlifeless: ok01:14
thumperd'uh01:14
thumperme didn't read01:15
wgrantlifeless: Looking.01:19
wgrantlifeless: Done.01:21
lifelessthumper: second one reviewed.01:29
wgrantThanks.01:31
* thumper relocates01:33
wallyworldlifeless: wondering why candidates[0] and not candidates.first()01:34
wallyworldor are they the same thing in terms of efficiency01:34
lifelesswallyworld: .first() is clearer, they should be equivalent for efficiency. Without reading the code I am not /sure/ that .first() raises IndexError, so I left some [0] around for that case.01:35
lifelesswallyworld: also some tests were going to be less clear with .first() so I left those alone too01:35
wallyworldlifeless: ok. i assume that because only Archive.getPublishedSources() was change and not the others, the the 2 resultset types are interchangable?01:36
wallyworldforgive my storm ignorance01:36
lifelesswallyworld: which 2 resultset types?01:36
lifelesswallyworld: (there are, uhm, 4 or so around)01:36
lifelesswallyworld: and interchangable /where/01:36
wallyworldSQLObjectResultSet and DecorateResultSet01:36
lifelessthey are not interchangable and not compatible01:37
lifelessthats why I stormified getPublishedSources so that I could use DRS01:37
wallyworldok. i saw a few getPublishedSources() methods and initially thought they were off the one interface but not so01:40
wallyworldso my question doesn't make sense anymore01:40
lifelessits entirely possible I have some things in this that ec2 will highlight as faults01:42
lifelessbut I think I identified the types correctly01:42
wallyworldyeah, i suspect i was seeing an issue that's not there. hard to tell sometimes from looking at diffs01:43
wallyworldstorm sure seems better than what it replaced, looking at the diffs - less string literals and more object based approach01:45
lifelesshow do you make a scanned branch in a test ?01:54
lifeless\o/02:04
wgrant * 3472 Exceptions02:04
lifelessflat cunt for timeouts02:04
lifeless*count*02:04
wallyworldlifeless: keep it clean :-)02:07
lifelessnice drop in bugtask:+index timeouts02:08
wgrantWe should be below 2000 excepts per day tomorrow.02:09
wallyworldwgrant: what was the peak value before the tuning work started in earnest?02:10
wgrantwallyworld: I don't really know. But a few days ago it was 23000.02:10
wallyworld!!!!02:10
wgrant16000 of those were that loggerhead thing, though.02:10
wgrantSo it's sort of cheating.02:10
wallyworldstill 7000 (or anything with that many zeros at the end) is too many02:11
wallyworldexcept if its your bank balance - then too many zeros are never enough :-)02:11
* wallyworld needs lunch02:12
lifelessthumper: hey02:13
StevenKwgrant: Test failures with my TAL branch, do agree with http://pastebin.ubuntu.com/574779/02:14
wgrantStevenK: Looks reasonable.02:16
StevenKAnd the tests pass, so I'll toss it at ec2 again02:16
wgrantec2 is only 3.5 hours now.02:16
wgrantIt's nice.02:16
StevenKHeh, yes02:17
thumperlifeless: yus?02:30
lifelessthumper: I have a problem02:31
thumperok02:31
lifelessthumper: I https://bugs.launchpad.net/launchpad/+bug/72295602:31
_mup_Bug #722956: BranchSet:CollectionResource#branches timeouts <bad-commit-12489> <bad-commit-12505> <qa-bad> <timeout> <Launchpad itself:In Progress by lifeless> < https://launchpad.net/bugs/722956 >02:31
lifelessthumper: I had a branch that eager loads that02:31
lifelessthumper: but it failed on qastaging02:31
lifelessthumper: i fixed a typo, but then it failed again with a TypeError doing some adaption02:31
lifelessthumper: IIRC the error properly, it looked like a source package series branch02:31
lifelessthumper: but I don't know how to set one up in the test suite02:32
lifeless    02:32
lifeless    def test_renders_with_source_package_branch(self):02:32
lifeless        source_package = self.factory.makeSourcePackage()02:32
lifeless        branch = self.factory.makeBranch(sourcepackage=source_package)02:32
lifeless        branch.updateScannedDetails(None, 0)02:32
lifeless        logout()02:32
lifeless        lp = launchpadlib_for("test")02:32
lifeless        list(lp.branches)02:32
lifelessis what I have02:32
lifelessbut I suspect its not a 'source package series branch'02:32
lifelessbecause the url is a long one with ~user in it02:32
wgrant   3 TypeError: ('Could not adapt', <lp.code.model.seriessourcepackagebranch.SeriesSourcePackageBranch object at INSTANCE-ID>, <InterfaceClass lp.code.interfaces.linkedbranch.ICanHasLinkedBranch>)02:33
thumperlifeless: a package branch is one whose target is a distro series source package02:33
lifelessthumper: yup, I've got that far02:33
lifelessthumper: then there is the *SeriesSourcePackageBranch* which is the blessed ones02:34
thumperlifeless: also, use factory.makePackageBranch02:34
thumperright02:34
lifelesshow do I get from what I have to the blessed one02:34
thumperoff the top of my head...02:35
thumpersomething like02:35
thumperICanHasLinkedBranch(branch.target).branch = branch02:35
thumperICanHasLinkedBranch(naked_product).setBranch(branch)02:36
thumpercopied from a test02:36
thumperlifeless: lib/lp/code/model/tests/test_branch.py:803:02:37
thumperlifeless: is one way02:38
thumperlib/lp/code/model/tests/test_linkedbranch.py02:39
lifelesslooking, thanks02:39
=== Ursinha is now known as Ursinha-afk
lifelessthumper: thanks!02:43
lifelessthumper: have reproduced the boom02:43
lifelessoh, no, I haven't02:44
lifelessI made the test do it instead ><02:44
lifelessthumper: thanks, *now* I have the failure reproduced.02:51
thumpercook02:51
thumpercool02:51
lifelessits a bit messy - I copied all of lib/lp/code/model/tests/test_branch.py:803: basically, but thats tolerable for now02:52
lifelessok, fixed03:01
lifelesslp-land time.03:01
thumperwgrant: you were right, I was checking the entire email message03:04
thumperwgrant: I've fixed it, and pushing now03:04
wgrantthumper: Great, will look in a sec.03:04
lifelessthumper: can you mentor https://code.launchpad.net/~lifeless/launchpad/bug-727560/+merge/51989 please?03:07
wgrantthumper: Why do you need ZopelessAppServerLayer?03:11
wgrantThat actually starts up an appserver process, IIRC.03:11
thumperwgrant: as opposed to?03:11
thumperthe content gets stored in the librarian03:11
wgrantPlain LaunchpadZopelessLayer.03:11
thumperthe email bits that is03:11
thumperthe script runs in a zopeless environment03:11
thumperso the test should mirror that IMO03:12
lifelessLaunchpadZopelessLayer mirrors that03:12
thumperto be honest, I copied the layer from the TestCodeHandler test03:12
lifelessthe appserver layers are IMNSHO hideous03:12
thumperI'm not entirely sure03:12
wgrantAppServerLayer is a bug.03:12
thumperI could try it with the LaunchpadZopelessLayer03:12
lifelessthumper: I suggest you try LaunchpadZopelssLayer03:12
lifelessjinx03:12
wgrantLaunchpadZopelessLayer provides a librarian.03:12
thumperso... what does the ZopelessAppServerLayer provide?03:15
wgrantAn appserver in a separate process.03:15
lifelessa running zope instance in a subprocess03:15
lifelessit was added for mailman03:15
lifelessand should be nuked from orbit along with the way we intgrate mailman03:16
wgrantMost stuff using it is probably a bug.03:16
thumperhmm...03:16
thumperneeded for the code handler :(03:16
wgrantOh?03:16
thumperTestCodeHandlerProcessMergeDirective03:16
thumperdon't ask me why03:16
thumperI'm not sure03:16
wgrantIt doesn't need it.03:17
wgrantIt may use it.03:17
wgrantBut it doesn't need it.03:17
thumperif fails without it03:17
thumperand passes with it03:17
wgrantThat may just mean that the test is broken.03:17
thumper:)03:18
thumperchanged the layer03:18
thumperand pushed03:18
wgrantThanks.03:18
StevenKlifeless: I spoke to Barry about Mailman 3 at the distro sprint. He said he's close, but there's two things that need fixing.03:22
lifelessStevenK: I know03:22
lifelessStevenK: its one of those things that will happen in 201303:22
* lifeless sadly isn't kidding03:22
StevenKThat makes me sad. :-(03:24
lifelessits not on our todo list for -ages-03:26
lifelessand barry has not got time to do a major overhaul in lp space03:26
lifelessgood intentions aside03:26
wallyworldlifeless: in your mp, why the need for 'distroseriesID = Attribute("DB ID for distroseries.")'. i thought storm did that automagically?03:26
lifelesswallyworld: thats on the interface.03:27
lifelesswallyworld: if its not on the interface security proxies kick you out03:27
wallyworldah, yes. thanks03:27
StevenKlifeless: Well, he also said the two things are broken in core, which means they might get fixed soon. :-)03:28
=== Ursinha-afk is now known as Ursinha
lifelessthumper: you need to click 'approve' as well03:31
thumperlifeless: it isn't approved03:31
thumperlifeless: wallyworld said needs info03:31
lifelessthumper: ian approved it03:32
* thumper looks again03:32
thumperI bet he added comments while I had it open03:32
thumperwhere's our long-poll03:32
wallyworldand optimistic locking :-)03:32
lifelessthumper: thanks!03:35
huwshimiIs it just me or are a bunch of Canonical's websites down?03:39
StevenKSuch as?03:40
huwshimiStevenK: Well Everything. I can't access the irc server, ubuntu.com, canonical.com etc.03:40
wgrantAll good for me.03:40
wgrantWhat does traceroute say?03:40
StevenKAnd me.03:41
huwshimiTraceroute errored after one of internode's servers, but I seem to be connecting again now03:43
StevenKI suspect a route failed over or so03:44
huwshimioh well as long as it was just me03:46
huwshimistill flaky though03:48
wgranthuwshimi: I've just started getting ~50% packet loss in the US.03:50
StevenKTo which part of the US?03:50
StevenKMy route to Fremont is fine.03:50
huwshimiwgant: which isp are you with?03:50
wgrantStevenK: Within L3 in San Jose.03:51
wgranthuwshimi: Optus.03:51
wgrantStevenK: My route to Fremont is fine too.03:51
wgrantDoesn't go through L3.03:51
wgrantOddly.03:51
StevenKI hit Exetel, Alter, and then my server03:52
wgrantI have just one (anonymous) hop between Optus and HE.03:53
StevenKI have one anonymous hop, but it's Telstra's DSL bridges that they like hiding03:56
lifelessI'm well and truely sick of hakcing on BugTask:+index04:08
lifelesswon't another page please start timing out massively. I need a change.04:08
lifelesswallyworld: I thought you were nuking '155 BugWatchUpdateWarning'04:10
lifelessExternalBugtracker for BugTrackerType 'GOOGLE_CODE' is not known04:10
wallyworldlifeless: i've no idea what you are referring to :-)04:10
lifelessbach04:10
lifelesswgrant: ^04:10
wgrantlifeless: That was me.04:10
wgrantBut it requires checkwatches.txt to be redone.04:10
wgrantIt is the hardest OOPS to get rid of.04:11
wgrantSo I did the others first.04:11
lifelesswgrant: the doctest ?04:11
wallyworldi can see how you keep getting us confused, but for future reference, i'm the good looking one04:11
wgrantlifeless: Yes.04:11
lifelesswallyworld: its all about the tabs04:11
lifelesswallyworld: if I fumble the g, it tab completes to you04:11
lifelesswgrant: my sympathies04:11
wallyworldyeah i know, i was just messing with you04:11
lifelesswgrant: if you need a tactical nuke, let me know04:11
wgrantlifeless: We can probably drop that bit of the doctest, but it may be the only test that running the script logs OOPSes properly.04:12
wgrantI will hopefully get back to that next week.04:12
wgrantThere are what.. 300-400 of them a day?04:12
lifelessyeah 10% of remaining daily exceptions04:12
wgrantNote that 1500 of yesterday's exceptions are already fixed.04:13
wgrantSo we are down to ~2000.04:13
lifelesswgrant: -lovely-04:13
wgrantSo it's more!04:13
lifelesshmm04:19
lifelessI find the new style strains my eyes :(04:19
wgrantI think body and comment text is slightly too small.04:19
lifelessthey are to faint04:19
wgrantI've had a couple of friends say the same thing.04:19
lifelesstoo04:19
lifelesswgrant: hmm04:21
wgrantHmm?04:21
lifelesswgrant: reckon you could run dogfood with sql backtraces enabled04:22
lifelessand find where the milestone lookups in https://lp-oops.canonical.com/oops.py/?oopsid=1888C48#repeatedstatements are being triggered ?04:22
wgrantlifeless: Sure.04:22
lifelessditto the distribution one04:22
lifelessthats another second if we fix both of those.04:22
lifelesshttps://bugs.launchpad.net/launchpad/+bug/724033 to record what you find; I'll work up fixes.04:23
_mup_Bug #724033: BugTask:+index timeouts - distributions and milestones being late evaluation loaded - repeatedly - on bug 230350 <qa-ok> <timeout> <Launchpad itself:In Progress by lifeless> < https://launchpad.net/bugs/724033 >04:23
wgrantlifeless: Could you run http://paste.ubuntu.com/574807/ on staging?04:23
wgrantI'm merging the tracebacks branch.04:23
lifelessqas or s?04:23
lifelesswgrant: ^04:24
wgrantlifeless: Whichever has the newer DB.04:24
lifeless$meh04:24
wgrantDoesn't really matter.04:24
lifelessits running04:24
wgrantThanks.04:24
wgrantShouldn't take too long.04:25
lifelessyou want the output, or timing ?04:25
wgrantOutput please.04:25
wgrantShouldn't be much.04:25
wgrantI hope.04:25
lifelesswill tell you when it finishes04:25
wgrantIt only takes a couple of minutes on DF...04:26
lifelesshttps://pastebin.canonical.com/44198/04:26
wgrantThanks.04:27
wgrantlifeless: DF running with backtraced OOPSes.04:28
wgrantlifeless: It may time out too early, but we can just bump the limit I guess.04:28
lifelesshit up https://bugs.launchpad.net/ubuntu/+source/afflib/+bug/230350/+index on it04:28
_mup_Bug #230350: Missing Debian Maintainer field <Ubuntu:Invalid> <afflib (Ubuntu):Fix Released by saivann> <alac-decoder (Ubuntu):Fix Released by warp10> <axiom (Ubuntu):Invalid> <beneath-a-steel-sky (Ubuntu):Fix Released> <bibletime-i18n (Ubuntu):Fix Released by txwikinger> <binkd (Ubuntu):Fix Released> <bzr-builddeb (Ubuntu):Won't Fix> <capisuite (Ubuntu):Invalid> <chinput (Ubuntu):Fix Released by warp10> <chmsee (Ubuntu):Fix Released> <ciso (U04:28
wgrantOh, that one, right.04:28
lifeless(you're logged in)04:28
lifelessany my show-entire-profile is landed so I can get useful data from bug 104:30
_mup_Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I04:30
wgrantlifeless: It timed out too early the first time. Trying some stuff.04:32
wgrantGot it.04:32
lifelesscool04:32
wgrantThe OOPS is large, and bzip2 is slow.04:35
lifelesswgrant: thanks04:37
lifeless         738            0      0.6724      0.0146   canonical.launchpad.utilities.celebrities:75(__get__)04:37
lifeless        +738            0      0.2368      0.0034   +lp.registry.model.person:3369(get)04:37
lifeless:/04:37
wallyworldif an attribute is defined to be a CollectionField but there no exported() wrapping the declaration, does that mean it isn't exported to the webservice?05:28
wallyworldand hence i can delete it?05:28
wgrantThat's right.05:29
wallyworld\o/05:29
wgrantWhich?05:29
wallyworldrelated_bugs on branchmergeproposal05:29
wallyworldit's being replaced by getRelatedBugTasks05:29
wallyworldneed to pass in a user so that only the correct visible bug tasks are returned05:30
wgrantIndeed, not exported.05:30
wallyworldcool. excellent.05:30
lifeless\o/05:30
lifelessI am going to hold a freaking party when we have a 0 oops day05:33
* wallyworld has already removed DecoratedBug and linked_bugs and other stuff. need to start new pipe to do the last bit05:33
wgrantlifeless: Did you find anything else useful in that OOPS?05:33
lifelesswgrant: I05:33
wallyworldlifeless: how many oopses today then?05:33
lifeless've just got back05:33
lifelesswallyworld: read the summary :>05:33
lifeless~ 15K05:33
wallyworldoh, didn't see it, wndow too small05:33
wgrantlifeless: A zero OOPS day is actually not too implausible.05:33
wgrantWe have lots of OOPSes remaining.05:34
wgrantBut most of them are seen very rarely.05:34
wgrantZero exceptions could be doable in the next two months.05:34
lifelessfixing bugs has the impact of fixing bugs.05:34
wgrantThe exception report will be fairly sensible tomorrow.05:35
wgrantWith maybe 10 distinct checkwatches exceptions.05:35
lifelesscurtis is on a rampage05:42
wgrantYes.05:42
lifelesshttp://webnumbr.com/launchpad-oops-bugs.all05:44
wgrantJa, saw that this morning.05:44
wgrantIt's encouraging.05:44
spivlifeless: here, let me fix that Y axis for you: http://webnumbr.com/.join%28bzr-pqm-queue-length,launchpad-oops-bugs%29 ;)05:46
poolie:)05:46
lifelessspiv: lol05:46
StevenKBwahaha05:47
lifelessspiv: still looks nice.05:47
spivlifeless: it does!05:47
lifelesswgrant: distros are due to the vocabulary too05:52
wgrantlifeless: Aha.05:52
wgrantSo that's the two big repetitions fixed.05:52
lifelessits eager loading (something I added)05:52
lifelesswgrant: identified.05:52
wgrantShhhh.05:53
lifelessFixing takes a little longer05:53
lifelessbecause a new object is invoked per row.05:53
wgrantAh.05:53
wgrantSad.05:53
lifelessso I need to:05:53
lifeless - eager load from the outer view class05:53
lifeless - inject into the bugtasks05:53
lifeless - use the resulting attribute05:53
=== almaisan-away is now known as al-maisan
lifelesswgrant: I'm going to wag that user_can_edit_milestone is the cause of the person lookups05:55
LPCIBotYippie, build fixed!05:55
LPCIBotProject db-devel build #414: FIXED in 5 hr 19 min: https://hudson.wedontsleep.org/job/db-devel/414/05:55
wgrantThat probably means that devel is about to fail.05:55
StevenK:-(05:55
lifelessits not05:55
wgrantlifeless: For authenticated requests it is mostly permission lookups in there, yes.05:55
StevenKdevel just started a build, though05:56
wgrantOh.05:56
wgrantThe bad builder must have been culled at some point.05:56
wgrantI didn't think there was enough idle time.05:56
StevenKwgrant: Did you see Jenkins last night, building devel, db-devel and windmill at the same time?05:56
wgrantStevenK: Yes.05:56
wgrantThis morning it did that too.05:56
StevenKNow if only parellel-test passed05:57
wgrantHeh.05:57
StevenKExecuting star-merge bzr+ssh://bazaar.launchpad.net/~thumper/launchpad/inline-recipe-name-edit at Thu Mar  3 03:46:22 201105:58
StevenKbzr: ERROR: no such option: -005:58
StevenKwgrant: ^05:58
wgrantUgh. But it's in the check that lifeless wanted to delete anyway.05:58
wgrantold bzr is old.05:58
StevenKI'm not used to PQM being this quick!05:59
StevenK2 minutes from EC2 shutting down until PQM said sucess05:59
wgrantYes.05:59
wgrantAnd with ec2 an hour quicker....05:59
StevenKRemove the doctest layer too05:59
wgrantAnd also ec2 and buildbot reliable.05:59
wgrantStevenK: Why are Hudson's test durations all 0? Does the subunit -> JUnit XML converter not bring that across?06:00
wgrants/Hudson/Jenkins, your domain is confusing/06:01
lifelessprobably old subunit06:01
lifelessit had a bug06:01
StevenKwgrant: I've been meaning to rename it06:01
StevenKlpci.w.o or so06:01
StevenKIn fact, my plan for that RT is we grow ci.l.n06:02
StevenKBut I've not told lifeless of that plan, so I may get veto'd06:02
wgrantUnder c.c, maybe.06:02
lifelesswe shouldn't put things under the lp domain06:02
lifelessunless they are part of the lp offering06:02
wgrantBut anything, even QA environments, under l.n is a bug.06:02
StevenKSo lpci.c.c works?06:03
lifelessfbm06:03
StevenKBut pqm is under l.n :-P06:03
wgrantthat is a bug.06:03
lifelessor reuse either the pqm or buildbot sites so we don't have to buy another ssl cert06:03
wgrantlifeless: We have a *.canonical.com06:04
lifelessby reuse I mean proxypass a subpart, of course06:04
wgrantMost stuff uses that.06:04
lifelesswgrant: ah, I wasn't aware it was wildcarded06:04
StevenKI also dislike the buildbot name06:04
wgranteg lpbuildbot uses it.06:04
StevenKI'd also like it to be open, but that's a whole other argument06:05
wgrantIf we can tell production-devel to permanently die, it can remain public.06:05
StevenKproduction-devel hasn't been used in what, 4 months? 5?06:06
lifelessthats not a good indicator of need06:06
lifeless[given the use case for it]06:06
StevenKI don't think the branch is even updating anymore06:07
lifelessits not06:07
StevenKSo we can't use it anyway?06:07
lifelessexplictly updated as needed06:07
StevenKI'd rather it just die06:08
wgrantEveryone would.06:08
wgrantBut there are still use cases.06:08
=== al-maisan is now known as almaisan-away
StevenKWhich are security and what else?06:08
wgrantNothing.06:08
wgrantOr a possibly super-urgent non-security fix, I guess.06:09
StevenKSo, we cowboy a fix and then request a deploy over the top?06:09
StevenK(When it's landed and QA'd)06:09
wgrantThat is what would have to replace it.06:09
lifelessok, tracked down the person lookups06:09
wgrantlifeless: In the OOPS?06:09
StevenKwgrant: Oh, so it doesn't sound like crack? :-)06:09
wgrantBecause the set on dev may be different.06:09
lifelesswgrant: its clear as daylight06:12
wgrantlifeless: Oh?06:12
lifelessand easy to fix too06:12
lifelesshttps://bugs.launchpad.net/launchpad/+bug/726370/comments/306:12
_mup_Bug #726370: BugTask:+index timeout - late evaluation of Person/ValidPersonCache <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/726370 >06:12
wgrantAhh06:12
wgrantThat's not all of them, though.06:13
wgrantIt will be most from that particular bug, I guess.06:13
lifelessit will be a big chunk06:13
lifelessup to 2 per row06:13
wgrantRight.06:14
wgrantWon't help bug #1 much at all, though.06:14
_mup_Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I06:14
* StevenK wishes for bugtask deletion/hiding more06:15
StevenKRARGH, stop rebuilding the WADL!06:15
wgrantWhy?06:15
StevenKwgrant: Because Bug 1 is drowning in them06:15
_mup_Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I06:15
StevenKDamn it06:15
wgrantHeh.06:15
StevenKWTB better Makefile, PST06:16
lifelessright, I think thats fixed06:18
lifelessquick smoke test06:18
StevenKIn [12]: c.get_versions()06:18
StevenKOut[12]: []06:18
wgrantOK, looks like I have killed 1/3 of the copying queries.06:18
* StevenK pouts at debian.changelog06:19
wgrantOh?06:19
lifelesswgrant: have you used the DistroSeriesSet.getCurrentSourceReleases optimisation yet ?06:19
wgrantlifeless: No.06:19
wgrantlifeless: Not relevant here, is it?06:19
wgrant(do you want me to test your fix on DF?)06:19
wgrantactually, it's probably doing enough at the moment.06:19
wgrantHalf way there.06:20
lifelesslp:~lifeless/launchpad/bug-726370 rev 1251806:21
lifelesswgrant: if you wanted to see if that helps,t hat would be great06:24
lifelesswgrant: the other thing to do is to break into pdb in https://bugs.launchpad.net/launchpad/+bug/726370/comments/4 and get the template details for that event06:24
_mup_Bug #726370: BugTask:+index timeout - late evaluation of Person/ValidPersonCache <timeout> <Launchpad itself:In Progress by lifeless> < https://launchpad.net/bugs/726370 >06:24
wgrantlifeless: Can't right now.06:24
wgrantThe librarian is getting a bit of a workout.06:24
lifelessyeah06:25
lifelessqueuing it up06:25
wgrantlifeless: That's probably an email address in a message.06:25
wgrantYeah, there are a few of them.06:26
wgranthttps://bugs.launchpad.net/ubuntu/+source/afflib/+bug/230350/+text06:26
_mup_Bug #230350: Missing Debian Maintainer field <Ubuntu:Invalid> <afflib (Ubuntu):Fix Released by saivann> <alac-decoder (Ubuntu):Fix Released by warp10> <axiom (Ubuntu):Invalid> <beneath-a-steel-sky (Ubuntu):Fix Released> <bibletime-i18n (Ubuntu):Fix Released by txwikinger> <binkd (Ubuntu):Fix Released> <bzr-builddeb (Ubuntu):Won't Fix> <capisuite (Ubuntu):Invalid> <chinput (Ubuntu):Fix Released by warp10> <chmsee (Ubuntu):Fix Released> <ciso (U06:26
lifelessshhh mup, sssh06:26
wgrantAt least it got truncated!06:27
* lifeless gambles that this cannot possibly break tests.06:28
wgrantlifeless: ec2 is only 3.5 hours now, but go ahead.06:28
lifelessdo as I say, not as I do.06:28
wgrantWe may also need to preload BugActivity actors, but we might already do that.06:28
lifelessdon't think so06:29
lifelesstheres something triggering TP lookups too06:29
wgrantThat's probably permission checking.06:29
lifelessI suspect another task row thing06:29
lifelesswgrant: [duh] :P06:29
wgrantAlso most of that here should be archivepermissions.06:29
wgrantYet I don't see many of them.06:29
wgrantAh, of course.06:30
wgrantBecause I am a component uploader for most of them.06:30
wgrantHm, no, no archivepermission queries at all.06:30
wgrantHuh.06:30
wgrantMaybe because I'm an admin.06:30
stubThis must be the first good storm of the year. My office roof is leaks :-P06:32
lifelessoh right, its thursday06:35
StevenKstub: Your office roof is one big leak?06:35
lifelessStevenK: he's hosting a wiki06:35
StevenKHaha06:35
wgrantlifeless: How aggressively do you tend to test your preloading?06:36
StevenK lp.registry.tests.test_distroseriesdifference.DistroSeriesDifferenceTestCase.test_base_version_multiple06:36
StevenK  Ran 1 tests with 0 failures and 0 errors in 1.268 seconds.06:36
StevenKSUCCESS!06:36
wgranteg. I've adjusted getBuiltBinaries to optionally grab BPFs and LFAs too.06:36
StevenKwgrant: ^ With changelog parsing goodness06:36
wgrantStevenK: Excellent!06:37
stubGreat. My roof leaks and I'm talking tinglish.06:37
wgrantStevenK: Do you want to coerce a LOSA into getting the populator running on prod at some point?06:37
StevenKDidn't we try that?06:37
wgrantNever on prod.06:37
wgrantI discussed it with spm, but nothing ever happened.06:37
StevenKwgrant: I suspect the best answer is 'file an RT'06:37
wgrantPossibly, but it's your squad now :P06:38
StevenKI suspect the script has bitrotted some06:38
wgrantShouldn't be much.06:38
wgrantI'd be surprised if it was more than import locations.06:38
lifelesswgrant: I tend to not want to overlap unit tests06:38
StevenKwgrant: And uh, DB user06:39
lifelesswgrant: e.g. a single smoke test pushing all the scaling buttons and make sure its flat06:39
* StevenK prods at it06:39
wgrantStevenK: True.06:39
lifelesswgrant: depends on the layer06:39
wgrantlifeless: They are all doctests at the moment, which I might replace.06:39
StevenKlifeless: Thoughts on getting an out-of-tree script run against prod?06:44
lifelesswhat sort of script ?06:44
wgrantOne-off to populate SPR.changelog for old rows.06:45
lifelesslplib? model?06:45
StevenKModel06:45
lifelesshow long will it take to run ?06:45
lifelessminutes? hours? days?06:45
wgrantThat's not entirely clear. Possibly a few days.06:45
lifelessin tree, garbo job.06:46
StevenKThat's a good idea, actually06:46
wgrantEasy enough to port the existing one to that.06:46
StevenKwgrant: What are you doing to mawson?06:47
StevenKEr. Maybe that was me06:47
wgrantIt's me.06:47
StevenKFess up06:47
stubto populate SPR.changelog, do we need to download packages and unpack them? Or pull things from the Librarian?06:51
wgrantStevenK: Download and unpack packages, then upload a file to the librarian.06:52
StevenKThe former06:52
wgrantstub: ^^06:52
wgrantstub: Download packages from the librarian, that is.06:53
stubSo garbo can do that, but need to confirm with the losas that it a) has access to the librarian b) there is suitable disk space in $TMP (if suitable might be large).06:54
lifelessstub: it runs on loganberry, right ?06:55
lifelessstub: main processor runs there IIRC - and it stashes raw mails in the librarian06:55
wgrantloganberry was having disk space issues, but I believe they're resolved now.06:55
wgrantAnd the largest package is only a few hundred megabytes.06:55
stubNot an ideal fit though since this will almost certainly be running with maxchunksize=106:55
wgrantstub: What is the target transaction length?06:55
stubNormally about 4 seconds06:56
StevenKI'm not happy with the query wgrant wrote for it, either06:56
wgrantStevenK: Oh?06:56
StevenKThe first query took 65 *minutes*06:57
wgrantThe new one is fine!06:57
stubBut in this case that is likely irrelevant - just set the maximum chunk size to 1 and do one at a time.06:57
lifelessyup06:57
lifelessalso set a limit on the query of 506:57
lifelessor 50 or whatever06:57
StevenKAnd make sure it cleans up06:57
StevenKOr the LOSAs will be unhappy06:58
lifelessnaturally :)06:58
stubQuery to determine work to do takes 65 minutes? better hope that is just a minute or two with a LIMIT or garbo timeouts will kick in and no iterations will ever run.06:59
StevenKstub: If you can't see any issues with it, I'll start ripping the script apart06:59
StevenKstub: The query has been fixed since then :-)06:59
stubok :)06:59
stubGarbo hourly jobs are currently stopped if they run more than 10 minutes. Daily I think can run for 1 hour.06:59
stubA stand alone script may well make more sense in this case.07:00
wgrantIt's already a looptuner.07:00
lifelessstub: 15 minutes, not 10.07:00
wgrantaaaa PQM Is fast.07:00
stubwgrant: It is a few lines to convert that to a stand alone script, which can then run 24x7 until it completes. More work for the losas though.07:01
lifelessstub: I suggested garbo07:02
wgrantstub: It is *already* a standalone script.07:02
wgrantlifeless said garbo.07:02
lifelessstub: because it will need less losa work, and thats a massive bottleneck for us right now.07:02
stubRight. If the caveats I mentioned don't raise alarm bells, no problem.07:02
StevenKI'm happy enough to follow IBug.reindex's lead and do it as a garbo job07:02
StevenKsteven@liquified:~/launchpad/lp-branches/populate-spr-changelogs% pyflakes lib/lp/scripts/garbo.py | wc -l07:09
StevenK3407:09
* StevenK sobs07:09
adeuringgood morning08:52
maxbgosh, it's a novelty to see time-based greetings on IRC which actually match your local timezone :-)08:54
* maxb is on a bus to work08:54
bigjoolsmorning all09:12
wgrantMorning bigjools.09:15
lifelessstub: shall we have a brief call ?09:20
=== almaisan-away is now known as al-maisan
stublifeless: Gimme 2 mins09:23
lifelessthumper: ping - care to see if you've fixed bug 604654 in passing ?09:23
_mup_Bug #604654: save a roundtrip on POSTs <lp-foundations> <Launchpad itself:Incomplete> < https://launchpad.net/bugs/604654 >09:23
mrevellHello09:25
lifelessstub: sure09:28
stublifeless: back09:29
lifelessstub: skype?09:32
=== allenap changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: allenap | https://code.launchpad.net/launchpad-project/+activereviews
wgrantallenap: Morning.09:38
allenapwgrant: Morning :)09:38
wgrantallenap: Could you please review https://code.launchpad.net/~wgrant/launchpad/bug-728246-copy-expiry-queries/+merge/52020?09:38
allenapwgrant: With pleasure.09:38
wgrantallenap: Thanks.09:40
lifelessstub: https://bugs.launchpad.net/launchpad/+bug/727560 - as an example of a nonbugs query09:43
_mup_Bug #727560: Archive:EntryResource:getPublishedSources <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/727560 >09:44
lifelessstub: 5 seconds to grab the first batch *after* removing unnecessary joins09:44
stublifeless: You are still broken up09:49
stubha09:49
lifelesshttps://launchpad.net/oops-repository09:53
wgrantAre recipes for +junk supported?10:29
wgrantThey broke last week.10:29
gmballenap: Morning. I have a branch up for review if you've got the time: https://code.launchpad.net/~gmb/launchpad/prevent-bnl-nothing-oopses-bug-721400/+merge/5203610:56
allenapgmb: Sure :)10:56
gmbTa10:56
allenapI'm still on wgrant's right now, but I'll try and get a move on.10:56
gmbNo massive rush.10:57
gmbBut puppies die for every half hour that this review takes.10:57
gmbAnd I have a finite supply10:57
=== al-maisan is now known as almaisan-away
wgrantadeuring: Hi.11:12
adeuringhi wgrant11:12
wgrantadeuring: Bug #705176 is blocking rollouts at the moment. It's marked [incr], but qa-tagger wants QA tags and I wonder if there is any QA that can be done?11:12
_mup_Bug #705176: Improve sharing information on translation pages <upstream-translations-sharing> <Launchpad itself:In Progress by henninge> < https://launchpad.net/bugs/705176 >11:12
adeuringlet me check...11:13
wgrantadeuring: Thanks.11:55
allenapgmb: Line 43, you start a feature_flags() context, but flags are not changed. Is it needed?11:56
wgrantallenap: Also thanks.11:56
gmballenap: Yes. If you don't do it in the feature flags context it will pay no attention to the subscriptions bug_notification_level (the field just doesn't exist if malone.advanced-subscriptions.enabled isn't True.11:56
allenapwgrant: Sorry I took so long. I have been very distracted this morning talking unittest with one of the server team :)11:57
wgrantallenap: No worries.11:57
allenapgmb: How does the feature_flags() context know to configure malone.advanced-subscriptions.enabled? Honest question, feature flags still baffle me.11:58
gmballenap: It's added in the test setUp().12:00
=== almaisan-away is now known as al-maisan
gmballenap: The feature_flags() wossname just (re)populates the feature flags stuff; if you don't have that context in place then all feature flags are off.12:01
allenapgmb: Right, that's bonkers, but okay :)12:02
gmballenap: A bit, yes. I think it's because they're tied to the request somehow, but frankly it's all a bit voodoo to me.12:03
gmballenap: Ta for the review.12:05
* gmb lunches12:07
=== matsubara-afk is now known as matsubara
jamI just got a bug post spam message. I thought I saw something about making it easier to hide them.12:21
jamCan anyone help with: https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/540280/comments/1712:21
_mup_Bug #540280: openssh (or gvfs) asks for a password everytime I change directory in sftp <lucid> <regression-release> <bzr-gtk (Ubuntu):Triaged> <gvfs (Ubuntu):Triaged> < https://launchpad.net/bugs/540280 >12:21
stubShould database model objects for the session database tables go in lib/lp/services/session/model.py or lib/lp/services/session/model/session.py ?12:42
stubor lib/lp/services/model/session.py?12:43
jamquick process question, if I want to update a sourcecode dependency, do I just update utilities/sourcecode.conf and run utilities/update-sourcecode? Is there anything else that should be done other than submit that 1-line change for review?12:47
stubjam: Think that is it. Maybe let the mailing list know so people think of it when they see the inevitable weird error messages.12:51
jamthanks, stub12:52
danilosmrevell, hi13:47
mrevellhey danilos13:52
danilosmrevell, hey-hey13:56
danilosmrevell, I want you to do stuff for me — will you? :)13:56
mrevelldanilos, I will, will. What do you want?13:56
danilosmrevell, (I hope you are not going to ask what it is now :)13:56
danilosI knew it!13:56
mrevellhah13:56
mrevell:)13:56
danilosmrevell, heh, so, I was going through the mockups on https://dev.launchpad.net/LEP/BetterBugSubscriptionsAndNotifications/Testing/EditingRound2 and gary_poster forwarded me your commentary as well13:57
=== dpm_ is now known as dpm
danilosmrevell, however, I found a few other cases which are not covered in the mock-ups that I want to implement, and I am going to be missing the text for them13:57
danilosmrevell, I wrote it all down on https://dev.launchpad.net/LEP/BetterBugSubscriptionsAndNotifications/DirectSubscriptionsOnBug13:57
* mrevell looks13:57
mrevellOkay Daniel, how can I help-?13:58
danilosmrevell, now, I'd be happy if you can come up with descriptions for every of the "potential actions" in there13:58
danilosmrevell, well, both ACTION and DESCRIPTIONs13:58
danilosmrevell, no need to do it for those which are already covered in user testing and existing mockups13:59
danilosmrevell, (just haven't extracted that yet)13:59
mrevelldanilos, Where ACTION is the link text and DESCRIPTION is some kind of tool-tip?13:59
danilosmrevell, exactly14:00
mrevellNo problem. When do you need it?14:00
danilosmrevell, I think stuff that is missing is mostly team-related and supervisor related14:00
danilosmrevell, by yesterday, but tomorrow morning is fine as well :)14:00
danilosmrevell, of course, if you are busy, I'll probably come up with stuff myself since I am away next week, and let others fix it :)14:01
mrevellHeh. Hmm .... okay, I have a couple of other things to do this afternoon but I can fit this in too. I'll have something with you in the next few hours.14:01
cr3hi folks, congrats on taking a whole second off total time of all launchpad pages!14:01
daniloscr3, wasn't me, I promise!14:03
cr3danilos: I hear it was IS this time around, do you happen to know if it would be possible to know more about what they did to the load balancer?14:05
daniloscr3, I believe lifeless and LOSAs know all about it, and that's where the thanks should go14:06
cr3danilos: the LOSAs are an elusive bunch though, so I thought of thanking the whole launchpad-dev folks in the hope it would include LOSAs too14:08
daniloscr3, heh, I think they don't want to be considered part of LP team because I am part of the LP team: who'd want to be grouped together with me?14:09
maxbSpeaking thereof, are the LOSAs back from their sprint yet? I've had a fairly trivial LOSA-needs-to-run-stuff question open for ages :-/14:09
cr3"I don't care to belong to any club that will have me as a member" -- Groucho Marx14:09
gary_postermaxb, it doesn't happen to be a SQL-against-staging thing, does it?14:10
maxbno, it's a branch stacking fixup thingy14:10
maxbthey have a script, they just need to execute it14:10
gary_posterack maxb, can't help then14:11
=== jcsackett changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: allenap, jcsackett | https://code.launchpad.net/launchpad-project/+activereviews
adeuringallenap, jcsackett: could one of you please review this MP: https://code.launchpad.net/~adeuring/launchpad/bug-681434/+merge/52071 ?14:33
jcsackettadeuring: i'm looking one MP right now, but it's short. happy to look at that in a moment.14:33
adeuringjcsackett: thanks!14:33
sinzuiallenap: jcsackett: will either you have time to review https://code.launchpad.net/~sinzui/launchpad/lookup-bug-redirect-0/+merge/51978 today14:36
jcsackettsinzui: just did it.14:36
jcsackettit was the short one previously mentioned. :-)14:37
sinzuiI see14:37
sinzuinever mind14:37
sinzuithanks14:37
jcsackettyour welcome. :-)14:37
derycksinzui, hey, I haven't had time to think long about your email due to sprint, but I think your assessment of those rules seems right to me.14:37
derycksinzui, maybe gmb or allenap could comment more fully if you need.14:38
sinzuideryck: thanks for reminding me to follow that up14:38
=== vednis is now known as mars
allenapderyck, sinzui: Actually, I meant to comment on that already. I'll do that now.14:38
deryckawesome.  Thanks, allenap!14:38
=== Ursinha is now known as Ursinha-lunch
=== cr3_ is now known as cr3
adeuringjcsackett: thanks for your review!14:51
jcsackettadeuring: welcome. sorry i forgot to ping you i was done. :-)14:52
adeuringjcsackett: no problem :)14:52
m4n1shneed some clarification related to PPA terms of service15:17
m4n1shif I have a library which is not packaged15:21
m4n1shbut still I want to use it in my application15:21
m4n1shI am including it in the source tree15:21
m4n1shthe source is available15:21
m4n1shbut the source contains the blob15:21
m4n1shif i package it and put it in PPA, with a link to the actual source, would it be against ToS?15:22
leonardrallenap or jcsackett, i request a review of my awesome branch: https://code.launchpad.net/~leonardr/launchpad/bug-106338/+merge/5208515:25
allenapleonardr: Sure, I'll look at it in a bit :)15:26
m4n1shleonardr: can you answer this ToS question? I am not very sure15:27
leonardrm4n1sh: sorry, i don't know15:27
mrevellm4n1sh, Hi, I may be able to help15:27
m4n1shanyone can?15:27
m4n1shmrevell: yeah, Please15:28
bigjoolswhat sort of blob?15:29
mrevellm4n1sh, What's the licence of the blob?15:29
mrevellAnd why can't you include it as source?15:29
m4n1shI can15:29
bigjoolsadd it as a depenency in another package15:29
m4n1shbut again it might be replicated in other appls too15:29
m4n1shbigjools: the project newtonsoft-json isn't package15:29
m4n1sh*packaged in debian15:29
m4n1shor anywhere15:29
m4n1shand I wanted to use the library quickly without adding the whole gigantic source code in my project15:30
m4n1shthe license of newtonsoft-json is MIT15:30
bigjoolsyou must include sources15:30
mrevellm4n1sh, If you don't want to include the library's source in your package, which is probably a good idea, then you'll need to package it separately.15:32
mrevelland, as bigjools says, add it as a dependency.15:32
m4n1shyeah, which means that increases the work15:32
bigjoolsif you provide a binary and no source, it's violating the licence isn't it?  I don't know what MIT says.15:32
m4n1shMIT is permissive15:33
m4n1shcan be closed15:33
bigjoolsok15:33
m4n1shbut the thing is that including a blob in open source code is looked down upon15:33
bigjoolsI'm not entirely sure of the PPA ToS here15:33
m4n1shand might be against ToS15:33
m4n1shI just wanted to be sure, why do all these stupidity if it can be avoided :)15:34
allenapleonardr: The mp says "Text conflict in lib/lp/bugs/tests/test_bugs_webservice.py".15:43
leonardrallenap: ok, i also got some test failures, so i will ping you when i have everything resolved15:43
allenapleonardr: Cool.15:44
=== matsubara is now known as matsubara-lunch
=== beuno is now known as beuno-lunch
leonardrallenap, try now16:40
allenapleonardr: Will do.16:41
leonardrallenap: now pushing a small additional revision that fixes bug 72850716:49
_mup_Bug #728507: Expose classes of exceptions with webservice_error() instead of calling export() on each instance. <api> <tech-debt> <Launchpad itself:New> < https://launchpad.net/bugs/728507 >16:49
=== al-maisan is now known as almaisan-away
allenapleonardr: All looks good.16:59
leonardrallenap: just to make sure, did you get r12504?16:59
allenapleonardr: Yep.16:59
leonardrgreat17:00
=== beuno-lunch is now known as beuno
jcsackettallenap: can you take a look at https://code.launchpad.net/~jcsackett/launchpad/spam-messages-visibility/+merge/52097?17:22
jcsackettor are you swamped?17:22
allenapjcsackett: I'm not going to be able to get to it until I return after 2000 UTC.17:23
jcsackettallenap: that's alright; it needs a db review too, so it won't move out of review till tomorrow.17:24
jcsackettwould you rather i hunt down someone else?17:24
allenapjcsackett: Okay, I'll look later.17:24
jcsackettallenap: fantastic. thanks. :-)17:24
rvbaallenap: can you take a look at https://code.launchpad.net/~rvb/launchpad/fix-missing-add-distro-link/+merge/52104?17:28
allenaprvba: I don't think I'll have time today. jcsackett, could you take that one?17:29
rvbaallenap: nothing urgent really, and I'm off for today too17:29
jcsackettallenap, rvba: sure, i've got it.17:29
rvbajcsackett: all right then, I'll see your comments tomorrow morning then ;-)17:30
jcsackettrvba: indeed. have a good evening. :-)17:30
mtaylorwhatever happenend to merge queues17:32
allenaprvba: Cool. Fwiw, when asking for a review from the on-call reviewer there is usually an expectation that you'll be around for a while to answer questions. If you can't be around, mention it; most reviewers will take the proposal anyway, but it's worth checking.17:32
rvbaallenap: good to know17:32
=== matsubara-lunch is now known as matsubara
lifelesssinzui: ping18:45
lifelessbug 728609 - can you guys take that on? its an interrupt from oem18:46
_mup_Bug #728609: Elements are not closed on bug page source <escalated> <oem-services> <Launchpad itself:Triaged> < https://launchpad.net/bugs/728609 >18:46
sinzuilifeless:  crack markup?18:50
lifelesslink elements are not closed, xml fail for greasemonkey18:51
sinzuiI will fix this now18:51
lifelessjamesf in -ops reported it18:51
=== leonardr__ is now known as leonardr
lifelesssinzui: how do we hide messages? https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/540280/comments/1718:55
_mup_Bug #540280: openssh (or gvfs) asks for a password everytime I change directory in sftp <lucid> <regression-release> <bzr-gtk (Ubuntu):Triaged> <gvfs (Ubuntu):Triaged> < https://launchpad.net/bugs/540280 >18:55
jcsackettleonardr: ping.18:57
leonardrjcsackett, hi18:57
jcsacketti just saw you linked a branch to 106338; this is a full fix to the bug?18:58
jcsackettsinzui asked me to look at that other day, so i assigned myself. i've done a little work but yours looks like it covers the issue.18:59
jcsackettleonardr ^18:59
leonardrjcsackett: yes, it's a full fix18:59
jcsackettleonardr: cool. i'll unassign myself and assign you. thanks.19:00
leonardri'm now working on similar bugs like 34590419:00
jcsackettleonardr: dig.19:01
lifelessgmb: yo19:05
lifelessgmb: your subscription form should be loading more snappily now19:05
leonardrlifeless: i'm considering having lazr.restful treat all IntegrityError exceptions as 400 ("Bad Request"). do you think there are situations in which an OOPS would be appropriate, instead?19:17
lifelessleonardr: IntegriterError's get retried by the publisher19:20
lifelessmessing with them is almost certainly a mistake19:20
lifelessthey are a routine part of working with our DB19:20
leonardrlifeless: i'm not proposing messing with them in any way that inteferes with the normal usage of them19:21
leonardri'm trying to fix bug 34590419:21
_mup_Bug #345904: API: IntegrityError when trying to create a newTask to a bug that already has one for that project <api> <lp-bugs> <oops> <Launchpad itself:Triaged> < https://launchpad.net/bugs/345904 >19:21
leonardrwhich is that, once the integrity error has been retried and retried, it's raised to the client19:21
leonardrand becomes an OOPS19:21
leonardrin the case of 345904, the integrityerror was caused by the end-user, so an oops is not appropriate19:22
lifelessin the normal web ui19:22
lifelessthe user would also expect a nice error19:22
jkakarFYI, I'm getting repeated OOPS emails related to branch that doesn't seem to be rebuilding its diff.  The latest one is: OOPS-1888MPJ14019:22
jkakarI've been received one every 10 minutes for the last 70 minutes.19:22
lifelessso my immediate reaction is to ask 'why does the web service not do the same thing'19:23
lifelessjkakar: thanks19:23
jkakarlifeless: np19:23
lifelessthose oopses aren't syncing all that often, or something19:23
leonardrlifeless: perhaps some essential validation code is in the view when it shouldn't be19:24
lifelessleonardr: yes, thats what I suspect is the case.19:24
lifelessleonardr: it would be easy for this to be created by a user at the moment. But also19:25
lifelessleonardr: if two users add a task at the same time, we would get a mid flight collision, and it wouldn't be either users fault.19:25
lifelessleonardr: for *this specific* integrity error, it seems to me we should be handling this in e.g. model code, raising an appropriate error if the task is already there.19:26
leonardrok19:31
lifelessthe idea of a systemic fix is appealing19:38
lifelessbut sadly I don't think the causes for integrity error are homogeneous enough19:39
lifelessleonardr: curtis has a lot of experience with validators19:49
lifelessleonardr: I suggest asking him about how to move that call from view to model19:49
leonardrk19:49
leonardrsinzui, let me know when you have a minute19:50
abentleyleonardr: is there a less hacky way of getting Launchpad._root_uri ?19:56
leonardrabentley: what are you trying to do?19:57
abentleyleonardr: I am trying to create a WebServiceTestRequest with the correct root URI: WebServiceTestRequest(SERVER_URL=str(launchpad._root_uri))19:58
leonardrto answer your immediate question, i think ._root_uri is the simplest way to get the root uri19:59
abentleyleonardr: so that I can get web service url with canonical_url.19:59
leonardrabentley: you might like the code i'm about to land19:59
leonardrwhat do you want to do with the web service url?20:00
abentleyleonardr: so that I can do Launchpad.load() on that URL to get the restfulclient version of that object.20:00
leonardryes, you will like this code20:00
leonardrin the meantime, you can pass force_local_path=True into canonical_url20:00
leonardrthat will give you a relative url, which you can pass into load()20:00
leonardrmy branch adds api_url to lib.lp.testing20:01
abentleyleonardr: Cool.  We may hit conflicts if you've updated ws_object.20:03
abentleyI was updating it, too.20:03
leonardrabentley: what is ws_object? sounds like something i should be aware of20:04
abentleyleonardr: it accepts a Launchpad model object and returns the corresponding lazr.resfulclient object.20:04
leonardrabentley: i didn't know about that--we should change it to use api_url20:06
abentleyleonardr: my thoughts exactly.20:06
_thumper_sinzui: ping20:15
=== _thumper_ is now known as thumper
thumperbac: ping?20:17
bacthumper: on the phone20:17
thumperbac: ack20:18
* thumper smirks20:18
thumperanyone familiar with our release file upload limit of 200 meg?20:18
thumpermy understanding is that it is per file limit only20:18
thumperand we don't have a per-project limit on uploaded files, is that right?20:18
allenapjcsackett: I'm not going to get to your review this evening. Would you like me to do it in the morning (i.e. before you come online)?20:19
jcsackettallenap: that would be fine. thanks for offering. :-)20:19
allenapjcsackett: Cool :)20:20
sinzuihi thumper, leonardr20:20
leonardrsinzui, take a look at https://bugs.launchpad.net/launchpad/+bug/34590420:20
thumpersinzui: hi, do you know the answer to my question above?20:20
_mup_Bug #345904: API: IntegrityError when trying to create a newTask to a bug that already has one for that project <api> <lp-bugs> <oops> <Launchpad itself:Triaged> < https://launchpad.net/bugs/345904 >20:20
bacthumper: i agree with what you said20:23
sinzuithumper: released uploaded are not actually limited we observer lp/network/user fails at about 200 meg. Some users have uploaded 640meg, other cannot get 20 megs uploaded20:23
thumperbac: ok, thanks20:23
thumpersinzui: ok, thanks too20:23
bacsinzui: is that true?  i thought we did have a hard limit, even though a lot of time there are time outs before people can push a file of that size20:24
bacthere was a hard limit the last time i worked on it20:24
sinzuileonardr: the issue here is that the method/factory that tried to create a duplicate bugtask for a product without first checking that it already exists20:24
leonardrsinzui: right. the validation code that should be in the model is in the view20:25
leonardrand i don't know enough to move it20:25
* bac reboots. bbiab20:27
sinzuileonardr: I think this is a simple check to look for the same target among the existing bugtasks. the view is doing this. I think we need to push the check into the model and have the view call it in validate() and addTask() call it.20:29
sinzuileonardr: I need to get my children from school. I can help after I find the code you are looking at20:29
leonardrsinzui: the method that does the validation is valid_upstreamtask. so i should explicitly call that in addTask, and raise an exception if it's false?20:30
sinzuithumper: lifeless: the invalid markup on bug pages comes from the LP.cache js in the page. We cannot place xhtml into a jsblock without <![CDATA[xxx]]>. Recall that the TALES engine goes belly up when we place CDATA instructions in the page20:33
sinzuileonardr: yes, raise an exception in that method is right.20:34
thumpersinzui: we aren't placing xhtml into a jsblock are we?20:34
thumpersinzui: we aren't there...20:34
thumpersinzui: ah... you mean the bit at the bottom20:35
thumpersinzui: where we added the xhtml representation20:35
thumpersinzui: do you recall why TALES barfs?20:35
lifelesssinzui: thumper: did that change in the last couple of days?20:37
lifelessthis is apparently a regression20:37
thumperlifeless: it changed at the end of last week I think20:37
lifelessthen yeah, that fits - we had a rough couple of deploys20:37
leonardrsinzui: ok, i thought it had to go into some special validation code20:37
lifelesswhy do we include xhtml in the initial json on the page? Won't it be redundant with the initial page state?20:38
thumpersinzui: don't we do something like // <![CDATA[20:38
thumpersinzui: ... // ]>20:38
=== cody-somerville_ is now known as cody-somerville
allenapsinzui, thumper: simplejson.encoder.JSONEncoderForHTML.20:53
thumperallenap: which does what?20:54
sinzuithumper: we do not do that because the tal process died when we tried20:54
allenapthumper: It also escapes <>& in json.20:54
thumperallenap: we'd need to then unescape it when we want to use it20:55
thumperbut that may be a sane approach20:55
allenapthumper: No. It escapes into javascript escapes, i.e. < becomes \\u003c20:55
allenapSo it works out of the box.20:55
thumperallenap: ah...20:56
thumpersinzui: since you've claimed the bug, want to try it?20:56
sinzuiallenap: I investigated that lat last year and discovered Lp has an old version20:56
sinzuimaybe I remember incorrectly20:56
allenapsinzui: I think you're probably right. The code is very simple though, so even if we don't upgrade simplejson, we can use that class.20:57
allenapBug 684430.20:57
_mup_Bug #684430: Use JSONEncoderForHTML when preparing JSON fragments for pages <lp-foundations> <Launchpad itself:Triaged> < https://launchpad.net/bugs/684430 >20:57
sinzuiyes20:57
* jcsackett has very sad internet connection20:58
thumperI got a bunch of TestPoppy errors from ec220:59
thumperwisted.internet.error.CannotListenError: Couldn't listen on any:2121: [Errno 98] Address already in use.20:59
thumperanyone else getting these?21:00
lifelessthumper: why do we put xhtml in the initial page render ?21:01
lifelessthumper: I understand why we optionally send it in api responses21:01
thumperlifeless: because it is part of the entry code21:01
lifelessthumper: but does it serve any value in the initial render ?21:02
thumperlifeless: I'm not entirely sure...21:02
thumperlifeless: not as far as I'm aware21:02
lifelessthumper: I thought it needed to be explicity requested ?21:02
thumperthe initial one has it21:02
leonardrthumper: i don't think it's useful now, but the same code that updates the page when that html data changes can be used to create the _initial_ state of the page21:02
leonardrif oyu're talking about what i think you are21:02
lifelessleonardr: but we ship a valid initial state of the page for non-javascript clients anyway21:03
lifeless(or am I wrong?)21:03
leonardrlifeless: you're not wrong21:04
leonardrsinzui: does this make any sense? http://pastebin.ubuntu.com/575180/21:04
wallyworldleonardr: thumper: standup?21:06
thumperaye21:06
leonardrwallyworld: @operation_for_version('devel')21:09
leonardrat the bottom of the annotations21:09
gary_posterallenap, jcsackett, I have a large branch up for review if you are willing.  https://code.launchpad.net/~gary/launchpad/bug723999/+merge/5213321:11
jcsackettgary_poster: i believe allenap is out for the day, so that pretty well leaves me. :-)21:12
gary_posterok jcsackett, pretty please then? :-)21:13
* jcsackett looks21:13
* jcsackett whistles21:13
jcsackettover 1000 loc, eh? you weren't kidding. :-p21:13
gary_poster:-D21:14
jcsackettnearly half deletes tho. i like that.21:14
gary_posterand lots of comments!21:15
sinzuileonardr: that looks right. I expected the assert to be self.assertWithContent()21:15
leonardrsinzui: does that require an exact match? the string includes the random product name21:17
sinzuiit does require an exact match. You can interpolate the random name, or just create the product with name='stoat'21:18
sinzuiWe do not have enough weasel family members in our tests21:19
sinzuiotter, mink, stoat, badger, skunk, dotson.21:20
LPCIBotProject devel build #500: FAILURE in 5 hr 11 min: https://hudson.wedontsleep.org/job/devel/500/21:24
lifelessthumper: sinzui: leonardr: so can we fix this by removing the xhtml in the initial load? smaller initial page, less render overhead21:25
leonardrlifeless: yes, i think so, since i doubt we have any code depending on that xhtml right now21:25
lifelesshow do we make that happen ?21:26
=== matsubara is now known as matsubara-afk
leonardrlifeless: i think we undo a small change i made to lazr.restful21:27
lifelessleonardr: cool21:27
leonardrlifeless: yes, we change WebLayerAPI.json to ask for JSON_TYPE, not JSON_PLUS_XHTML_TYPE21:28
lifelesssinzui: ^21:28
leonardrsinzui: it looks like assertRaisesWithContent doesn't take keyword arguments, the way assertRaises does. that cna't be right, can it?21:29
sinzuileonardr: I am shocked if it does not21:30
leonardrsinzui: TypeError: assertRaisesWithContent() got an unexpected keyword argument 'target'21:30
lifelessyou might like the testtools MatchesException matcher21:30
lifelessalso21:31
lifelessassertRaises returns the exception21:31
lifelessso you can write21:31
lifelessself.assertEqual('foo bar', self.assertRaises(...).args[0])21:31
leonardrthat's useful21:32
lifelessI generally use the matcher based approach now though21:32
lifelessits pretty cool21:32
thumperhow do you use a matcher with raises?21:33
lifelessthe Raises matcher21:34
lifelessyou the thing being matched needs to be no-arg callable21:34
lifelesse.g.21:35
sinzuileonardr: I cannot find WebLayerAPI in the lp tree. can you give me a clue21:36
leonardrsinzui: it's in lazr.restful21:36
lifelessself.assertThat(partial(callable, target='bar'), Raises(MatchesException(AssertionError('the target must be foo')))21:36
leonardrsrc/lazr/restful/tales.py21:36
lifelessor21:36
lifelessself.assertThat(partial(callable, target='bar'), Raises(MatchesException(AssertionError))21:36
lifelessif you only care about the type21:36
lifelessor21:36
sinzuiah out of my depth21:36
lifelessself.assertThat(partial(callable, target='bar'), Raises())21:36
lifelessif you only care about it raising /something/21:37
lifelessthere is a helper 'raises' which makes this a little easier to spell - raises(foo ) -> Raises(MatchesException(foo))21:37
leonardrsinzui: i will make a branch for you to try21:37
lifelessso the first example is idiomatically spelt as21:38
sinzuiI am pull it now21:38
lifelessself.assertThat(partial(callable, target='bar'), raises(AssertionError('the target must be foo')))21:38
leonardrsinzui: ok, just make that change, bump the minor version number, and mention it in the changelog21:38
leonardrlifeless: thumper and i realized that we meant to talk to you about web service versioning on tuesday and never did21:40
leonardrhere's our proposal21:40
leonardrinstead of numbering versions (which implies that a later version is a certain amount better than any given earlier version)21:41
leonardrwe will name versions, similar to how ubuntu releases are named (which implies only that a later version is a certain number of releases later than an earlier version)21:41
leonardrso, instead of calling the next release 2.0, we might give it a 'c' name like 'cauliflower'21:42
leonardrwe would require all new web service annotations to reference cauliflower21:42
leonardrdevel would refer to cauliflower, but once we cut a new version ('dandelion'), devel would start pointing to that version21:43
leonardrthis removes the need to think about which version you are really releasing in when you say 'devel'21:43
leonardrthe need to do anything special to the annotations upon release21:43
leonardrand it lets us pick release names in advance without saying anything about the magnitude of the change in that release21:44
leonardri'm going to work on something like this system on monday--we can go back and forth on the details without affecting the basic shape of the system21:46
jcsackettgary_poster: methods like getSubscriptionForBugTask on the StucturalSubscription mixin fall under the category of "things you left in for tests you think need to be cleaned out later", yes?21:48
gary_posterjcsackett pretty sure yes; will double check after I get off a call21:49
jcsackettgary_poster: gotcha.21:49
wgrantHas anybody looked at the buildbot failure?21:51
lifelessleonardr: would cauliflower be exposed at all outside our python source tree?21:51
lifelessleonardr: I don't really get the 'implies that a later version is a certain amount better than any given earlier version' bracket21:52
wgrantHas anybody looked at the failing script?21:52
leonardrlifeless: earlier you objected to the idea of saying '2.0' right at the start instead of saying 'devel' up to the moment of release, and then renaming everything to '2.0'21:53
leonardri thought you were saying that we might regret calling it '2.0' due to the magnitude (or lack thereof) of the changes present in that version21:53
lifelessno21:53
lifelessuhm21:53
lifelesswe don't want everything in devel to be in (1.0)+121:53
pooliehi lifeless, wgrant, leonardr, everyone21:53
lifelessI object to trying to decide that at the start.21:53
wgrantMorning poolie.21:54
leonardrlifeless: so, we have two changes in devel, neither of which are in 1.0. we release 1.1, which contains change A, but change B is still only available in devel. is that what you mean?21:55
lifelessleonardr: yes21:56
lifelessleonardr: I think what goes in 1.1 needs to be an explicit decision. It's our point for saying 'A is stable, we are willing to commit to 5 years support of that'.21:56
lifelessleonardr: consider that B might have been in devel for 2 days when 1.1 is created.21:56
leonardrlifeless: in that case, we should not have a 'devel' at all. those two changes should be in different versions from the start21:58
lifelessleonardr: why? the question is - at what point does something we have exposed become something we are willing to support long term.21:59
lifelessleonardr: is it simple duration? is it whether we've signed off the work with jml ? is it whether its highly valued by the distro ?21:59
lifelessleonardr: I don't think there is a single, simple answer.22:00
leonardrlifeless: this may be too complex for the existing version system to handle22:00
lifelessleonardr: I think it handles it fine: we make a 1.1. We move the things we want to support to it. We announce it, and we shift the launchpadlib default version for the next ubuntu to 1.1.22:01
leonardrlifeless: so, at the point we release 1.1 we go through every change in devel and make the decision to backport or not?22:01
lifelessyes22:02
lifelessI think we'd want to do that even if we had a way of flagging them in advance.22:02
lifeless5 year commitments are serious business :)22:02
sinzuileonardr: I am waiting for `setup.py test` to complete before I commit. I see you just landed a change. Do you want to review it. Do I just commit to trunk when the branch is approved22:03
leonardrsinzui: i recommend running bin/test instead of setup.py test22:04
leonardrlifeless: what does this mean for our current process? we require that all new annotations be explicitly flagged to devel?22:05
sinzuileonardr: I do not have a bin/test, but I see 4 failures22:05
* sinzui reverts and runs the tests again22:05
leonardrsinzui: here's the process i use22:05
leonardrpython bootstrap.py; bin/buildout; bin/test22:05
sinzuithanks22:06
lifelessleonardr: yes, I think thats all it means. Making the default devel would make this easier: unflagged would mean unreleased, flagged would mean released.22:06
lifelessleonardr: what we have is pretty good22:07
leonardrthumper: are you ok with this?22:07
thumperleonardr: yeah. If we want to make sure we explicitly choose what to release22:07
thumperthen this seems ok22:07
wgrantWhat happened to build failures being a stop-the-line event? :(22:07
jcsackettwgrant: they're not? or do you mean in terms of people, not pqm/buildbot?22:08
wgrantjcsackett: In terms of people.22:08
wgrantlucid_db_lp failed more than 8 hours ago.22:09
wgrantWith an obviously spurious failure.22:09
jcsacketty'know, i don't get many buildbot emails anymore.22:09
* jcsackett makes not to see if a filter is accidentally grabbing them.22:09
gary_posterjcsackett, yes lib/lp/bugs/model/structuralsubscription.py getSubscriptionsForBugTask is a prime example of a now-useless function that only exists in that branch to keep test-munging out of the diff.22:10
jcsackettgary_poster: fantastic.22:11
sinzuiouch. look like I will be compiling for a while22:11
jcsackettincidentally, sorry this is taking so long. i'm having to route around a lot of network issues on my end.22:11
gary_posternp, it was giganto branch anyway jcsackett.  You'll only get thanks from me.22:11
wgrantlifeless: Is https://hudson.wedontsleep.org/job/devel/500/testReport/junit/lp.registry.browser.tests.test_milestone/TestDistributionMilestoneIndexQueryCount/test_bugtasks_queries/ one of yours?22:12
wgrantlifeless: The third query (Person, between the TeamParticipations) is intermittent.22:12
leonardrsinzui: you need a ~/.buildout/default.cfg22:13
leonardrmine says:22:13
leonardr[buildout]22:13
leonardreggs-directory=/home/leonardr/.buildout/eggs22:13
leonardrdownload-cache=/home/leonardr/.buildout/download-cache22:13
leonardrwith that in place you will only go through the huge compile step once22:13
lifelesswgrant: I think bac wrote it22:13
lifelessbut it interacts with bugtask:+index work obvious22:14
lifelessly22:14
wgrantI'll increase the query count by 1 for now.22:15
sinzuileonardr: yes I have one of those. I did not have everything that lazr.restful wanted though22:15
wgrantHmm, unless I can easily get tracebacks into there.22:16
leonardrah22:16
lifelesswgrant: if you can run it with LP_DEBUG_SQL_EXTRA=122:16
wgrantlifeless: What does _EXTRA do?22:16
lifelessbacktraces22:17
wgrantAh.22:17
wgrantThanks.22:17
lifeless=====backtrace, ...., sql,======22:17
wgrantThatisquitealotofoutput22:17
bacwgrant: i think abel wrote that test and i have modified it22:22
sinzui:/ me thinks compiling mozilla might be faster22:22
wgrantbac: There are no cache invalidations before the query checks :(22:23
lifelessok22:23
* lifeless -> sydney22:23
wgrantbac: So it's sort of not really valid, and very unreliable.22:23
lifelessif you need me in the next 2 hours, call my mobile22:23
=== salgado is now known as salgado-afk
bacwgrant: sorry, i was thinking of a different test.  the one you're talking about was written by edwin.22:29
sinzuileonardr: what should I rename test_web_layer_includes_html_with_json_representation => disabled_web_layer_includes_html_with_json_representation22:31
sinzuileonardr: also, I think lazr.restful may hate python 2.722:32
leonardrsinzui: web_layer_includes_json_representation22:32
sinzuiokay22:32
leonardrie. test the other thing or get rid of the test22:32
leonardrsinzui: it's possible. are you getting errors?22:32
sinzuiI see two failures in a pristine tree. I am on natty22:33
sinzuileonardr: https://code.launchpad.net/~sinzui/lazr.restful/json-not-xhtml-0/+merge/52141 I think you should pull the branch and verify the tests are as you expect22:38
leonardrok22:38
wgrantsinzui: Hi, could you run a query on staging for me please?22:47
sinzuiwgrant: yes22:51
wgrantsinzui: query 36 (the last one) from https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1888QS70... could you grab an EXPLAIN ANALYSE ?22:52
sinzuiwgrant: http://pastebin.ubuntu.com/575213/22:56
wgrantsinzui: Erm. Could you try that on qastaging, please? I wonder if there is some difference -- it seems to take 13 seconds there, not 60ms.22:58
sinzuiwell this taking time22:59
wgrantIntriguing.23:00
sinzuiwgrant: http://pastebin.ubuntu.com/575215/23:00
sinzuiwgrant: maybe the difference is hot and cold caching23:00
* sinzui runs again23:01
wgrantsinzui: I tried that page 20 times yesterday.23:01
wgrantGot no better.23:01
wgrantthe plan is almost identical.23:02
wgrantYet the times are off by two orders of magnitude.23:02
sinzuiwgrant: qastaging run a second time: http://pastebin.ubuntu.com/575218/23:02
wgrantHuh.23:02
wgrantThanks.23:02
wallyworldanyone up for a review? https://code.launchpad.net/~wallyworld/launchpad/remove-decoratedbug/+merge/5200323:56

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