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

wallyworld_thumper: mumble?00:33
lifelesshttp://searchengineland.com/google-fans-throw-eggs-at-houses-blurred-in-google-street-view-5676300:36
wgrantlifeless: :(01:11
wgrantYou made us the top timeout again :(01:11
lifelesswgrant: there's an easy answer for that01:12
lifelesswgrant: Fix my scaling test for binary packages.01:12
wgrantI looked at that last week.01:13
wgrantBut it wasn't obvious what was doing it.01:13
lifelessthe test ?01:13
wgrantI couldn't see what was causing all those queries.01:13
lifelessI think the test is flawed, the page doesn't show binaries without sources01:13
lifelesswgrant: fix the test, it will be trivial to see after that ;)01:13
wgrantlifeless: Which test?01:18
lifelesswgrant: the one I landed01:19
lifelesswgrant: sorry to be vague01:19
wgrantHeh, OK.01:19
lifelesslook at log for my most recent Archive: landing01:19
lifelesslate last week I think01:19
lifelessit adds two tests01:19
wgranttest_source_query_counts and co?01:19
lifelessone for source package scaling which works well - I got the test to demonstrate terrible scaling01:19
* wgrant fixes.01:20
lifelessthe binary version *doesn't* demonstrate scaling01:20
lifelessso I think its misspelt somehow01:20
lifelessmwhudson: hi01:26
lifelessmwhudson: test running. you were asking..01:26
mwhudsonlifeless: hello01:26
mwhudsonah yeah01:26
lifelessI replied.01:26
lifelessover there ->01:26
mwhudsondidn't realize testtools had discovery01:26
lifelessall the shiny01:26
lifelessAFAIK your options are testtools/subunit .run, trial --reporter=subunit, nose with the subunit plugin.01:27
mwhudsonhmm01:27
mwhudsonAssertionError: Unable to use discovery, must use python 2.7 or greater, or install the discover package.01:27
lifelessmwhudson: well, have you installed it ? :)01:27
mwhudsonno, but i have unittest2 installed01:27
mwhudsonis it packaged?01:27
lifelessit may have discover as a private module01:27
lifelesshttp://pypi.python.org/pypi/discover01:28
thumperwallyworld_: hey01:34
wallyworld_ho01:34
wallyworld_thumper:  lib/lp/codehosting/vfs/branchfs.py01:37
lifeless=== Top 10 Time Out Counts by Page ID ===02:52
lifeless    Hard / Soft  Page ID02:52
lifeless      99 / 5038  Archive:+index02:52
lifeless      75 /  219  BugTask:+index02:52
lifeless      34 /  361  Distribution:+bugs02:52
lifeless      32 /  128  ProjectGroupSet:CollectionResource:#project_groups02:52
lifeless      23 /  378  POFile:+translate02:52
lifeless      17 /   51  DistroSeries:+queue02:52
lifeless      15 /   10  Person:+commentedbugs02:52
lifeless      11 /    2  Person:+bugs02:52
lifeless       7 /   87  Archive:+packages02:52
lifeless       7 /    5  DistributionSourcePackage:+changelog02:52
lifelesswgrant: so, did you make any progress?02:52
=== lifeless changed the topic of #launchpad-dev to: Launchpad Development Channel | Week 4 of 10.11 | PQM open for 10.12 | firefighting: - | https:/​/​dev.launchpad.net/��� | Get the code: https:/​/​dev.launchpad.net/​Getting
lifelesspoolie: hey03:08
lifelesspoolie: what was the right spelling for LPNET_SERVICE_ROOT ?03:08
pooliehi thar03:08
pooliethe trick is that they are now in launchpadlib.uris03:09
poolielifeless: ^^03:09
lifelesspoolie: got a code fragment ?03:09
pooliebzr pull -d ~/src/hydrazine ☺03:09
lifelesspoolie: I'm writing a blog post03:09
lifelesstotally different space03:09
lifelessthats a very robert answer to give03:09
lifelessis it03:10
pooliekarma :)03:10
lifeless'from launchpadlib.uris import LPNET_SERVICE_ROOT' ?03:10
pooliehang on03:10
pooliei wish it was fewer clicks from the project page  to the source :/03:10
lifelesspoolie: don't you have it local ?03:10
lifelessI was assuming you could just copy paste a single line03:11
poolieok03:11
pooliefrom launchpadlib.uris import (LPNET_SERVICE_ROOT, )03:11
lifelessthanks03:11
poolie        return Launchpad(credentials, service_root,03:11
poolie            lplib_cachedir)03:11
poolieetc03:12
pooliebtw is it just me or are the apis getting faster too?03:16
pooliealso, is there any point filing bugs about api timeouts, or should i assume the oops system will tell you about it03:16
lifelessif they are not on https://bugs.launchpad.net/launchpad-project/+bugs?field.tag=timeout03:17
lifelessthen feel free to file03:17
lifelessplease include the page id in the title to make it easy to identify dupes03:18
lifelessapis will be getting faster as we fix core issues.03:18
lifelesshttps://dev.launchpad.net/LEP/PersistenceLayer may interest you03:18
mwhudsonlifeless: did you mean to add control characters to the /topic?03:37
lifelessmwhudson: It was a copy paste job.03:39
lifelessmwhudson: they were presumably there already ;)03:39
=== mwhudson changed the topic of #launchpad-dev to: Launchpad Development Channel | Week 4 of 10.11 | PQM open for 10.12 | firefighting: - | https:/​/​dev.launchpad.net/ | Get the code: https:/​/​dev.launchpad.net/​Getting
mwhudsondoesn't look like it03:39
mwhudsonhome time, probably back later03:39
lifelessbai03:39
thumperlifeless: what do we do for a self review again?03:42
thumperlifeless: do I just approve myself?03:42
lifelessyou review it youself03:43
lifelessas normal03:43
lifelessjust like you'd review someone else03:43
thumpergah03:45
thumperwhere do I change my login token?03:46
* thumper goes to hunt through the email03:46
poolieqastaging is still down?03:47
* thumper stabs mail03:48
lifelesspoolie: its working for me03:50
lifelesspoolie: https://qastaging.launchpad.net/ comes up ok, if slow.03:50
pooliebug 68075903:50
_mup_Bug #680759: qastaging api 503 errors <api> <Launchpad Foundations:New> <https://launchpad.net/bugs/680759>03:50
lifelesspoolie: I think my further updates to that bug, and your mails, crossed paths.04:21
poolieyes they did04:22
poolieis qastaging now the best place to nondestructively test api clients?04:26
wgrantlifeless: Yeah, I got the test to fail.04:27
wgrantWill look at fixing the actual bug shortly.04:27
lifelesswgrant: \o/04:31
poolielifeless: just to be clear i'm not complaining, just wanted to flag this in case it wasn't known && matters04:31
lifelesswgrant: can you show me what I should be doing differently ?04:31
lifelesspoolie: qastaging is an ok place04:31
poolieyou just have to be robust against timeouts04:32
lifelessbut its not resourced enough to be a reliable test environment (neither was staging - the DB massively outweighs the RAM on the db server)04:32
pooliefair enough; that's a good practice anyhow04:32
lifelessyeah04:32
wgrantlifeless: Your guess was correct -- the index doesn't show binaries without sources.04:32
lifelesswgrant: whats the diff look like ?04:32
pooliefor the sake of my education is RequestExpired also a timeout?04:32
lifelesspoolie: yes04:32
wgrantlifeless: http://pastebin.ubuntu.com/535763/04:33
lifelesspoolie: exact error depends on the exact bit that decided time was over04:33
wgrantIt would be nice if mBPPH had an arg to do that.04:33
lifelesswgrant: yeah04:33
lifelesswgrant: +1 on any patch doing that :)04:34
wgrantI need to look at the factory and the Soyuz tests and make them match.04:34
wgrantSince at the moment each seems to try to pretend that the other didn't exist at the time of writing.04:35
wgrantlifeless: Bug #676776 should have nothing to do with the buildd-manager.04:46
_mup_Bug #676776: build stuck with "Uploading build" status [UI] <confusing-ui> <recipe> <Soyuz:Incomplete> <https://launchpad.net/bugs/676776>04:46
lifelesswgrant: julian said 'with the workaround in place builds get stuck and I have to clean them up'04:46
lifelesswgrant: IMBW of course.04:47
lifelessbut the symptoms sound exactly as he described04:47
wgrantlifeless: They'll get stuck in PENDING/BUILDING.04:47
wgrantNot UPLOADING.04:47
lifelessthere's no xmlrpc calls involved during uploading?04:48
wgrantNo. UPLOADING is set once the master has downloaded the files from the slave and thrown them into the upload queue.04:48
wgrantThen it's in p-u's hands, not b-m.04:48
lifelessok04:48
lifelessthanks for clarifying04:48
poolie"no module gettextpo" indicates out of date sourcecode, i guess?07:12
lifelessyeah07:12
lifelessutilities/update-sourcecode07:12
lifeless+ make07:12
poolieyup07:17
poolieand i guess "ImportError: cannot import name LPModerate" would be similar, but update-sourcecode hasn't fixed it07:21
lifelessmm07:21
lifelessdunno about that07:21
wgrantpoolie: That's some mailman breakage. make clean usually fixes it for me.07:28
pooliei think it's a test ordering dependency07:35
poolieiow these tests won't pass unless something else runs first in the same process :/07:36
poolieoh well07:36
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
adeuringgood morning08:47
bigjoolsmorning08:59
wgrantbigjools: Did the log parser eventually finish?09:34
bigjoolswgrant: yes but it's got a new problem09:34
wgrant:(09:34
wgrantWhat is it?09:35
bigjoolshang on09:35
bigjoolshttp://librarian.dogfood.launchpad.net/57530685/1z7LhiYuLtwxWSJXAxHNvbyksXZ.txt09:35
wgrant... pardon?09:35
bigjoolsit's not exactly a useful traceback :/09:35
wgrantThe real exception wasn't logged at all?09:36
bigjools"Unhandled exception" is all you get09:36
bigjoolsand then I stopped working on it as I need to debug the b-m09:36
=== matsubara-afk is now known as matsubara
=== mrevell is now known as mrevell-lunch
jmllunch already12:01
* jml is not really succeeding at work today12:01
jmlhey12:04
jmlcan I persuade anyone to test Launchpad against the latest pre-release of Twisted?12:04
=== al-maisan is now known as almaisan-away
jmlc'mon, there must be at least ten people with commit access around besides me.12:45
bigjoolsjml: I can help you12:47
jmlbigjools: thanks. Want to test Launchpad against the latest pre-release of Twisted? http://twistedmatrix.com/users/glyph/10.2.0pre3/12:48
bigjoolsjml: what are you expecting me to test?12:48
jmlLaunchpad. Update the version of Twisted that we use, run the tests, see what breaks.12:49
bigjoolsthe test suite is what I needed to hear12:50
nigelbCongrats folks on getting rid of edge :)12:50
bigjoolsjml: now, I need to learn how to update eggs :)12:50
jmlbigjools: doc/buildout.txt (from the root of the checkout) has a guide12:50
bigjoolsyeah reading that already12:51
jmlbigjools: thanks.12:55
bigjoolsok that was easy12:56
jmlyeah. while I'm still not sold on buildout, it definitely makes upgrading dependencies easier than any other equivalent I've tried.12:57
bigjoolsjml: ok tests running, I'll let you know in about 189 minutes13:05
jmlbigjools: woot. thanks.13:05
=== mrevell-lunch is now known as mrevell
bigjoolsit'd be nice to just select trial tests13:07
jml+ distributionmirror_prober tests!13:10
bigjoolsheh13:10
jmland tests that use blocking APIs to exercise Twisted servers, I guess.13:10
bigjoolsmaybe it's worth ensuring we do import as TrialTestCase everywhere13:11
jmlnah13:11
bigjoolsgimme a better idea13:11
jmlnot using trial very soon anyway13:11
bigjoolsoh, your testtools?13:11
jmlyeah13:11
bigjoolsnyshe13:11
jmlrun_tests_with = AsynchronousDeferredRunTest13:12
jml(yeah, it's a horrible name)13:12
bigjoolsummm13:12
jmlor @run_test_with(ADRT) for individual tests.13:12
jmlgreat13:33
jmlI have to somehow figure out which revisions lifeless self-reviewed over the last three weeks.13:34
* jml plays with log & grep, wishing again that Bazaar had a query language13:35
bigjoolsjml: what about using the API?13:36
jmlbigjools: it only has by-status filtering, so I might as well check bzr.13:37
bigjools:(13:37
bigjoolscan you get all his MPs instead?13:37
jelmerjml: bzr search?13:38
jmljelmer: is that actually useful? I thought it was mostly a text search.13:39
jelmerjml: I'm not sure how advanced its query language is.13:39
jelmerjml: What are you trying to find?13:39
jmljelmer: revisions of stable merged from branches authored by lifeless marked as being reviewed by lifeless13:40
jmljelmer: I'm almost done in my search anyway, but it would be nice to know for next time13:41
jelmerjml: Ah. No idea how to do that using the command line.13:42
jelmerBut it should be possible using a few lines of Python code and the API13:42
jmljelmer: in general, I wish I didn't have to write so much Python to get stats about trunk landings to PQM-managed branches13:44
jelmerjml: Do you mean the fact that it requires Python code at all? I'd think that it would only be a few lines using the graph API.13:46
jmljelmer: yeah, pretty much.13:47
=== almaisan-away is now known as al-maisan
jmlbigjools: any progress on the timeout thing?13:54
mrevellsinzui, Hey, around?14:06
sinzuiI am14:06
mrevellsinzui, I was wondering if we could have a call later today. I'm revising the docs for someone who's setting up a new project (so right from registration through to getting each individual app configured) and I wanted to know if you have any views on what I should do.14:07
mrevellsinzui, Also, is there a plan for resolving bug 4449?14:08
_mup_Bug #4449: Project "title" is redundant with "display name" <tech-debt> <Launchpad Registry:Triaged> <https://launchpad.net/bugs/4449>14:08
jmlmrevell: there's a spec by mpt that would be a good starting point.14:08
* mrevell looks14:08
jmlmrevell: https://dev.launchpad.net/RegistrySimplifications14:09
sinzuiI would love to talk about this. My last effort to improve th page was a disappointment. Maybe docs and inline help will help users accomplish their task14:09
mrevellYeah, I think a mix is right ... it may also be time to de-mothball the screencasting apparatus, heh.14:09
sinzuimrevell, jml: as a matter of fact, I was considering  fixing all the dead attributes during the bug jam.14:10
mrevellThanks jml14:10
mrevellsinzui, Ah, cool14:10
mrevellsinzui, How does 17.15 UTC sound for a call?14:10
sinzuimrevell, I think I am in a team lead meeting at that time14:11
sinzuimrevell, 15:00 or 16:00?14:11
mrevellsinzui, 15.00 works for me14:12
sinzuiokay14:12
* jml hugs addDetail14:33
jmlanyone seen anything like this before? http://paste.ubuntu.com/535913/ (librarian db constraint violation)14:34
=== matsubara is now known as matsubara-lunch
bigjoolsjml: no progress, although I've written 3 lines of code that will lock the slave manager in memory :)14:41
jmlbigjools: how will that help?14:41
bigjoolsjml: I have a theory that it's getting paged out and thus can't respond quick enough to connections14:42
bigjoolsalthough I'm starting to doubt that14:43
bigjoolsbut it's worth trying nonetheless14:43
=== salgado is now known as salgado-lunch
bigjoolsjml: I've also analysed the logs a bit to see if there's any pattern in the builders that are failing14:45
jmla minimal repro client might be a better starting point -- at least then we can completely eliminate lp.buildmaster.14:45
bigjoolssome are failing a lot more than others14:45
jmlbigjools: oh. interesting.14:45
bigjoolshttps://bugs.edge.launchpad.net/launchpad-buildd/+bug/586359/comments/514:45
_mup_Bug #586359: Virtual builders are sometimes very slow to accept connections <Launchpad Auto Build System:Triaged> <https://launchpad.net/bugs/586359>14:45
jmlthis librarian failure is perplexing14:46
bigjoolsjml: I also looked at logs from April and the problem is exactly the same there14:47
bigjoolsjml: when are you getting that librarian error?14:47
jtvhenninge: can't get onto the other channel right now, but that export-to-branch failure you pasted was simply yet again the same general config problem.  No reason to believe that the script itself hit any real problem otherwise.14:47
jmlwhen running lp.codehosting.codeimport.tests.test_workermonitor.TestWorkerMonitorUnit.test_finishJob_uploads_nonempty_file_to_librarian14:47
bigjoolsI notice it's in retry_transaction_decorator14:48
bigjoolswhich is suspicious14:48
henningejtv: it ran fine mostly.14:48
jtvhenninge: yes, it was just logging that it was backing off from one branch to avoid a race condition.  But that caused the oopsing machinery to log an oops, and that part was broken as elsewhere.14:49
henningejtv: I filed bug 680908 about what we could do about it.14:50
_mup_Bug #680908: Script translations-export-to-branch needs its own config section <Launchpad Translations:New> <https://launchpad.net/bugs/680908>14:50
jmlit's intermittent14:56
jmlbut only seems to be a thing w/ my testtools branch...14:57
* jml does some bisecting 14:57
sinzuimrevell, mumble?14:59
mrevellsinzui, Sure.14:59
jelmerrockstar: hi, do you know if there's a reviewer meeting today and who's chairing?15:04
rockstarjelmer, no idea.  bac would be the guy to ask.15:04
jelmerrockstar: thanks15:04
=== al-maisan is now known as almaisan-away
henningejtv: Hey15:16
=== almaisan-away is now known as al-maisan
sinzuimrevell, http://curtis.hovey.name/2010/11/02/encouraging-contribution-on-the-project-page/15:19
jmlbigjools: as best as I can tell, (curse this intermittency), it's some interaction between the builder tests and the workermonitor tests.15:21
jmlor, to be precise, that's at least one way of reproducing the error.15:21
bigjoolsjml: suck :/15:21
bigjoolsif you run both?15:21
jmlif I run both test_builder and test_workermonitor, then it sometimes fails.15:22
jmlso far haven't got the error from just running test_workermonitor15:22
jmlgot a while loop going running it over & over.15:22
bigjoolsbut only sometimes .... urgh15:22
jmlyeah.15:23
jmlspeaking of only sometimes15:23
* jml goes downstairs to get some chocolate15:24
=== matsubara-lunch is now known as matsubara
rockstarsinzui, ping15:35
sinzuihi rockstar15:35
=== al-maisan is now known as almaisan-away
rockstarsinzui, I wonder if you might be able to help me sort out some bug notification/ownership issues, since the bugs guys are gone and you seem to always know about permissions.15:36
sinzuiokay15:37
* jcsackett hates cleaning up a bad merge state...15:37
rockstarsinzui, the U1 team isn't getting notified on bugs filed on the u1 client filed through apport.  They're trying to find out why.15:38
dobeyhrmm, there have been some changes to privacy in lp recently haven't there?15:38
sinzuirockstar, I could be via a structural subscription in a indirect team15:39
* sinzui looks15:39
dobeyso it looks like crash reports are all private until the rescanner does some magic15:40
dobeyand this seems to be our issue15:40
=== almaisan-away is now known as al-maisan
rockstardobey, but also that once the rescanner is done, it still doesn't send notifications.15:42
dobeysure15:42
dobeybut i'm ok with not getting more e-mail ;)15:42
* jml sees more evidence for merging #launchpad & #launchpad-dev15:43
rockstarjml, +115:46
sinzuirockstar, ~ubuntuone-hackers is the bug supervisor or ubuntuone-client. They should be getting all bug reports via email15:51
rockstarsinzui, https://bugs.launchpad.net/malone/+bug/42512715:53
_mup_Bug #425127: private bugs in packages people with access to private bugs are subscribed to don't generate emails <story-better-bug-notification> <Launchpad Bugs:Triaged> <https://launchpad.net/bugs/425127>15:53
sinzuiI was looking at the project, I will look at the package15:54
sinzuiIf my reciprocal bug links were in production I would have seen that15:55
jmlhah15:56
sinzuirockstar, Ubuntu One hackers has a structural subscription. A team admin can remove it15:57
sinzuihttps://launchpad.net/ubuntu/+source/ubuntuone-client15:57
=== salgado-lunch is now known as salgado
* jml blags16:12
=== beuno is now known as beuno-lunch
jml:(16:39
jmlIf I run any subset of the buildmaster.tests.test_builder tests, I don't see the error. :(16:40
gary_posterjml: May I add the Risks section (and the sub-section of experiment, goal/design/result) from https://dev.launchpad.net/Foundations/Proposals/Template to the LEP template so I can delete it ?16:44
jmlgary_poster: sure.16:45
gary_posterthanks16:45
jmlgary_poster: I think I would like the LEP template to imply that it's good to think of more than one implementation16:46
jmlgary_poster: but I think those are definitely good things to have when thinking about an implementation.16:47
marssinzui, ping, do you have a moment to help with a CHR documentation question?16:50
* bigjools shakes fist at Flash plugin16:51
lifelessjml: I put the things I did into the wiki page16:54
sinzuimars, I am going into a meeting. I can type on irc16:54
lifelessjml: but you can also query for merged mps, and then check the reviewers vs the mp branch owner16:54
marssinzui, just to clarify, so I don't do the wrong thing for reassigning Launchpad Answers (again) - "Retarget" means "Change the assigned project", correct?16:55
jmllifeless: 'bzr log --line -r date:2010-10-31.. | grep r=lifeless' worked well enough16:56
sinzuimars, yes, retarget does mean change the assigned project or distribution16:57
lifelessjml: sure16:57
lifelessthank you16:57
marssinzui, perfect, thank you16:57
jmlnp16:59
gary_posterjml, I wasn't going to include the word "Implementation" in the copy to the LEP because it is confusing.  That said, I think of "Workflows" as a bit of an implementation proposal.  If the goal is to do blah blah for the webservice, how we accomplish blah blah is described in a workflow.  That workflow is a possible approach to the goals.  The workflow is a design that has risks.17:01
gary_posterSo that's kind of where I think it goes17:02
jmlgary_poster: *nod*17:02
gary_postercool17:02
jmlgary_poster: I don't like having workflows in the lep, actually :)17:02
gary_posterjml: gotcha17:02
jmlgary_poster: I only added it because I wanted to get beuno to stop shouting17:02
gary_posterbut then all the LEP would be about is agreeing on goals?17:02
jmlgary_poster: yep17:02
gary_posterhm17:02
jmlgary_poster: goals, constraints, requirements17:02
jmlanalysis, rather than design17:03
gary_posterI see17:03
gary_posterI'd be happy to have that discussion separately, jml17:03
jmlgary_poster: but if it gets used for design because managing two docs is too much work, I'm ok with that17:03
gary_posterjml, ok, we'll try separate docs then17:04
=== al-maisan is now known as almaisan-away
=== beuno-lunch is now known as beuno
beunooh hai jml!17:27
jmlbeuno: hi17:27
gary_posterlifeless: would you be available for a quick call nowish?18:01
lifelesssure18:02
gary_posterthanks18:02
mrevellI'm off for the day. Night18:03
bigjoolsnight all18:07
jmllifeless: the testing-cabal PPA now has testtools and testrepository building in it18:09
jmllifeless: I've done enough learning for now, so I'm going to open it up for the experts to fix up my mess :)18:09
=== benji is now known as benji-lunch
lifelessjml: cool18:26
jcsackettback18:27
jmlyou know it's getting serious when you have to draw a truth table to help you debug something18:44
lifelessTTF18:45
jmlthirty-two combinations of fail18:46
lifelessTTTTF?18:47
jmlyeah18:47
jmllifeless: in case you have any insights: http://paste.ubuntu.com/535913/ is the error I'm seeing. It's during lp.codehosting.codeimport.tests.test_workermonitor.TestWorkerMonitorUnit.test_finishJob_uploads_nonempty_file_to_librarian but the error doesn't appear to happen when the that module's tests are run in isolation18:49
jmllifeless: I can reproduce the error semi-reliably running the buildmaster.tests.test_builder tests before, but I've yet to get close to a minimal set18:50
jml(debugging this one by the numbers, since my brain is too shot for creative debugging)18:50
jmlfuller error: http://paste.ubuntu.com/536005/18:51
lifelessjml: brief call?18:52
jmllifeless: very brief, sure.18:52
=== benji-lunch is now known as benji
jmllifeless: it *looks* like there was another test in test_workermonitor that was dirtying the db via the librarian without declaring as such...19:53
jmllifeless: I have no idea why I could only reproduce the error with test_builder in the mix19:53
lifelessweird19:53
lifelessjml: I'm glad you found it19:53
jmlit would be relatively straightforward to put a thing in the librarian layer that checked to see if rows were added ...19:54
jmllifeless: I'm not going to dig any deeper, fwiw.19:54
lifelessjml: fair enough19:55
* jml ec2 tests & goes away to eat, drink (medicine) and be lazy19:55
jmllifeless: thanks for the help.19:55
lifelessanytime19:58
=== salgado is now known as salgado-afk
thumpermorning20:29
=== matsubara is now known as matsubara-afk
cr3can someone explain why some methods in launchpad take a quantity argument instead of using slices?21:15
wgrantcr3: Do you have an example?21:21
wgrantIt's possibly webservice-related, but it's hard to say.21:22
cr3wgrant: grep -r quantity= returns examples such as: IBranchView.latest_revisions, IProductSet.latest21:23
cr3wgrant: there are some comments relating to the webservice interface, which decorates the functions using call_with(quantity=None), whereas the default is a hard coded value like 10 for example.21:24
cr3wgrant: I would've expected the other way around though, ie limiting the webservice interface to some hard coded value and allowing internal calls to slice and dice21:24
pooliehi all21:29
lifelesscr3: slices require lazy objects, these are method calls21:31
lifelessas soon as you're not in ResultSet territory, you'll find we don't slice21:32
lifelessand where we do, its generally a bug.21:32
cr3lifeless: some calls like Branch.latest_revisions return a Storm ResultSet which could be sliced and diced though, haven't looked at many others, but it might just be remnants from the good ol' days21:32
wgrantlifeless: But the methods should be returning (Decorated)ResultSets :/21:32
lifelesswgrant: not as of yesterday.21:32
wgrantlifeless: How far through the design are you?21:33
cr3wgrant: do you guys normally use the launchpad DecoratedResultSet rather than the default Storm one?21:33
wgrantcr3: Is there a Storm DRS?21:33
lifelesscr3: when we eager load, yes.21:33
cr3wgrant: no, the default ResultSet I meant21:33
lifelesscr3: we eager load in many, but not enough places.21:33
wgrantcr3: We use the standard ResultSet in most places.21:34
cr3lifeless: wait, you use DecoratedResultSet or quantity when eager loading? (I need to finish reading that related thread on canonical-tech)21:35
wgrantDRS is for eager loading.21:35
lifelessDRS for eager loading. quantity when specifying up front what we need (which is a different, not necessarily better or worse) pattern.21:36
wgrantquantity is for broken methods that don't return a ResultSet or derivative.21:36
lifelesss/broken/other/21:36
wgrantUntil yesterday they were broken, now they might not be :P21:36
lifelesswgrant: they weren't broken before21:36
lifelessthey are symptoms of our lack21:36
lifelessresultsets do not cache21:36
cr3wgrant: was there a fix in DRS yesterday? is it in trunk so that I can pull it and see?21:37
lifelessso they aren't suitable to pass into methods21:37
wgrantcr3: No, lifeless is just changing everything.21:37
wgrantEVERYTHING>21:37
cr3wgrant: just when I thought I understood a thing or two about launchpad :)21:37
lifelesswe have several overlapping problems21:38
lifelessfirstly, our can-read assertions are scattered all over21:38
lifelesswe should have them in one layer so that we don't *return from queries* data the user [whose behalf we are acting on] shouldn't see.21:39
lifelesssecondly, templates and logic like canonical_url is per-object21:39
lifelessbut for efficiency and to map well to our data storage layer we need to work per-set21:39
wgrantlifeless: is the API going to be similar to the unannounced new webservice model?21:40
lifelesswe should have a layer that enforces set based access to the data store and makes it easy to put set/group based idioms higher in the codebase21:40
lifelesswgrant: they have strong parallels and I know that the webservice folk have added to their thoughts the ideas I've put up about the group based idioms in LP's internal code.21:40
lifelesswgrant: Gary expressed a desire to have them be harmonious and perhaps even trivially layerable.21:41
lifelesswgrant: I think they have different constraints, but they should be similar in style even if not in exact detail - initially.21:41
lifelesswgrant: the webservice stuff is on dev.l.n if you're interested21:41
gary_posterwgrant, also fwiw, the new webservice model won't be announced but proposed21:42
wgrantlifeless: Yeah, I've been reading it.21:42
wgrantIt looks really great.21:42
lifelessthirdly, the failure mode we have today is death-by-queries21:42
lifelesswe should have a mechanism such that when we think we've prepped for a page, we turn off data access21:42
wgrantgary_poster: You're silently working out how to make the webservice fantastic. I think that deserves announcement.21:43
lifelesscr3: ^21:44
gary_poster:-) thanks wgrant.  (where "you" includes a bunch of people.)  And I hear you.  I'll do it.21:44
lifelesscr3: so I've proposed an explicit persistence layer21:44
cr3lifeless: death-by-queries reminds me of an idea I had recently about unit testing where it might be desirable to decorate or provide some assert methods to make sure a certain number of queries are being performed, ie to detect when fetching a list of items results in a query per item for example21:44
lifelesscr3: it will only expose things the current user can see, will return objects that have no backend-connection so cannot trigger bad behaviour by mistake21:45
lifelesscr3: search for HasQueryCount in the lp code base21:45
cr3lifeless: awesome! will do21:45
lifelesscr3: the persistence layer will also be a clear boundary, which we can switch out for tests that are not testing the data storage story21:46
wgrantgary_poster: My main remaining gripe is the lack of transactions, but that's probably impossible to do, and it's mostly mitigated by the collection fixes.21:46
lifelesswgrant: batch PATCH gives you near-enough IMO21:46
wgrantExactly.21:46
gary_posterwgrant, not impossible--leonardr talks about how to do it in his REST book--but not terribly attractive IMO21:46
lifelesswgrant: we're -not- going to expose sql transaction objects on the net.21:46
gary_posteryay21:46
wgrantlifeless: Batch PATCH and the atomic collection retrieval does almost everything needed, I think.21:47
lifelessyeah21:47
cr3lifeless: that reminds me, I didn't notice any unit tests for the database functions themselves, ie no database/tests directory for example. I decided to have tests specifically for my database code in my latest project21:47
lifelesscr3: lib/canonical/database/ftests/ ?21:47
wgrantcr3: How are they different from the model tests, given that the layers are one?21:48
lifelessthere are some big questions about where 'is allowed to be related' logic should go in my new layer21:48
lifelessbut I think things like 'when a bug changes notify X Y and Z' very clearly do not belong in it.21:49
cr3lifeless: well, I would expect tests to exercise each of the functions defined in trusted.sql for example, which it doesn't look like lib/canonical/database/ftests/ is for21:49
lifelessequally 'who will be notified' isn't a storage problem, its built on it.21:49
lifelesscr3: oh. mmm, thats kindof bootstrap code.21:50
lifelesssure, you could test it. It might be nice to do so.21:50
cr3wgrant: not necessarily true, some database integrity should be caught at the database layer rather than the application layer, so exercising the model layer does not validate database integrity per se21:51
cr3wgrant: I also find it easier when defining a function in sql to have tests specifically exercise that function rather than going through the model layer21:53
lifelesscr3: this asumes you have different layers.21:54
lifelesscr3: triggers are evil though and we should get rid of ours. They are workarounds for poor ORM support.21:54
lifelessperhaps. We can keep them now we have them, but we've triggered storm bugs by using them, and will in the future)21:54
cr3lifeless: do you mean problems refreshing the cache in storm when triggers update objects without the orm knowing?21:56
lifelessI mean bugs.21:56
lifelesslike updating all columns rather than changed objects21:56
lifelesschanged columns that is.21:56
cr3lifeless: oh, has that been fixed yet? I've experience that problem myself and it's been a pain :(21:57
lifelessin 0.1721:57
lifelessit broke other stuff, which is fixed in 0.1821:57
cr3lifeless: thanks for the info, will have a look21:57
lifelessyou may find https://dev.launchpad.net/LEP/PersistenceLayer my high level problem statement interesting21:58
cr3lifeless: you're ambitious: # None of our tests of Launchpad functionality require a real database to execute.21:59
lifelesswe can't tell if its complete if we don't do that22:00
cr3lifeless: I would've gone for some ratio or some rough best effort figure, I would be afraid of the 80-20 rule where you'll spend 80 percent of your time finishing off the 20 percent remaining tests hitting the database22:01
cr3lifeless: whereas I'd consider it a tremendous success if 80 percent of tests didn't hit the database, testing would be blazingly fast (modulo windmill and doctests)22:02
lifelesscr3: if we're going to do it, we need to -do it-22:04
lifelesscr3: the last thing we need is a half (or 80%) deployed thing.22:04
lifelessthat would leave the remaining 20% still existing : having 20% of our pages be terribly slow is not acceptable.22:04
cr3lifeless: another way of looking at it is 20% of each page being slow, which still means 5 times quicker than before. but I can appreciate your point of view though, and I suspect you already have a design in mind that actually makes it feasible. in lifeless we trust :)22:06
wgrantWhat do Landscape and U1 do?22:09
wgrantIt seems that we are trying to solve all sorts of problems that they probably solved years ago.22:10
lifelesslandscape makes heavy use of 'collections' idioms.22:10
lifelessIn my discussions with jkakar he has expressed interest in what I've sketched out, and said they suffer the same things we do.22:10
lifelessso, for them, they work harder at performance. Its not intrinsically easier for them.22:10
lifelessU1, AIUI, are built on django22:11
wgrantAnd U1 uses Couch and all sorts of other evil, I suppose.22:11
lifelesswhich has a less strictly-object flavour and so is less driven to the pathology Launchpad is22:11
lifelessbut they've had plenty of requests taking thousands of queries.22:11
lifelessI'm not aware of any Canonical web property that /has/ this solved pervasively, nor solved at the scale (of data model complexity) that Launchpad needs.22:12
lifeless... I've been asking :)22:12
wgrantHas anyone else?22:13
lifelesshibernates HQL, sqlalchemy's QL - these are great things to look at.22:13
wgrantRight.22:14
lifelessfunctional approaches, and things like map-reduce are very useful inspiration too22:14
pooliehow/when is the sampledata updated?23:52
lifelessfridayish23:53
poolieiow why has my merge from devel got large sampledata changes compared to devel?23:53
lifelessoh23:53
pooliein https://code.launchpad.net/~mbp/launchpad/dkim/+merge/4168923:53
lifelesswhen commits are made23:53
lifelessdid you do 'make sampledata'23:53
mwhudsonlarge diffs tend to come from (sometimes tiny) version differences in postgres23:59

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