/srv/irclogs.ubuntu.com/2010/09/13/#launchpad-dev.txt

thumperlifeless: what have you done to edge?00:01
wgrantIt exploded yesterday.00:09
wgrantQuite spectacularly.00:09
lifelesswgrant: please try to get a broken wadl now00:32
wgrantlifeless: I'm not sure this explains everything.00:39
lifelesswgrant: I'm not sure it explains anything00:39
lifelesswgrant: but, are the symptoms gone00:39
wgrantthe last run succeeded. Doing it again to confirm...00:40
poolielifeless: oh, did you land those flag scopes? or someone else?00:47
poolieeither way, that's great00:47
lifelessI'm been extending it a little, yes.00:48
lifelessthe pageid one will land today00:48
lifelessonce we climb out of this downtime hole00:48
lifelesswgrant: ?00:49
wgrantlifeless: Seems happy now.00:52
lifelessgreat00:52
wgrantI can't say for sure, but three runs succeeded.00:52
lifelessso running edge on 2 appservers with a backlog of 160 requests is a bad idea00:52
wgrantHeh.00:52
wgrantRemarkable.00:52
pooliethat's great01:06
pooliei hope to lower my queue enough to do the edit gui01:06
poolieit is in a branch though, if i don't get to it01:07
lifelesspoolie: I filed a bug to track it; if you're not actively on it I can unassign you01:10
lifelessI needed a reference point for a code comment IIRC01:10
pooliei'm not actively on it but i feel i ought to close a few bzr bugs first01:10
pooliei'm hoping/aiming for quite a productive week here01:11
wgrantlifeless: I threw some example error messages on bug #636713.01:16
lifelesspoolie: could you perhaps link your branch to the bug?01:18
poolieperhaps i could01:18
lifelessthanks:)01:19
poolienice summary :)01:21
pooliei mean description01:21
pooliebug 63619201:21
lifelesspoolie: ;)01:22
poolieno bot?01:51
lifeless_mup_: yo01:53
lifelesstumbleweeds01:53
lifelesswgrant: 41 /    9  Distribution:+search third top oops in prod02:26
wgrantlifeless: Is that hard/soft?02:29
wgrantSo the third top OOPS only occurs 41 times a day? That's not bad.02:30
lifelesson sunday02:34
wgrantAh.02:40
lifelessstill, edge is ~ 13 seconds, time to shrink lpnet a little02:42
lifelessthumper: https://code.edge.launchpad.net/~lifeless/lp-production-configs/timeouts/+merge/3523903:21
lifelessthumper: ^ when you have a sec ;)03:41
stubthumper: So both the existing indexes *might* be useful - you can look up BranchRevision indexes by revision using the (branch, revision) index, but I think it is more efficient to look them up using the (revision, branch) index.03:48
stubthumper: It would be nice if we can drop both unique indexes and use just the primary key index though, as inserts will be faster and we save disk space. And maybe it will even be faster as we are more likely to have the index in PG shared memory.03:49
stubthumper: So if we drop both now, we can try adding one back later if there are read performance issues. Or we can leave things with two indexes for now, and try dropping one later.03:50
stubDo we ever need to see which branches a particular revision is in?03:51
thumperyeah...03:55
thumperstub: but this is one of the things I'm wanting to either factor out03:55
thumperstub: or find another way03:55
stubI'm thinking we should keep the patch as you have it, and just be aware that if Revision -> Branch traversal is slow we might be able to fix it with a new index.03:56
thumperstub: I hadn't thought of that reason for the constraint03:56
stubI can't really guess which will be fastest for reads, and no index is faster for inserts and saves disk03:57
thumperstub: *most* of the time we are going from the branch to the revisions03:57
lifeless\o/ less bare excepts04:24
lifelessstub: I just remembered I wanted to ask you about layer teardowns.05:05
lifelessstub: looks like zope.app.testing.functional/FunctionalTestSetup.tearDownCompletely() should let use teardown some more layers?05:05
stubSounds like it would, yes. That didn't exist before.05:07
lifelessok05:07
lifelessrs= you to do it ?05:07
stubMaybe make the whole fork-a-new-process thing unnecessary too05:07
lifelessyes05:07
lifelessthats a good 2 or more minutes per test run05:07
lifelesson its own05:07
stubrs=stub. If the tests pass, great.05:07
wgrantlifeless: Anything more to add to the bug?05:22
lifelessstub: could you do me a small favour05:30
lifelessttps://devpad.canonical.com/~stub/dbr/last-3-hours.txt suggests to me that we've reduced load on the master DB post-rollout.05:31
lifelessor is it within the variation you've seen anyway05:31
stublifeless: load seems less05:42
* stub looks for the graph05:42
lifeless\o/05:42
lifelessbrb05:47
stublifeless: https://lpstats.canonical.com/graphs/DBCpuLoadAppServers/20100907/20100914/ -- doesn't seem much changed according to that05:53
thumperlifeless: have you filed a bug about the code import xmlrpc timeouts?05:58
lifelessyes06:07
lifelesssearch on the page id06:07
lifelesshmm, I thought I had06:07
lifelessstub: you did the session db schema change?06:11
stublifeless: yes06:11
lifelesscool06:11
lifelessI doubt spm has the cycles06:11
lifelessbut I'll see if Tom does, to move the cert deployment forward.06:12
spmme? doubt it. (cycles)06:12
lifelesshow hard is it to batch a page ?06:31
lifelessis there a howto ?06:31
lifelessso06:59
lifelessbatching06:59
lifelessI guess I need to dig myself.06:59
stublifeless: Have you seen anything to suggest we should change our Storm cache sizes? Its available as a config parameter in launchpad-lazr.conf but we have never tuned it - just an initial guess.07:06
lifelessstub: I haven't seen anything saying we're thrashing in swap07:06
lifelessstub: and from a page layout perspective the storm cache is in principle unneeded anyway, once we finish structuring things right07:07
lifelessstub: but even so, no, I haven't seen any [obvious] cache thrashing07:07
lifelessonce we get down to a sensible 10-20 queries per page that would be very obvious07:07
stubI wonder if we would benefit from a larger cache then? I don't think flushes are instrumented, so I don't know if we are needlessly reloading objects that could have been pulled from cache07:07
lifelessstub: I doubt we'd benefit - we flush the cache on transaction boundaries anyway07:08
lifelessstub: flushes aren't recorded AFAIK; but we'd see the loads as a series of single object loads at the end of the apge.07:08
stubI'm thinking about prejoin type stuff which by its design relies on objects remaining in the cache until they are needed.07:09
stub(as nothing is holding references to them)07:09
stubBut I guess loading that many objects is the real problem, not how to ensure that we can access too_many objects efficiently.07:10
lifelessyeah07:10
lifelessI think theres a few angles to it07:10
lifelessfirstly prejoin is not a complete enough eager-loading for us07:10
lifelesswhat we're starting to do in e.g. Person is sufficient07:10
lifelesssecondly, if we are hitting a cache threshold, I think we'll see it very clearly when we look at an OOPS.07:11
lifelessstub: what is the cache size set to ?07:11
stubOh - for the appserver it is 10k so I guess no problem there. Most batch jobs have it set to 500.07:13
lifelessah07:13
stubAll in schema-lazr.conf - nobody has ever overridden the defaults in the instance configs.07:13
lifelessbatch jobs I'm not really scrutinising yet.07:13
lifeless500 is possibly too small hyes.07:14
lifelessbut OTOH07:14
lifelessbatch jobs should be pretty darn precise with what they do compared with appserver pages which are all over the shop07:14
lifelessIntrinsically I mean; like 'show me all specs' is an appserver use case, for a batch job it would be 'email changes to specs' and thats time-bounded.07:14
StevenKOkay, fine. SQLObject I hate you.07:20
lifelessStevenK: you can return a storm ResultSet even while the class uses SQLBase, its easy and lets callers start depending on it.07:20
StevenKlifeless: That sounds like a good plan07:20
lifelessI did this to searchBugs, for instance.07:21
lifelessoh07:21
lifelessand for a relatively clean one - hahhaha -07:21
lifelesssee Distribution.specifications07:21
StevenKlifeless: Right, which ends up using Store.of anyway07:23
wgrantStore.of is Storm...07:23
lifelessStevenK: thats the point, the guts of the function is still shitty hand-string-joined-sql07:25
StevenKThen I may as well just use IStore(IDistroSeries) ...07:25
lifelessStevenK: but it returns a perfectly cromulent storm result set07:25
lifelessStevenK: Store.of if you have an object is *important*07:26
lifelessStevenK: You want to match the store that the object came from07:26
StevenKlifeless: Or can I just call methods on the SQLObjectResultSet I get back?07:27
lifelessof course you can07:27
lifelessconverting that to a storm ResultSet would be a good idea though.07:27
lifelessStevenK: perhaps you should explain whats up07:28
StevenKlifeless: My hidden question is "Will that involve more database roundtripping" ?07:28
lifelessStevenK: will whatr07:28
StevenKlifeless: Will calling methods on the SQLObjectResultSet result in more database roundtripping?07:28
lifelessif you call methods that do round trips.07:29
lifeless(sorry that thats the answer, but thats the situation)07:29
lifelessresultsets will do roundtrips when you call methods on them07:29
lifelesswhich methods cause roundtrips depends on the resultset type07:30
StevenKlifeless: To explain what's up: I'm writing a new method on IDistroSeries called deriveDistroSeries, and one of the arguments is the name of the distroseries. The method will look up if the distroseries exists, and if it does, use it, and if it doesn't, use it.07:30
StevenKI'm having trouble looking up if the distroseries exists.07:30
mwhudson_StevenK: i get the feeling that you are worrying about something that essentially shouldn't be worried about, but slightly over specific questions are masking the real issue07:30
lifelessStevenK: so07:31
lifelessStevenK: firstly, write the function taking a distroseries object not a name.07:31
StevenKmwhudson_: TBH, I suspect my problem is that getUtility(IDistroSeriesSet).findByName(name) doesn't return what I think it should07:31
lifelessStevenK: if you intend it to work in that way.07:31
lifelessStevenK: secondly, if you want a name-based version, add that as a trivial wrapper.07:32
lifelessdon't conflate the two.07:32
lifelessyou'll find it clearer and easier to test if you avoid magic like that.07:32
wgrantI can't see a reason to have it take a name.07:32
lifelessthirdly, if you are concerned about db round trips, *test it* - write tests, like those I've mentioned in perf tuesday emails, that check the number of db calls that go on.07:33
wgrantThat's only good for things like components and sections.07:33
lifelessthere is /nothing/ like tests for catching gotchas; I can help you ensure that the test is valid, once you have a sketch of it up.07:33
lifelesstests and bastard users AKA 'QA'07:33
lifelesswgrant: mwhudson_: any tips on how to 'batch a page'07:34
lifelessis there a howto07:34
lifelessor docs07:34
wgrantlifeless: I don't know of any.07:34
stubI tend to avoid the old crufty SQLObject era APIs on the FooSet utilities and use native Storm syntax. IStore(DistroSeries).find(DistroSeries, name='myname').one()07:34
wgrantI just grep.07:34
lifelesswgrant: do you know how to batch a page? if so, please be writing it up!07:34
mwhudson_lifeless: don't know of anything either07:35
stubBut I'm not usually in browser code, which is supposed to go via the *Set for security issues.07:35
StevenKstub: This is API code07:35
lifelessthe store objects we have are security proxied07:35
lifelessso they will wrap any objects returned07:35
lifelessthe Sets don't add anything security wise.07:35
StevenKJust pain, misery and SQLObject07:36
lifelessunless I'm deeply confused.07:36
stubI didn't think our Store objects were security wrapped. Under the hood, they come from the IZStorm utility which is not registered as a secureutility IIRC.07:37
lifelesshmm07:38
lifelessthen we should security wrap them07:38
lifelessbecause API's also need the security enforcement, and model code what APIs expose.07:38
lifelessI'll file a bug07:39
stubJust include 'may' in there - I'm not 100% on this.07:39
wgrantThe security stuff here is a bit complicated.07:39
wgrantEven if those stores are proxied, Store.of isn't.07:40
wgrantI don't think IStoreSelector is secured.07:40
lifelessall in the big07:40
lifeless*bug*07:40
lifelessok07:41
lifelessso whats a simple batched page07:41
lifelessbranches?07:41
wgrantBug listings, or possibly /people07:42
wgrant /people used to be non-standard, but I think Curtis fixed that recently, so it might be a nice example.07:42
StevenKsteven@liquified:~% du -ch /tmp/launchpadlib-cache-* | tail -n 107:44
StevenK225Mtotal07:44
StevenKFor want of a test suite that doesn't do evil things to /tmp07:44
lifelesswe need to fix up zope.app.testing first07:48
lifelesshere, a blindness pull - zope.app.testing.functional.FunctionalTestSetup.__init__07:48
lifelessthe first line.07:48
StevenKlifeless: TBH, I'm happy to accept it's a bug in Zope07:50
lifelessits not per se07:51
lifelessits a stack that needs cleaning up is all07:51
lifelesspoolie: those scopes have now landed.07:59
=== lifeless changed the topic of #launchpad-dev to: Launchpad Development Channel | Week 1 of 10.10 | PQM is open for business | firefighting: - | https:/​/​dev.launchpad.net/​ | Get the code: https:/​/​dev.launchpad.net/​Getting
wgrantOh, nice.08:02
lifelesswgrant: ?08:02
wgrantpageid-based FF.08:03
lifelessyes08:03
lifelessin e2 atm is a FF memcache control08:03
wgrantSo we can turn caching on and off with a flag?08:03
lifelessyes08:03
lifelessper pae08:03
lifelessper page08:03
lifelessnext up after that is per pageid timeout control, the prerequisite for that should land overnight too08:05
poolieoh, great08:18
adeuringgood morning08:45
henningeIs LP production running on python 2.6 now?08:58
lifelesspartly08:58
lifelessAIUI rolling upgrades are still going on - check the wiki page if you care08:59
=== mthaddon` is now known as mthaddon
mrevellHello09:05
lifelesshi09:05
* mwhudson_ wonders how crazy running launchpad on arm would be09:16
mwhudson_i guess the lack of ram would be the killer09:16
lifeless1TB should be fine09:16
StevenKOur current servers don't have that ...09:16
mwhudson_256 megs might be enough to have an appserver limp along, i guess09:17
elmo1000     21319 50.2 10.9 1022248 669056 ?      Sl   Sep09 2859:33 /usr/bin/python -S bin/run -i lpnet709:17
elmomwhudson: ^--09:17
wgrantYou can just run a dev appserver and librarian in 512.09:17
wgrantBut it's, er, painful.09:17
lifelesswe should fix that09:18
wgrantThere's also the issue of the PPA not building on armel.09:18
wgrantBut apart from that it should work.09:18
mwhudson_elmo: i wasn't suggesting it for prod :)09:19
lifelessjml: welcome back09:46
jmllifeless, thank you.09:47
mwhudson_hello jml09:47
jmlmwhudson_: hi09:47
jtvnoodles775: hi there!  I'm working on displaying TranslationTemplatesBuild.  Ironically, it involves adding a view for TranslationTemplatesBuildJob so the builder displays can link to the TranslationTemplatesBuild.10:11
noodles775Huh, a view for the TTBuildJob? Do you mean for the TTBuild?10:12
jtvnoodles775: no, that's the thing10:13
wgrantAlong the lines of BuildFarmBuildJob?10:13
jtvI need the *-current.pt template to link to the build.10:13
jtvwgrant: exactly10:13
jtvand hi ;)10:14
wgranthi.10:14
jtvBut to stop me from getting it all wrong: how do I find the right BuildFarmJob for a given BuildQueue?10:14
jtv(I realize it's all going to change)10:14
wgrantYou shouldn't need to know that.10:15
wgrant(and I forget)10:15
* noodles775 would need to look at the code and see what soyuz/code does too.10:15
jtvOkay, then can I just replace the display of the current BuildQueue for a builder with a display of the ongoing build?10:15
jtvOr BuildFarmJob?10:15
jtvI guess I'll just steal from there then.  :)10:16
wgrantStealing ideas from elsewhere is almost always the best idea.10:16
wgrantSince that code probably works...10:16
* bigjools asks jtv to consider performance when writing this code10:18
* jtv is happy consider performance, but getting the smegging thing working at all does come into play as well10:18
jtvNow, the soyuz builds seem to put all this into a link formatter.  Which one?10:19
jtvPackageBuildFormatterAPI?10:19
wgrantWatch out -- there are unobvious formatter specialisations which have caught me before.10:20
wgrantI don't remember details. But search for subclasses first.10:20
wgrantOr it gets very confusing.10:20
jtvHmm what _is_ the context for soyuz's view there?  The build or the job?10:21
wgrantThe +current view?10:21
jtvYes, on that one?10:21
jtvLooks like it's still an IBuildFarmJob as before.10:22
wgrantBuildFarmBuildJob wraps the Build.10:23
wgrantWhich is itself an IBuildFarmJob.10:23
wgrantBut not an IBuildFarmJobOld.10:23
jtvSo chances are that we'll want the same on BuildFarmBranchJob.10:26
jtvAnd perhaps that'll allow us to get rid of BuildFarmBuildJob and BuildFarmBranchJob, which after all were really only there to cover for the absence of a Build.10:27
wgrantOnce Translations complies, we can do all sorts of mass deletions.10:28
jtvTrue—no particular need to fix that up now.10:29
thumperjml: https://dev.launchpad.net/Code/BranchRevisions10:32
lifeless\o/ memcache branch passed ec211:09
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
jtvbigjools, noodles775: lib/lp/soyuz/browser/configure.zcml defines a browser:page (with name="+current") for lp.buildmaster.interfaces.buildqueue.IBuildFarmJob11:27
jtvI'm surprised that doesn't blow up, given that I don't see IBuildFarmJob in lp.buildmaster.interfaces.build*queue*11:28
noodles775jtv: it seems to have been added (or at least moved there) by you? I'm not sure why it was added (or perhaps just moved there from elsewhere).11:31
jtvnoodles775: I guess it's just a dead page and I can delete it.  But WTF doesn't anything complain about it?11:31
noodles775Removing it and running the tests might show why... otherwise, not sure.11:32
jtvI think I know why it's there and it should indeed be a dead page.11:33
jtvwgrant: afaics I do need to know how to get from a BuildQueue to a BuildFarmJob because the UI seems to find my build as buildqueue.specific_job.build.  :/11:40
jtvThe specific_job is TTBJ.11:40
jtvSo the TTBJ needs to find the BuildFarmJob11:41
jtv(I get here because Builder.currentjob is the starting point for the rendering of builds and buildjobs, and that's a BuildQueue.)11:42
jtvnoodles775: do you have any idea how I can find my BuildFarmJob given a BuildQueue?11:43
noodles775jtv: Do you mean other than how the soyuz/code parts do it?11:44
jtv(I also need to look at build histories, of course)11:44
jtvnoodles775: they keep references to build objects in the db, don't they?11:44
noodles775Yep, they have linking tables (ie. BuildPackageJob)11:45
noodles775I don't know what you do and don't have in the DB... can you remind me what's different for translations?11:46
jtvThat's hardly something I can do.  I guess I could move TTBJ over as some kind of view on TTB, but… yuck.11:46
jtvnoodles775: there was never any build object.11:46
jtvAnd now the new infrastructure is at a point where it seems to require a build object in the obsolescent old-model classes.11:47
noodles775jtv: what is build_queue.job_type in your case? TRANSLATIONTEMPLATESBUILD?11:50
jtvyes11:50
noodles775jtv: and can you get a hold of your TTBJ based on the queue (ie. based on the job.id I assume)?11:55
jtvnoodles775: yes, that's all linked together using the old model—BuildQueue.job == TTBJ.job == Job.id11:55
jtvThe problem is getting from anywhere in the old model (BuildQueue, TTBJ, Job) to the new model (BuildFarmJob, TTB)11:57
noodles775jtv: I was going to ask why buildqueue.specific_job doesn't just work (or at least, why it can't just work if you hook up the utility), but then saw that TTBJ.getByJob() is returning a BranchJob.11:58
jtvWell TTBJ lives in the BranchJob table.11:58
jtvbuildqueue.specific_job does just work, but it returns a TTBJ not a TTB.11:59
jtvIf it needs to return a TTB, same problem: I have a BuildQueue and I need to find the corresponding TTB.11:59
jtvOr BJF.11:59
jtv*BFJ11:59
wgrantjtv: isn't the TTB accessible from the TTBJ?12:00
jtvwgrant: no—that's _exactly_ the problem I've been trying to solve.  :)12:00
wgrantIn the other cases, the job exists to link the build and the buildqueue.12:01
jtvYes, and the big problem we were going to solve with this new model was that TTBJ was not related to any build object.12:01
wgrantBut it exists now.12:02
wgrantSo TTBJ could link to it.12:02
jtvExactly.  It's great, but I can't find it.12:02
wgrantOh, right, it's a BranchJob arrgh.12:02
noodles775wgrant: TTBJ isn't a DB model...12:02
noodles775yep.12:02
jtvTTBJ could link to it _if_ I move the entire class to a new table, which will be lots and lots of work for an obsolescent class.12:02
noodles775jtv, wgrant: I wonder if this would be a good opportunity to start the transition. ie. jtv's branch could add the job attribute to BFJ. Then his TTBJ class could have a build attribute that just looks it up based on the job?12:03
wgrantDepending on how large the branch already is, that could be reasonable.12:04
jtvWill they be the same Job though?12:04
wgrantThey probably could be.12:04
noodles775jtv: you'll need to make sure they are - no one else is using it yet (so it will be NULL for code/soyuz).12:04
wgrantI see no reason why the BuildQueue Job can't be made persistent.12:04
wgrantIt shouldn't break anything.12:05
jtvflw :)12:05
wgrantYou don't even need to start using its attributes yet, I guess.12:05
jtvI'm not going to be able to make this kind of change in my ongoing branch.  How about this:12:07
wgrantAdding and populating a simple BFJ.job FK shouldn't be troublesome.12:07
wgrantYou don't have to do anything with it.12:07
jtvI make sure build histories can link to and render TTBs (they already render).12:07
jtvI get that change reviewed.12:08
wgrantLinking isn't that important. Not crashing is.12:08
jtvMy branch can already render TTBs.12:08
jtvSo I make sure build histories can link to and render TTBs without crashing,12:08
jtvget that change in together with a bunch of other ones I've already accumulated12:09
jtv(they're blocked on this branch),12:09
noodles775Sounds good.12:09
jtvland the lot of 'em,12:09
jtvthen we twiddle the model further so that Builder.currentjob.specific_job.build works,12:09
deryckMorning, all.12:09
jtvand then (afaic in yet another branch) retire BuildFarmBranchJob and basically anoint BuildFarmBuildJob as the buildmaster-standard implementation for BuildFarmJobs.12:10
wgrantAnd then delete it.12:10
noodles775Yay.12:10
jtvYes.12:10
jtvKill.12:10
jtvKill.12:10
jtvKill.12:10
jtvThis means that for now, the "Building [...]" display for a builder will _not_ link to the TTB yet, only to the branch.12:12
jtvThat change comes in part (3).12:12
jtvWhich leaves me free right now to worry about functional display of TTBs in builder _histories_12:12
jtvAs an Orwell character might have put it, to fix the present we must first fix history.12:13
jtvNow, how _does_ the builder history get rendered?  Retrieve all BuildFarmJobs and for each, obtain & render the specific job?12:14
=== mrevell is now known as mrevell-lunch
jtvnoodles775: does BuildFarmJob play any role in rendering build histories yet?12:28
jtvdanilos: my plan is this:12:39
jtv * Finish & land my UI branch.12:39
* danilos is all ears (well, /me is all ears anyway, but now especially so)12:39
* jtv holds back nasty remark about huge nose12:40
danilos:)12:41
jtv * Adjust the model so that we can find the new buildfarmjob class (the historic record, basically) where we need to from the old TTBJ class in the same way that the other old-model classes can.12:41
jtv * Clean out the classes, interfaces & templates that we currently have to paper over this problem, using the new tie between the two models instead.12:42
jtvThat last step eliminates our "special" position in the build-farm model afaics.12:43
danilosjtv, can we not have a simple adapter for TTBJ to IBuild if that's what we need? what exactly is missing?12:43
jtvWhat's missing is any kind of link between the objects in the old model and the objects in the new model.12:44
jtvBecause the two are tied together only through the build objects that we never had.12:44
danilosjtv, right, so is it not simpler to add a link to TTBJ on the Build object then? (I assume Build object is part of the "new" model)12:45
jtvYou assume right (although it's confusingly called BuildFarmJob)12:45
danilosjtv, ok, so that's what you mean with "adjust the model" step?12:46
jtvDoing it that way would still be very ugly.  But more to the point, that's all for the next step—which we should hammer out in detail with the Wellington crew.  There is a plan.12:47
jtvFor the more distant future, the plan was to re-introduce Job which is so far completely missing from the new model.12:48
jtvIn the old model, Job was what tied all of it together.12:48
danilosjtv, hum, so what kind of "adjusting" is needed in the first step? uglifying and then cleaning up later is ok by me :)12:48
jtvThe first step is just making sure nothing blows up with what I already implemented, and landing it all.12:49
danilosjtv, right, then I mean second step12:49
danilosjtv, also, would what you implemented allow us to eg. generate stats based on the data in the DB and interrogate DB directly if we want to know more about any particular build?12:50
jtvThe second step _as it looks now_ involves moving the re-introduction of Job forward.  We add a FK to Job to BuildFarmJob, and then I can use that to find our new build class ("derived" from BuildFarmJob, though in a separate table) from our old buildjob class.12:50
jtvdanilos: it should yes, since it introduces creation of BuildFarmJobs for our job type.12:52
danilosjtv, right, so step 1 is golden for us, step 2 and 3 are basically interdependent as well?12:53
danilosjtv, also, what happens with TTBJ, where do we move the functionality it provides to?12:54
jtvdanilos: step 1 should be a small one from where I'm standing (cross fingers), which would be great for reporting on our end.  And again as you say, 2 and 3 are interdependent in that 2 moves forward design and implementation work that step 3 is currently stuck on.12:55
danilosjtv, right, so let's do that, and then we can try to figure out the minimal stuff we need to do to unblock everybody else12:56
jtvdanilos: TTBJ provides very little.  It gets replaced with TranslationTemplatesBuild, which fits neatly into the new model.12:56
jtvI think step 1 would unblock things for the others.  Which is one reason among many why I want to phase things this way.12:57
danilosjtv, right, if that's the case, let's get it done, and not worry about other things yet :)12:57
danilosjtv, though, I am a bit confused: wouldn't we need to introduce the link between the TTBJ and BFJ before we'd really unblock others?12:58
danilosjtv, also, why can't we simply introduce a new field on TTBJ that links directly to BFJ (TTBJ is going away anyway)12:59
jtvTTBJ lives in the BranchJob table, so we can't do that.12:59
danilosjtv, uhm, why not? (yes, it might be ugly, but wouldn't it be dirt cheap?)13:00
jtvI don't think we need to introduce a link in order to unblock others; what matters is that each of our jobs will have a representation in the new model.  Where the UI starts out in the old model and tries to navigate to the new model, our jobs simply don't exist just as things stand now.13:00
danilosjtv, ok, fair enough13:01
danilosjtv, but, how will the jobs be executed? will there be an interim phase where such link is needed for execution as well?13:01
jtvExactly _how_ we link the two is part of step 2, and that's something to be discussed with the Wellington team.  How the jobs will be executed won't matter much, since our jobs will be present in both models simultaneously.13:02
jtvAIUI as soon as we start executing based on the new model, we also stop generating the old-model objects.13:03
danilosjtv, it does matter because I can easily think of a migration approach that would leave our jobs not running13:03
danilosjtv, but, since you seem confident, I'll trust you on that ;)13:03
jtvWe're generating the same jobs in both the old and the new model.  They both contain the same information.13:04
jmlI'm off to grab some lunch. Back soon.13:05
danilosjtv, ok, imagine a migration path like this: "we want to start using the new code, but from within the old model, just like UI: 1. get old model jobs, 2. get a link to new model jobs [just like UI, right], 3. if found, run the job"13:05
jtvYes, we could do it wrong if we _really_ wanted to, but I don't really see the need.13:05
danilosjtv, it's not about a need, I actually find the above approach quite sane, especially considering that that's how UI migration seems to be getting done13:06
jtvWell what would happen if you tried it that way, things would blow up.13:06
danilosjtv, how come the UI doesn't blow up, yet it uses new model for all the other builds?13:06
danilos(or does it?)13:06
jtvBecause that's builds, not jobs.13:06
jtvWe execute jobs, not builds.13:06
* danilos is now thoroughly confused13:07
jtvdanilos: if you're thoroughly confused then at last you fully understand the model.13:07
jtvcongratulations!13:07
danilosjtv, thank you :)13:07
danilosjtv, ok, so let's watch out for any weird migrations, I'll go watch out for some food, and not worry about much else right now other than landing the code you've got13:08
jtvI'm also past eod now, not just temporally but especially mentally.  :)13:09
jtvBut I did want to appraise you of this before the heart attacks started.13:09
danilosjtv, sure, tty tomorrow13:14
gmbrockstar, Is it fair to assume you're not around for the next hour or so?13:15
gmbHeh. s/hour/3 hours/13:16
gmbderyck, Do you know if rockstar got anywhere with his wigety wizard wonderousness? ISTR seeing something fly across my screen about it late last week, but I didn't really pay it much heed at the time due to being RM-frazzled.13:17
deryckgmb, yeah, I worked with him on Friday to get his event bug fixed and unblocked him.13:17
deryckgmb, I suspect he may still be today or tomorrow wrapping that up still.13:18
=== mrevell-lunch is now known as mrevell
gmbderyck, Okay. I'll find something smallish to do in the meantime.13:19
gmbOh, I've got that bug import to do first. Win.13:20
deryckgmb, and there's really no bug in the story left that doesn't require the config widget, is there?13:24
gmbderyck, One or two, but no, not many.13:25
gmbIt is something of a blocker.13:25
deryckyeah, I told rockstar to please ping you or I if he needed help, since we really need this.13:25
gmbderyck, Cool.13:27
deryckgmb, he did mention he was stopping at a two-step widget, since that's all he needed.  Do you need more steps?13:28
deryckgmb, maybe you should take a peak at lp:~~rockstar/lazr-js/wizard-widget to get an idea of what's coming to.13:32
gmbderyck, Well, yes and no. There are potentially up to 4 forms that could be show in one overlay in a given sequence, but they could be logically split across two widgets. I'll take a look at rockstar's branch this afternoon and see what the deal is.13:32
gmb(Also, there's always the chance that I could hack it to work the way I want, but that might not be TRTTD)13:33
* jml back13:33
jmland my inbox is empty!13:33
gmbjml, Select all, delete?13:34
jmlno. inbox zero style, instead of 1100 unread conversations in my inbox I know have about 100 flagged as @READ or @ANSWER13:34
jmls/know/now/13:35
bacwelcome back jml13:52
jmlbac, thanks.13:52
sinzuimrevell, ping13:58
mrevellhello sinzui13:59
sinzuimrevell, you may be interested in this question: https://answers.edge.launchpad.net/launchpad/+question/12516513:59
* mrevell looks13:59
mrevellThanks sinzui. Yes, that's right up my street. I shall deal with it.14:00
sinzuithanks14:00
mrevellIn that I'll answer it and also write a blog post inviting nominations14:00
matsubarahey bigjools14:23
bigjoolsmatsubara: hey dude14:23
matsubarabigjools, could you help me with a upload failure from a recipe? I created a recipe to create packages for bzr-pqm and put them in the ~launchpad PPA. It seems the source build step worked correctly but the upload failed14:24
bigjoolsmatsubara: build URL?14:25
matsubarabigjools, this is the recipe URL: https://code.edge.launchpad.net/~matsubara/+recipe/bzr-pqm-launchpad-ppa/+build/246514:25
matsubaraI'll paste the failure email I got, just a sec14:25
bigjoolsmatsubara: did you read the log? :)14:25
bigjoolsall will become clear when you do14:26
matsubarabigjools, yep. it says the versions already existed there but this was my first try AFAIK14:26
matsubarabigjools, normally I'd have to bump the version, right?14:26
bigjoolsyes14:26
bigjoolsit's the source that already exists, it was probably uploaded as a regular package already14:27
matsubarabigjools, and when I look here: https://edge.launchpad.net/~launchpad/+archive/ppa/+packages, looks like the package is there and published and everything seems to be alright14:27
bigjoolsthere you go then14:27
bigjoolsmatsubara: oh it's never been uploaded at all before?14:28
matsubarabigjools, not with that version number. there was a older bzr-pqm package in the ~launchpad PPA  uploaded by Gary some time ago14:29
bigjoolsyeah bzr7214:29
matsubarabigjools, btw, when I apt-get update && apt-get upgrade I get the new package (bzr 73) that I uploaded.14:30
bigjoolsmatsubara: hmmm I'd check with one of the Code guys then, seems like it tried to upload itself twice14:30
matsubaraso I'm confused by the email saying it failed to upload14:30
=== Ursinha-afk is now known as Ursinha
matsubarahmm14:30
matsubarabigjools, don't know if it helps, but here is the failure email: https://pastebin.canonical.com/37090/14:31
bigjoolsok14:31
bigjoolsmatsubara: no it doesn't help :(14:32
matsubaraand the recipe page says (https://code.edge.launchpad.net/~matsubara/+recipe/bzr-pqm-launchpad-ppa/+build/2465) still says it failed to upload14:32
matsubarahmmm14:33
matsubaralooking here: https://code.edge.launchpad.net/~matsubara/+recipe/bzr-pqm-launchpad-ppa I see there are two build records there14:33
bigjoolsmatsubara: so 2 builds got created, which explains the error14:35
bigjoolsmatsubara: I don't know what could cause that to happen14:36
bigjoolsbut abentley might14:36
matsubarabigjools, maybe I set the daily build option and requested a build manually through the "request builds" link14:37
matsubaranot sure, but looks like PEBKAC heh14:37
bigjoolsyeah that could be it14:37
bigjools:)14:37
matsubarathanks for your help!14:38
bigjoolsmatsubara: it's a bug that it allows 2 builds for the same version though14:38
matsubarayep, I'll search/file a bug14:38
bigjoolsthat should be caught earlier so that it doesn't waste build farm time14:38
matsubarabigjools, launchpad-code or soyuz?14:38
bigjoolscode14:38
matsubaraokie. ta!14:38
cr3hi folks, I'm mapping some launchpad concepts externally for referential integrity purposes, so that my web app can refer to launchpad projects for example. my question is: should I name that particular concept as a "product" to remain true to launchpad or "project" because that's how it's exposed externally?14:39
matsubarabigjools, aha! https://bugs.edge.launchpad.net/launchpad-code/+bug/620248 the description and tim's comment describes exactly my situation14:40
* cr3 is leaning towards remaining as close as possible to the launchpad core for consistency purposes14:40
gmbcr3, Project. The "product" moniker is archaic and should be taken out and shot, but it's got its tentacles into a lot of code.14:41
gmb(That and "Project Groups" are called "projects" in code, which is just weird)14:41
cr3gmb: that's the feeling I got from the launchpad code, but it doesn't seem like it's ever going to happen14:41
gmbcr3, I think it's a JFDI-when-we-have-breathing-room thing.14:41
gmbBecause it has the potential to break tonnes of stuff.14:41
cr3gmb: breathing what? not in my vocabulary :)14:42
bigjoolsmatsubara: yep!14:42
gmbMaybe we'll do it in the week before Xmas, when we have nothing major scheduled, just lots of code cleanup.14:42
abentleymatsubara, bigjools,  it is expected behaviour that when you enable daily builds, it will always attempt a build, even if you have previously done a build.  One has no way of knowing whether the result will fail to upload without doing a build.14:42
bigjoolsabentley: I have deja vu about this fact :)14:42
gmbcr3, Breathing room... er... space to make the change and clean up all the breakages without making everything far to stressful.14:42
cr3gmb: that's much sooner than I had expected, I'll code for the future then. thanks for the advice!14:42
gmbcr3, np. But note: "Maybe" from me != "We will" from flacoste or thumper :)14:43
cr3gmb: as long as the intention is there, at least I can justify my naming decision. I will document that my concept of project maps to launchpad's concept of product though14:43
matsubaragmb, cr3: https://bugs.edge.launchpad.net/launchpad-code/+bug/10915314:44
abentleymatsubara, bigjools: upload failures usually come from debversion, and some substituted values (e.g. {time} will always be different.14:45
gmbmatsubara, Hurrah, saved me a job; thanks :)14:45
matsubaraabentley, right. my case is that I think I set the daily build option and requested a manual build at the same time14:46
matsubarathen I was confused by the failure email14:46
matsubarawhile the first request was successfully built14:46
abentleymatsubara, I understand that.14:46
abentleymatsubara, if you had requested the same build twice, that would have been rejected.  But the daily build would have been scheduled after your manual build completed.14:48
matsubaraabentley, even if it completed successfully, hence bug 620248?14:51
abentleymatsubara, even if it completed successfully, because there's no way to know that it wouldn't complete successfully again without attempting a build.  See above.14:52
matsubararight, makes sense14:52
rockstargmb, skype?14:53
gmbrockstar, Sure. Let me get mah Skype rolling.14:55
rockstargmb, I don't have your skype id already here, and apparently your name is not original enough.14:57
gmbrockstar, binnsgm. :)14:57
=== mbarnett` is now known as mbarnett
rockstargmb, you'll want to bzr pull.15:35
gmbrockstar, Okay, doing so now ,thanks.15:35
rockstargmb, you should have revno 187 (a bad omen)15:36
gmbrockstar, yep :)15:37
jmlsinzui, we have a call now.16:00
jmlsinzui, but I need a cup of tea first.16:00
sinzuijml, I am ready on mumble16:04
jmlsinzui, me too!16:09
bigjoolssinzui: I'm not sure, but I think this bug is registry?  https://bugs.edge.launchpad.net/launchpad/+bug/63615116:22
sinzuibigjools, yeah. That has no home. give it to registry. I think most of the objects are registry related.16:26
bigjoolsthat's what I figured, thanks16:27
bigjoolsthat question about featured projects probably belongs there too16:28
bigjoolsmrevell: did I see earlier that you were dealing with this? https://answers.edge.launchpad.net/launchpad/+question/12516516:32
mrevellbigjools, Yeah, I'll be on it.16:33
bigjoolsmrevell: ok mind if I assign to you?16:33
mrevellgo for it16:33
bigjoolsahhh questions needs some ajax love16:34
sinzuijml, UbuntuBeta, Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;16:36
gmbbigjools, Questions needs some love from the Loving Hammer of Rectification, never mind AJAX.16:42
gmbOh, no, wait, I'm thinking of blueprint.16:44
=== matsubara is now known as matsubara-lunch
=== salgado is now known as salgado-afk
james_wsome help with diagnosing bug 637323 would be welcome, as it is causing problems for the apport retracers in particular17:09
EdwinGrubbsIs there something I need to do besides put /++oops++ in the url to trigger an oops on launchpad.dev?17:19
=== beuno is now known as beuno-lunch
=== Ursinha is now known as Ursinha-lunch
=== deryck is now known as deryck[lunch]
* bigjools EoDs, good evening all17:43
mrevellnight all18:04
=== Ursinha-lunch is now known as Ursinha
=== matsubara-lunch is now known as matsubara
=== beuno-lunch is now known as beuno
* rockstar lunches18:54
jelmerrockstar: hi19:11
=== deryck[lunch] is now known as deryck
lifelessmoin19:26
lifelessjames_w: so19:36
lifelessjames_w: bug:19:37
lifeless - appserver revno differences cause PATCH error19:37
lifeless - launchpadlib in stable Ubuntu points to edge19:37
james_wthat's intended design in the current code19:37
james_wwell, not exactly, but the revno changing the etag is19:38
lifelessso, we have to fix that.19:38
lifelesswhat else19:38
lifeless(if we don't fix it we cannot have a smooth upgrade of the server farm). Its a designed in error.19:38
lifelessoh, and the appserver 'name' should be present in responses so we can debug things remotely.19:39
=== Ursinha is now known as Ursinha-brb
bdmurrayI've running into an error when running make run - "cannot import name SAFE_INSTRUCTIONS" from bzrlib.plugins.builder.recipe19:55
lifelessupdate your sourcecode19:56
lifelessutitilies/update-sourcecode19:56
bdmurrayUpdating dulwich to revision 424 (No change)2kB/s | Fetching revisions:Finishing stream20:02
bdmurrayException AttributeError: "'NoneType' object has no attribute 'close'" in <bound method SmartSSHClientMedium.__del__ of SmartSSHClientMedium(bzr+ssh://brian-murray@bazaar.launchpad.net/)> ignored20:02
lifelessand cd to the download-cache and run bzr update20:03
bdmurrayit is up to date at revision 18320:06
lifelessjames_w: can we move the retracer to prod please?20:10
james_wlifeless: that's not what I was playing with, and I have no control over it20:11
lifelessah ok20:11
* maxb raises two eyebrows at finding an executing code import for a deactivated project20:18
maxb(lp:libs)20:21
jelmermaxb: There is more than one..20:24
maxbyes, my point is there shouldn't be :-)20:24
jmlit's not that surprising when you think about it.20:25
maxbLP does at least does not forbid visibility of these20:25
bdmurraylifeless: did you have anymore ideas?20:47
lifelesssorry otp20:47
jmlwhy do we need to compile templates to run tests?20:55
jmllifeless, are we having our scheduled call?20:59
cr3jml: welcome back! fyi, I've spent the last week or so implementing the results tracker: https://launchpad.net/launchpad-results21:04
jmlcr3, thanks. I'm glad to hear it.21:04
cr3jml: following discussions with lifeless, we decided to impelement this new feature as a standalone web app which could eventually be folded into the core once it becomes stable21:04
jmla sound plan.21:04
cr3jml: that way, we can reach stability more quickly than if I implemented directly in the core, and we can make mistakes much more easily too21:05
* cr3 usually gets things right on the third try on average :(21:05
lifelessjml: yes21:05
cr3jml: I already have a pretty neat web app pushed into a branch which integrates django, zope, storm and lazr. seems to work well so far21:06
lifelessjml: ran slightly over with statik21:06
=== matsubara is now known as matsubara-afk
jmlg'night all22:02
mwhudsonjml: g'night22:02
lifelessnight22:11
lifelesssinzui: hi22:37
lifelesssinzui: I would like to learn aboot batching!22:37
sinzuihi lifeless22:38
lifelesssinzui: is now a good time for you?22:39
sinzuiit is22:39
lifelessgreat22:39
lifelessso I was thinking mailing list moderation pages would be a good one for me to learn on22:39
sinzuiGood choice22:40
* sinzui looks at browser code22:40
wallyworld_morning22:40
sinzuilifeless I think we want to start by making held_messages a cachedproperty because we may reference it 3 times22:42
lifelesssinzui: ok. I'm just pushing current devel up to lp:~lifeless/launchpad/registry which is where I'll put this work22:43
sinzuiokay22:43
lifelessso, I can do the cachedproperty change easily; can you tell me a little about how batching hangs together while I do that?22:43
sinzuilifeless: lets talk about this: http://pastebin.ubuntu.com/493322/22:45
lifelesssinzui: so held_messages won't benefit much by being a cachedproperty. we can come back to that22:45
lifelessah, interesting22:46
lifelessso we wrap the result set22:46
sinzuilifeless, the BN holds the record set and does not realise it until we iterate over it. BEware of indexing it though. I recently discovered that that does not realise the data, we just call the DB 75 times22:46
sinzuilifeless our BN sets the default batch size to what we have in config.launchapd.default_batch_size (75?) you can pass size=20 if you believe we want a different size22:48
lifelessto the constructor ?22:48
sinzuilifeless correct. Subclasses of the BN may set different size rules or singular/plural headings so that we do not need to set the info in __init__22:49
lifelesshttp://paste.ubuntu.com/493324/22:49
lifelessthats obviously mostly your code22:50
sinzuilifeless, the request is very important. The BN will look for start and batch (size) params to control the slice. We will raise an BatchSizeError (?) if the user tries to exceed our hard limit22:50
sinzuiouch we were calling getReviewableMessages() twice for every page load?22:51
lifelessyes22:51
lifelesswhich is old school sqlobject in fact22:52
lifelessnote that creating a resultset is pretty cheap in general because they are lazy: they don't do sql immediately22:52
lifelessbrb guy at door22:52
sinzuilifeless: We often have navigation links before and after the batch we are iterating over: This is template code: http://pastebin.ubuntu.com/493327/22:55
* sinzui looks for real template22:55
sinzuiah, that is nice, we are adapting the message in the template. This might be an easy addition22:57
rockstarmwhudson, is this better?22:59
mwhudsonrockstar: i think so22:59
mwhudsonrockstar: obviously there's no sql that can find the affected recipes23:00
bdmurraysinzui: did you have an idea about how to fix bug 636412?23:00
rockstarmwhudson, on the contrary.23:00
mwhudsonrockstar: tbh, i'm tempted to suggest a bzr-builder change23:00
sinzuilifeless: in team-mailing-list-moderate.pt, I think we only require the navigation headers because the table is doing the right thing. This might be the final code for the template: http://pastebin.ubuntu.com/493328/23:00
rockstarhttp://pastebin.ubuntu.com/493314/23:00
rockstarmwhudson, ^^23:00
mwhudsonrockstar: how do you know that there are no recipes with the same problem?23:01
rockstarmwhudson, a better query would be to find out where "." is the value of sourcepackagerecipedatainstruction.directory23:01
mwhudsonyeah, that would work here i guess23:01
rockstarmwhudson, what would you bzr-builder change be?23:01
mwhudsonrockstar: i'm tempted to say that bzr-builder should change so that it can return an invalid recipe from stringification, but tell you about it23:01
mwhudsonso you can display a warning on the recipe's page23:01
lifelesssinzui: sorry for the interrupt23:01
sinzuibdmurray, since I cannot see how the user got to that page, I think we should consider that the view should handle the case of URL hacking...23:01
bdmurraysinzui: right, I haven't seen something like that before23:03
rockstarmwhudson, that would probably work longterm, yes.23:03
rockstarmwhudson, for the short term, to restore access to the recipe, does the SQL route sound fine?23:04
mwhudsonrockstar: this would mean changing bzr-builder to not use __str__ to stringify recipes i guess, something i always hate a bit :)23:04
mwhudsonrockstar: yeah23:04
sinzuibdmurray, the template could guard the form with a new view attr. Maybe view/can_subscribe. That view property does something like:23:04
sinzuireturn self.context is not getUtility(ILaunchpadCelebrities).ubuntu23:04
mwhudsonrockstar: is it clear what the intent of the recipe is?23:04
rockstarmwhudson, maybe we could just modify __str__ to be a bit smarter?23:04
mwhudsonthat'd be possible too23:04
rockstarmwhudson, the recipe has two lines: the base branch and the nest command23:05
sinzuibdmurray, I suppose the form should also have a sentence for the ubuntu to explain we do not want the user to shoot himself in the foot23:05
lifelesssinzui: that seems very easy23:05
lifelesssinzui: whats the key thing in the tal:repeat that you looked for to make sure it wrks ?23:05
sinzuilifeless yes indeed23:05
sinzuiThat widget hack is rather convenient I think23:06
lifelesssinzui: I don't undertand whats going on there23:06
lifelesssinzui: what tests are normally added in a case like this?23:07
sinzuilifeless: I like to see a test to verify the view is returning a BN. Since the headers are set, we should test the bn.default_singular_heading and default_plural_heading23:10
sinzuilifeless: The template will have upper and lower batch ids to confirm that both navs are rendered. We can test by calling render() on the view or with a TestBrowser23:11
* sinzui looks for existing tests23:11
lifelesssinzui: can you expand on what the 'widget hack' does?23:11
sinzuilifeless the adapted message is converted to a HTML fragment in lp/registry/templates/message-moderation.pt23:12
lifelesssinzui: is that the message/@@+moderation bit ?23:12
sinzuilifeless yes, but I now think there is one more change needed to the table...23:13
sinzuilifeless: I think we need to change the line before @@_moderation to23:14
sinzuital:repeat="message view/held_messages/currentBatch"23:14
* sinzui is still looking for existing tests for held_messages23:16
sinzuilifeless: I do not see any tests for the view that is generating the form. We really want one and I really think we have once because I recall reading a test to explain how to put messages into the expected state23:18
lifelessI'm adding one to test_team23:19
lifelesscan consolidate later23:19
lifelessbrowser/tests/test_team, I mean23:20
sinzuilifeless look at stories/mailing-lists/moderation.txt which puts messages into the state23:20
lifelessthanks23:20
lifelessmost of these tests don't need that, just the batch ids do, right?23:20
sinzuilifeless, yes. and we could check the batch ids in the moderation test since we have the template rendered. Lifeless I am a bit pedantic about verifying the batch ids because I discovered we had two upper navs before, or that one never rendered at the bottom of a very long list23:22
* sinzui also added the singular/plural message support23:22
lifelessok23:23
lifelesslooking in moderation.txt for the batch ids23:23
lifelessWould this be a good point to check ?23:23
lifelessFoo Bar sees that there is one message waiting for approval.23:23
sinzuiyes23:23
lifelessis there an example of checking this elsewhere?23:23
sinzuime thinks23:27
thumpersinzui: are you free for a call?23:28
lifelessthumper: sinzui is training me just now, should be finished soon.23:29
thumperlifeless: training you to do what?23:30
lifelessbatch things23:30
lifelessjust bringing all the bits together quickly23:30
lifelessI couldn't find a clear guide to batching-pages when I asked around yesterday.23:30
sinzuilifeless print find_tag_by_id(admin_browser.content, 'batchnav_first')['class'] should print first23:32
sinzuithat does not look right, the upper class is missing from this template23:33
lifelesswill it error if someone has doubled things up or something?23:33
sinzuiyes23:33
sinzuilifeless, I think my days of checking upper and lower batches are over. The markup is rendered with html classes now: upper-batch-nav and lower-batch-nav23:35
sinzuilifeless, and the nav is only rendered if there is a batch! we need to exceed 5 messages (5 is the default batch size in test)23:36
mwhudsonjelmer: around? http://launchpadlibrarian.net/55539932/vcs-imports-r-project-trunk.log is very odd23:38
sinzuiI have just confirmed that the top and bottom navigators are rendering duplicate ids for the links :(23:38
sinzuiWell That is why i wanted a test ;)23:39
jelmermwhudson: It's happened on at least one other cscvs import as well23:39
mwhudsonjelmer: but not all?23:39
mwhudsonjelmer: could it be per-importd perhaps?23:39
jelmermwhudson, it doesn't appear to occur that often for that23:39
lifelesssinzui:     self.assertEqual('message', navigator.default_singular_heading)23:39
lifelessAssertionError: not equal:23:39
lifelessa = 'message'23:39
lifelessb = 'result'23:39
jelmermwhudson: actually, that reminds me23:40
lifelesscurrent diff23:40
lifelesshttp://paste.ubuntu.com/493338/23:40
* sinzui rechecks code23:40
mwhudsonjelmer: well it will only happen when there is a new rev to import i guess?23:40
sinzuilifeless ._singular_heading and ._plural_heading.23:41
jelmermwhudson: that's true I guess, but we've only seen 4 or so failures since the rollout. Are there really that few working and active CSCVS imports left?23:41
sinzuilifeless ^ did you see my discovery that we are generating duplicate ids for links in the upper and lower nav?23:41
mwhudsonjelmer: don't know23:42
lifelesssinzui: hah!23:42
lifelesssinzui: fun.23:42
mwhudsonjelmer: but if it was just pear, it would have to run on pear 5 times in a row23:42
mwhudsonjelmer: that's fairly unusual23:42
jelmermwhudson: ah, I hadn't considered that. it seems likely that's the cause then23:43
mwhudsonlosa ping time i guess23:43
sinzuiThe fix looks trivial...concatenate the view class for the nav to the like id in the template. The view/css_class will make them distinct by upper and lower.23:43
* sinzui reports bug to explain23:44
mbarnettmwhudson: heya.23:44
mwhudsonmbarnett: can you log into pear as importd and run "bzr whoami" pls?23:44
mbarnettimportd@pear:~$ bzr whoami23:44
mbarnettImport Daemon <importd@pear>23:44
mbarnettimportd@pear:~$23:44
mwhudsonmbarnett: bzr --version?23:45
mbarnetthttp://pastebin.ubuntu.com/493339/23:45
lifelessBatchNavigator.count() is wrong23:46
lifelessneed to find the right way to do that23:46
jelmermwhudson: Perhaps not pear but one of the other ones?23:46
mwhudsonmbarnett: can you try python /srv/importd.launchpad.net/production/launchpad/eggs/bzr-2.2.0-py2.6-linux-x86_64.egg/EGG-INFO/scripts/bzr whoami ?23:46
mwhudsonmbarnett: pls modify path until it exists :)23:47
mwhudsonjelmer: https://code.edge.launchpad.net/~vcs-imports/r-project/trunk <- looks like pear is the bad apple23:47
jelmermwhudson: Ah, right23:48
jelmermwhudson: also, I hadn't considered the bzr path23:48
mwhudsonme neither until i saw that :)23:48
* thumper upgrades to maverick23:49
maxbjelmer: I think I've figured out what's up with those slow KDE imports.... the bzr-svn logwalker doesn't incrementally commit the cachedb23:50
mbarnettmwhudson: it is fighting with me: http://pastebin.ubuntu.com/493348/23:50
mbarnettchmoding23:50
mwhudsonmbarnett: that's why i put python first :)23:51
lifelesssinzui: so should we not test that here, for now ?23:51
mwhudsonsorry for not using quotes, that would have been easier23:51
mbarnettmwhudson: ah, i missed the python23:51
mwhudsonmbarnett: "/srv/importd.launchpad.net/production/launchpad/bin/py /srv/importd.launchpad.net/production/launchpad/eggs/bzr-2.2.0-py2.6-linux-x86_64.egg/EGG-INFO/scripts/bzr whoami" would be even more correct i guess23:52
mbarnettimportd@pear:~$ /srv/importd.launchpad.net/production/launchpad/bin/py /srv/importd.launchpad.net/production/launchpad/eggs/bzr-2.2.0-py2.6-linux-x86_64.egg/EGG-INFO/scripts/bzr whoami23:52
mbarnettbzr: ERROR: Unable to determine your name.23:52
mbarnettPlease, set your name with the 'whoami' command.23:52
mbarnettE.g. bzr whoami "Your Name <name@example.com>"23:52
lifelesshmm, getting a LocationError from hold_count now23:53
* lifeless puts it back as 'future'23:53
sinzuilifeless the fix is pretty easy, and I am sure there is no test for th default BN since I can see any attempt will fail.23:54
sinzui.me makes quick change23:54
mwhudsonmbarnett: ok, that's good (ish, it confirms my expectation)23:55
mwhudsonmbarnett: can you try the same on the other importds?23:55
mbarnettheh23:55
lifelesssinzui: yeah the test you gave blows up with NoneType in unsibscritable23:59
lifelessthere are also some later failures23:59
lifelesslike the Moderate button is missing?23:59
mbarnettmwhudson: same23:59

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