/srv/irclogs.ubuntu.com/2012/01/25/#launchpad-dev.txt

rick_hlifeless: ok, that looks a bit nutty and I can't think of a real use case I'd do that atm00:00
rick_hlifeless: but if you go through to the block helpers I think that idea is sound to be able to help with the iteration and such.00:01
rick_hthat's where I get into I like a tpl tool that lets me build helpers to be used site wide for consistancy00:01
rick_hso for instance, I could seee creating a block that's part conditional to help make sure output without any data provides a decent "no results found" consistant bit of html00:02
lifelesssure00:05
lifelessdoes moustache allow nested templates?00:05
lifeless(because that seems both less general (and more optimisable) and a bit easier to reason about00:05
* rick_h dbl checks, I didn't hink so but it's on the ticket "wishlist"00:05
lifelessanyhow00:07
lifelesshaving looked at it00:07
lifelessI think we can easily implement a handlebars compiler00:07
rick_hlifeless: looks like it's got "partials" which are kind of like it00:07
lifelessobviously the extension bits are going to need some idiomatic translation to python00:07
lifelessdepending on how efficient we want the compiler etc00:07
rick_hlifeless: but yea, the one thing to think about is that when you get to doing a lot of client side rendering you're getting dump data dumps from an api and you're not going to get a ton of logic ability from that end00:07
lifelessrick_h: well, I want LP's main tier to also be just an API consumer :)00:08
lifelessso I don't see a great deal of tension there00:08
rick_hlifeless: ok00:08
lifelessrick_h: one of the nasty tricky performance things zope has, for instance00:09
lifelessis this model:00:09
lifelessouter template, inner template for e.g. 'view of a bug'00:09
rick_hlifeless: end of the day I'm not the best person to ask. I'm a fan of SqlAlchemy, Mako, Pyramid, things that give me enough rope to shoot myself, but I can't stand a tool that tops out and I end up doing stupid hacks around the tool to get something done.00:09
lifelessthe outer template iterating over views of the inner template00:09
StevenKrick_h: You shoot yourself with rope? Really?00:09
lifelessindeed, totally with you on that00:10
rick_hStevenK: heh, cold meds are going to my head finally :)00:10
StevenKHaha00:10
lifelessrick_h: ubuflu?00:10
StevenKrick_h: Ugh, you're sick too?00:10
rick_hlifeless: yea, and I do some of that in my app be nesting views in views00:10
rick_hnot sure, might be toddler disease00:10
rick_hhe had pink eye over the weekend00:10
lifelessrick_h: this tends to perform terribly unless you decide upfront what is needed00:10
rick_hand today I'm running on E00:11
rick_hlifeless: right, it's much more memory intensive and such00:11
* StevenK raises one eyebrow00:11
lifelessrick_h: which to me, speaks to having a single simple top level template, more or less00:11
lifelessrick_h: not memory so much - late evaluation / lazy loading00:11
lifelessrick_h: death by 1000 cuts00:11
rick_hlifeless: right, but then you're template is going to have to be smarter in order to intellegently handle corner cases/etc00:11
lifelessrick_h: something, yes00:11
lifelessrick_h: I guess I'm not satisfied with the answers we have yet00:12
rick_hlifeless: let's find a use case and go to town :)00:12
lifelessrick_h: and I'm trying to figure out if we want to say 'use moustache (and no handlebars features)' or 'use handlebars (and port to python)' or 'lets roll a third thing'00:12
rick_hlifeless: yea, and not sure we will. These decisions tend to show if they work/not more in real use cases with real fire going by00:12
* StevenK spies rick_h as the last requested deployment00:12
rick_hStevenK: yea, I did my first NDT request :)00:13
StevenKrick_h: You found it was pretty easy?00:13
rick_hlifeless: right, I've hit limitations in mustache and especially issues with pystache so I'm pretty much in the "anything but stache" camp atm :)00:13
rick_hhelpful, aren't I00:13
rick_hStevenK: well I screwed up, I thought approval was from webops and I missed getting teh bugs linked/etc00:14
rick_hbut after a few tries and wgrant holding my hand I got it00:14
wgrant:)00:14
wgrantlifeless: ha hahhhahahh hah '00:15
wgrantfewfw00:15
wgrantfwef00:15
wgrantSo, as it turns out, the date logic is fine.00:15
* wgrant backs up the oopses and tries it.00:17
lifelessrick_h: conceptual or implementation issues?00:18
rick_hlifeless: implementation for the most part.00:18
StevenKwgrant: Then what's the bug?00:18
rick_hit's slow, the pystache implementation is broken compared to JS, and I don't see how we'd port over a lot of the .pt logic over to it (so that part is conceptually)00:18
lifelessrick_h: by .pt you mean [me]tal templates00:20
lifeless?00:20
lifelessrick_h: the js version or the py version is slow?00:21
lifelessrick_h: the py version looks horrendously slow: see _render_sections00:22
rick_hlifeless: yea, a lot of things like the macros and such you'd have to look at porting over00:27
lifelessright00:28
lifelessI think there is substantial work to do00:28
lifelessHowever, what we have now with a mix of:00:28
lifeless - hand rendered00:28
lifeless - tal00:28
lifeless - metal00:28
lifeless - stache00:28
lifeless - chameleon00:28
lifelessis pretty much unmaintainable00:28
rick_hheh, you won't find me arguing there00:28
lifelessso I think for now the best solution is to say 'take stache and run with it *gathering up data where it does not fit well*'00:29
rick_hok, time to go take more meds and hit the pillow. Sorry.00:29
lifelessI'm open to the idea of different (tiny) DSL's for different problem domains00:29
lifelessciao, get well00:29
rick_hlifeless: understand00:29
StevenKlifeless: You have mostly recovered?00:32
lifelessStevenK: yeah, still a bit snuffly & cold sweats but nothing like I was00:34
lifelessStevenK: lynne is coming down with it now though :(00:34
StevenK:-(00:35
StevenKI'm still coughing, but due to asmtha, it takes me a while to shake them off00:36
lifelessyeah, me too - asmtha sucks00:39
* wgrant escaped the plague this time.00:40
* StevenK ships wallyworld to wgrant's house so he can share in the misery.00:40
wgrantAlthough I did get whooping cough in Wellington, so I guess it's fair.00:40
lifelesshttps://dev.launchpad.net/PageTemplateHacking00:41
wallyworldi love sharing00:41
lifelessthis talks about mochikit00:41
lifeless:(00:41
wgrantlifeless: :D00:41
StevenKlifeless: Hey, we got Mochi out of the codebase, it can be up to others to remove it from the docs00:41
* wallyworld didn't even know there were docs00:42
lifelesswgrant: so, not date ranges.00:42
lifelessthere is also this page https://dev.launchpad.net/Web/TemplateCodeReuse (it doesn't talk about mochikit, but abou ttemplates)00:42
wgrantlifeless: The fix is http://paste.ubuntu.com/815998/ :)00:42
* lifeless headdesks00:43
wgrantMyes.00:43
lifelesswgrant: +100:43
lifelesssorry00:43
wgrantCurrently testing on a hardlinked copy of the production oopses.00:43
wgrantSeems to be working.00:43
StevenKHardlinks?00:43
StevenKYou bad man.00:43
wgrantWith 6GB of free space and 100GB of OOPSes, I had little choice :)00:44
lifelessStevenK: get well :)00:51
james_wlifeless, did you have an opinion on whether oops should change bson libraries?01:03
lifelessnope01:10
lifeless(no opinion)01:11
lifelessjames_w: ^01:16
james_wok01:16
james_wit's rather annoying having the two of them01:16
lifelessI agree01:17
lifelessI think a patch to work with either would be pretty easy to do01:17
lifelessand avoid the question entirely01:17
lifelesswell, it would leave open questions for debugging like 'which one does THIS WEIRD THING' etc01:18
lifelessjames_w: all I did was grab the first one that I found on pypi01:18
james_wyeah, it's understandable01:19
james_wunfortunately it's the pymongo one that got packaged01:19
lifelessits daft that the mongo guys didn't register the name on pypi01:19
lifelessdaft and ANNOYING01:19
wgrantAnd very much in the style of the rest of the NoSQL DBs :)01:20
james_wwell, it's another top level in pymongo which is registered, so it's annoying that pypi lets this happen01:21
lifelessjames_w: how do you mean ?01:21
james_whttp://pypi.python.org/pypi/pymongo01:21
wgrantThat's insane.01:21
james_wif you pip install pymongo you get bson too01:21
lifelessaiee01:21
james_wand nothing complains at any point01:21
wgrant:D01:21
lifelessso thats not pypi's problem01:22
lifelessit /could/ be, but it isn't :)01:22
james_wand apparently "pip install pymongo; pip install bson" != "pip install bson; pip install pymongo"01:22
lifelessof course it isn't.01:22
lifelessthe pymongo packaging is doing something nobody expects01:22
lifeless(which you know, and I know you know :P)01:23
lifelessanyhow01:23
lifelesslike I say, I have no opinion01:23
lifelesswhatever works01:23
wgrantlifeless: btw, pycassa 1.4 (which I packaged yesterday) incorporates the concurrent schema change workaround that you have in oops-repository.01:23
lifelesswgrant: \o/01:23
wgrantIt was also only released a day or two ago, but it seems to work fine.01:23
lifelessI can't remember if I filed that as a bug or whinged in private email or whatever.01:24
wgrantI also packaged new python-thrift and cassandra, because having an outdated new stack seems silly.01:24
lifelessbut its cool they have seen sanity01:24
wgrantNot sure what U1DB are doing.01:24
lifelesswgrant: have you tossed a delta to elmo ?01:24
wgrantBut I couldn't see anything even vaguely modern in PPAs.01:24
wgrantNot yet, no.01:24
lifelesshe might appreciate that01:24
lifelesshe was mumbling about updating01:24
wgrantYeah.01:24
wgrantI think I might drop support for <precise or at least <oneiric and try to get rid of some of the jars.01:25
wgrantelmo's already only support >= natty.01:25
wgrantBecause JAVA! :D01:25
lifelessI'd check with elmo about that (so that we can share packaging)01:26
wgrantOf course.01:26
wgrantBut everything relevant should be precise in like 4 months.01:26
wgrantSo I don't imagine too much resistance.01:27
wgrantHmm.01:28
wgrantIs our bson library very slow, I wonder.01:28
wgrantBecause this prune is taking forever.01:28
wgrantIt's only doing a few per second.01:28
james_wanyone looked at https://bugs.launchpad.net/python-oops-tools/+bug/903573 at all?01:28
_mup_Bug #903573: TypeError: start_response() takes no keyword arguments <python-oops-tools:Triaged> < https://launchpad.net/bugs/903573 >01:28
james_wwgrant, jam says it is slow01:28
wgrant:(01:29
lifelessjames_w: that looks like the broken django stack01:32
james_wlifeless, I don't think so01:32
james_wthe django.py replaces a different method01:32
lifelessbah01:33
lifelessI meant mod_wsgi01:33
james_wyeah, that's what I'm thinking01:34
james_wbut I think "broken" may just be "old"01:34
lifelesswell01:34
lifelessWSGI has been like this for a -long- time01:34
lifelessso what is happening here is that an oops in oops-tools itself is generated and is trying to be shown to the user, but mod_wsgi is barfing01:35
james_wyes01:36
james_wah, it's a bug in oops-wsgi by the look of it01:39
lifelessoh?01:40
james_wI'll send an MP in a minute01:40
lifelesscool; could you use english in the meantime?01:41
james_wit's pretty simple01:45
james_wthere are two locations where it calls start_response with exc_info01:45
james_wone passes it positionally, the other as a keyword01:45
james_wthe latter is wrong apparently01:45
lifelessbah01:46
lifelessthanks for spotting that01:46
lifeless'(As with all WSGI callables, the arguments must be supplied positionally, not by keyword.) ' I swear that wasn't in PEP 3333 last time I looked01:47
james_wlifeless, have you looked in to how to encourage django to use a response with the oops id on an uncaught exception?01:47
james_wif you don't provide a 500 template then you get the oops one, but the oops it points to is an exception complaining that you don't have a 500 template01:48
lifelessjamesh: has01:48
lifelessoh, for oops-tools itself I know we need to provide a 500 template01:48
lifelessthere is a patch for django, last I checked it was a bit stalled01:49
lifelesshttps://code.djangoproject.com/ticket/1667401:49
james_woh, I thought that was what the django.py fixed01:50
lifelessit works around it01:50
james_whttp://ec2-107-22-92-8.compute-1.amazonaws.com/pkgme/+oops is what I'm getting currently01:51
lifelesshttps://code.djangoproject.com/attachment/ticket/16674/wsgi-expose-exc-info-v2.patch01:51
lifelessthats the actual fix01:51
lifelessthe django module in oops-wsgi sniffs the exception to ensure you get an oops01:51
lifelessbut it can't influence django to make it expose the error to the wsgi stack01:52
jameshjames_w: you mean to display the OOPS ID on the error page?01:52
lifelessso the main oops module just sees a successful reponse01:52
james_wjamesh, yeah01:52
james_wlifeless, ah, I see01:52
jameshjames_w: I haven't been able to work out a good way to solve that with the new infrastructure01:52
james_wso if it were properly fixed then oops' response would take over01:52
james_wok, it's not so important to us at this point01:52
lifelessjames_w: do you get an OOPS emitted to (rabbit|disk)01:53
james_wlifeless, yep01:53
jameshthe old oops code we have in U1 can preallocate the oops IDs on demand, so we can use that in the error page01:53
lifelessjamesh: we could allow that too, if you wanted to use a timeuuid or something, and put the id in the context01:54
jameshone idea I had for the new code might be to set a short lived cookie in the WSGI middleware, and look that up with JS in the error page01:54
lifelessjamesh: ooh, nice.01:54
jameshthat has the downside that cookies are shared between all tabs in a browser01:54
james_wlifeless, for this patch, how much do you care about a test?01:54
james_wit's not the easiest thing to test after all01:54
lifeless'meh'01:54
jameshso if you open 20 pages at once and five fail, you might see the same OOPS ID on each01:55
lifelessyeah01:55
lifelessuhm01:55
lifelesswonder if you can inspect the response headers from the page itself01:55
lifelessjamesh: shoving id in the context would be fine.01:55
lifelessjames_w: should be easy to test if you want to; just have an outer start_response(*args, **kwargs) and check kwargs is empty01:55
james_wlifeless, ah, good point01:56
jameshI don't think there is a way to inspect response headers unfortunately01:56
lifelessso, a django error template that puts content['oops.context']['id'] = str(uuid.uuid1()) => win01:59
lifelessjamesh: ^01:59
wgrantHmm02:00
wgrantRegression02:00
wgrant5633 AssertionError: Ambiguous view name.02:00
wgrant    GET: 5629 Other: 4 Robots: 98  Local: 23902:00
wgrant     168 http://feeds.launchpad.net/%7Ebarry/latest-bugs.atom (Person:latest-bugs.atom)02:00
wgrant        OOPS-00033c67366d1e7513397953f71c9b29, OOPS-001af265e7d5322fdd12c9b12b4fed8c, OOPS-00ae6fedb93aa14a7fc508d51b9fa6a7, OOPS-010f606986cdc5008d999fabe085e6aa, OOPS-01432c961a9928b26bb0d210d723a53b02:00
wgrantAh02:02
wgrantI bet it's the bug listings release02:02
wgrantIt doesn't work with feeds.02:02
wgrantWhich are always anonymous, so were never tested.02:02
wgrantlifeless: ^^02:02
lifelessgrah02:03
lifelessI guess we need to rollback02:03
jameshlifeless: I guess that would work.  Do we lose anything by having the view assign an ID instead of the publisher doing so?02:03
wgrantlifeless: It's been broken for a day, and it's a major thing.02:03
wgrant"it" == bug listings02:03
wgrantSo I think we should keep it on.02:03
wgrantIt's not as if anybody uses feeds anyway.02:03
lifelesswell, 5633 polls for them02:04
lifelesswgrant: lets start with a bug02:04
lifelessjamesh: I think its fine to allow the earliest point that knows an error is on the way to assign an id - the hash based aproach is just one way to get a unique id02:04
lifelessjamesh: oops can render errors itself02:05
lifelessjamesh: or you could pass a django template into oops02:05
lifelessjamesh: or you can assign the id earlier, if the framework really wants to render its own errors02:05
lifelessjamesh: the existing facilities are the trivial string template that oops has itself or a callback you can supply to the middleware constructor02:08
jameshlifeless: I think giving frameworks the ability to render their own error pages makes python-oops-wsgi more appealing, since it can be dropped into an existing app02:09
lifelessjamesh: I think the first thing I would attempt would be to discard the django error page but wire up the callback to let me use a django template to render the error page02:09
james_wso, I can't do this patch as I am yet to get close to having a working buildout02:09
wgrantlifeless: Hm02:09
lifelessjames_w: oh? what happens?02:10
wgrant'bugs.dynamic_bug_listings.enabled pageid:Person:latest-bugs.atom 2 '?02:10
lifelesswgrant: might work, we should try02:11
wgrantThat seems to be the only popular affected page.02:11
jameshlifeless: well, once we've got that django bug report I filed fixed, that should be possible: if start_response() is called with an exc_info, just re-raise it02:11
lifelessjamesh: that seems to be slightly different02:12
jameshthen present an error page after the exception bubbles back up to the middleware02:12
lifelessoh right02:12
lifelessso yes, get the middleware's start_response to be called with exc_info02:13
jameshwith that in mind, the debug error page Django presents is pretty nice02:13
lifelessah, make_app(template=...)02:13
jameshso when developing an app, I'd prefer to see that than an oops-wsgi error page02:13
lifelessjamesh: sure, but not for deployed apps ?02:14
lifelessjamesh: so have dev mode eat the exceptions and render itself02:14
lifelessjamesh: anyhow, I'm happy to let the app allocate ids02:14
lifelesspragmatic02:14
james_wlifeless, confusing error messages02:14
jameshlifeless: I'm of two minds there.  The error pages we've got wired up in U1 don't do much , so would be pretty easy to reimplement in the middleware02:15
lifelessjames_w: pastebin ?02:15
james_wapparently when it said I might have misspelled a dependency, it really meant that it couldn't install from the cache because the cache is currently empty02:15
lifelessjames_w: you're using the LP cache, right ?02:15
jameshon the other hand, if I could just get/create an OOPS ID in the existing error page code, that would be a much smaller change02:15
james_wlifeless, nope02:15
lifelessjames_w: use the LP cache02:15
jameshand I suspect other people trying to integrate python-oops would feel the same02:15
lifelessjamesh: these are not exclusive options02:15
jameshlifeless: I understand that.02:16
lifeless:)02:16
lifelessI think we should make it easy to get going02:16
jameshI'm just thinking out loud about why I might pick one option over the other02:16
lifelesswith better/more organised stuff being something you can grow into02:16
lifelessjamesh: I'm glad you are doing so :) I was just adding commentary02:16
lifelessmy cat wants to eat my galaxy tab02:19
lifelessits a little disconcerting02:20
james_wlifeless, https://code.launchpad.net/~james-w/python-oops-wsgi/start_response-exc_info/+merge/9003102:31
lifelessjthanks; I have some feedback02:35
lifelessits a little more than trivial, or I'd just do it02:35
StevenKwgrant: Have you seen bug 921175?03:15
_mup_Bug #921175: Bug overview page tag links are not properly escaped, thus made useless <404> <bugtag> <tales> <Launchpad itself:Triaged> < https://launchpad.net/bugs/921175 >03:15
StevenKAnd no, it's not a dupe. :-(03:16
wgrantI have indeed.03:17
wgrantlifeless: How should I do the case-insensitivity in python-oops-tools?03:17
wgrantThere's no iin :)03:17
wgrantAnd I don't seem to be able to lower() or upper() it first.03:17
lifelesswgrant: this is the db query ?03:18
wgrantyes.03:18
wgrant            to_delete = set(Oops.objects.filter(03:18
StevenKI don't want to perform the same fix in the same way within a few days. :-(03:18
wgrant                date__gte=prune_from, date__lte=prune_until).exclude(03:18
wgrant                    oopsid__in=references)[:10000])03:18
lifelesswgrant: I'm curious what is mangling the case in the first place; is it just fimble-fingered copy-pastes ?03:18
wgrantlifeless: Hmm?03:18
wgrantlifeless: Your LP API upper()s them before they're returned.03:18
lifelesswgrant: it does? Ok, so I am stupid.03:18
lifelessI have -no- idea what I was thinking.03:19
lifelessjust checking the schema03:19
wgrantoops-tools was already upper()ing them in parts.03:20
StevenKwgrant: So I guess I write a IBugTag and then a tales adapter?03:20
lifelesswgrant: that was eliminated a while ago03:20
wgrantStevenK: No. There's no sensible way to do a fmt:url here.03:20
lifelesswgrant: it does that on input only, for old-style oopses03:21
lifelesswgrant: the db is case sensitive, and indexed case sensitively03:21
wgrantlifeless: Ah, right, I remember that now.03:21
lifelesswgrant: I'd fix the API TBH03:21
wgrantI only didn't fix it because I presumed you had your reasons :)03:21
wgrantI'll not land the datedir-repo fix, then.03:21
* lifeless is apparently a camel toenail smoking crackhead03:22
wgrantJust cowboy it and prune to get us out of immediate peril..03:22
wgrantAnd fix the API this afternoon :)03:22
StevenKwgrant: There isn't? We can create an object with the context and the tag and we can construct an URL quite easily?03:22
lifelesswhich is another way to say I have -no- idea why I did that. Probably to make some test pass or something03:22
wgrantStevenK: FSPOEVO "quite easily"03:22
StevenKwgrant: It's the same code as the view uses? canonical_url() + urllib.quote() ?03:25
wgrantPOE == Probably Over-Engineered03:25
wgrantIntroducing a new content class and interface for this seems like utter overkill.03:26
wgrantParticularly since it's just a special case of a search.03:26
lifelesswhat I don't understand03:26
lifelessis how the tags are getting into the template without escaping03:27
lifelessare we manually rendering the links?03:27
wgrantlifeless: They're (HT|X)ML-escaped.03:27
wgrantThey're not URL-escaped.03:27
lifelessah03:27
lifelessfairy nuff03:27
wgrantPeople don't understand escaping :(03:27
lifelesswell03:28
lifelessdoesn't help that two different escape rules are needed03:28
lifelessbecause two different bodies created the dsl's for presentation and linking03:28
wgrantWell, our code shouldn't lead us to sin.03:28
wgrantWe shouldn't have to think about escaping :)03:29
wgrantAnyway.03:29
wgrantTime to prune 70GB of OOPSes.03:29
wgrantforrealz03:29
StevenKwgrant: I'm just unhappy that I you're suggesting I propagate my horrible python:tag[x] madness from the last fix.03:30
wgrantStevenK: You could do it in the view if you want.03:31
wgrantAnd for this you will probably have to.03:31
wgrantBecause of mustache.03:31
StevenKwgrant: And then use structure and you'll probably kill me03:31
wgrantBut introducing 100 lines of code where three will do is silly.03:31
wgrantNo structure.03:31
StevenKTBH, I've not looked at the the view or mustache template03:32
lifelessmoustache renders on the client side03:32
lifelessso you'll have to fix the data dict it renders from (or the moustache template itself)03:32
lifelessit also renders server side :)03:32
=== StevenK changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: StevenK | Firefighting: - | Critical bugtasks: 3*10^2
wgrantYay03:34
wgrant360 criticals03:34
wgrantWe can round up!03:34
=== lifeless changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: StevenK | Firefighting: - | Critical bugtasks: 4*10^2
nigelb:|03:38
nigelbwhat's wrong with 3*10^2+6003:38
wgrantom nom nom oopses03:39
lifelessnigelb: future proofing03:43
StevenK /wrists03:44
StevenKnigelb: 3.6*10^2, ITYM?03:45
nigelbooh. that wworks too!03:46
StevenKnigelb: Haha. Haddin comes out and hits a six for his first shot03:47
nigelbStevenK: For a guy who doesn't like cricket, you sure watch lot of it...03:47
StevenKAustralia is win, incredibly comfortably, so I like it.03:48
StevenKs/win/winning/03:48
nigelbhaha, troll!03:49
nigelbStevenK: out! :D03:51
StevenKYes, bah.03:51
nigelbI like how that happened just after you trolled :D03:51
* StevenK sends Ponting a cranky e-mail03:52
* StevenK tries to work out *HTF* this mustache template is populated.03:55
mwhudsonaustralia are practically collapsing now03:56
nigelbStevenK jinxed it!03:56
StevenKmwhudson: And you love it03:56
mwhudsonheh well03:56
mwhudsonthis series is not especially interesting any more03:57
StevenKmwhudson: So tell me, do you go for NZ as well, or just whoever is playing Australia?03:57
nigelblol03:57
nigelbI'm going to save these logs to show back to StevenK when he says he doesn't like cricket the next time03:57
StevenKnigelb: I can't just sit and watch a full test match, because I *will* go mad. But I can wonder past and see what the score is every 15-20 or so03:59
nigelbI can't watch a full test match ever.03:59
nigelbMy roommates can watch a full test match and the highlights :/03:59
nigelbs/can/will/g03:59
StevenKHaha04:00
StevenKnigelb: TBH, this isn't so much a test match as a routing04:00
nigelbHah.04:01
nigelbwe need #ubuntu-cricket :D04:01
wgrantStevenK, lifeless: https://code.launchpad.net/~wgrant/launchpad/bug-911520/+merge/9004004:15
StevenKwgrant: r=me, but no fair including my complaints in it04:18
wgrantBah, I missed one.04:18
wgrantI removed a couple of irrelevant lines.04:18
wallyworldStevenK: In Python 2.6, round(0.29999999, 5) = 0.29999    whereas it works in Python 2.7 ie gives 0.3 :-(04:20
StevenKBwaha04:20
wallyworldso i'm commenting a line of a doc test so that use-convoy can lp-land04:21
wallyworldthat was the only ec2 land failure04:21
StevenKDon't bother04:22
wgrantwallyworld: that's a new test?04:23
wallyworldwgrant: nope.  that's why i'm very confused. lib/lp/app/widgets/doc/location-widget.txt04:23
wallyworldwe didn't touch that file04:23
wallyworldapart from trying to get it to pass testing04:24
wgrantDon't randomly comment out bits of tests because you don't understand why they're broken :)04:24
wallyworldvery strange04:24
wgrantIt will fail on your machine.04:24
wgrantBut should pass on ec2.04:24
wallyworldnope. fails on ec2, passes locally04:24
wallyworldand it's a one line, meaningless test04:24
wallyworldwe need to get this landed04:24
wallyworldwill fix after04:24
wgrantCan you pastebin the failure?04:25
wgrantI have a change in my 2.7-fixes-0 branch to fix that very test.04:25
wgrantBut we need to work out why it's failing for you.04:26
wallyworldhttps://pastebin.canonical.com/58721/04:26
wallyworldit works for me04:26
wallyworldit doesn't work for ec204:26
wallyworldalso works for rick04:26
wgrantConfused04:26
wgrantThat test does not match devel04:26
wgrant    >>> widget.center_lng04:26
wgrant    0.29...04:26
wgrantThat's devel.04:26
wgrantSo you have changed the file, to something that only works in 2.7.04:27
wallyworldyes, and it failed the first time because it wanted 0.304:27
wgrantIt didn't :)04:27
wgrantIt only does that on 2.704:27
wgrantWhich ec2 is not yet.04:27
wallyworldwe only changed it because ec2 complained from memory, but not sure now04:27
wallyworldbut round(0.299999) should always give 0.3 ffs04:28
wallyworldregardless of pythin version04:28
wgrantround returns a float, not a str04:29
wallyworldwhich should print sensibly you would think04:29
wgrantfloats are a little more complicated than that :)04:30
wallyworldsure, but a rounded value should print out as expected04:30
wallyworldi'm not sure what rick is running, 2.6 or 2.704:31
wgrantwallyworld: What does rounding mean for an IEEE754 number?04:33
wgrantIt's a float, not a decimal.04:33
wgrantYou'd have to somehow work out the shortest sequence of digits that lossily evaluates to the same thing.04:34
wgrantWhich I guess must be what 2.7 does.04:34
wgrantBut that has little to do with rounding.04:34
wallyworldguess so. but i'm still surprised given the low percison it is being rounded to that it doesn't work as expected04:35
wallyworldwe still have more cleanup to do, so we'll fix it as part of that. it's one line of a test for a very peripheral feature04:35
wgranthttp://bugs.python.org/issue158004:39
wallyworldseems like a right royal mess04:41
* StevenK grumbles at the RMS04:41
StevenK(New name for the RTA)04:41
wgrantNon-base-10 floats are, yes.04:41
wallyworldStevenK: can you land ~wallyworld/launchpad/use-convoy for me? pqm-submit doesn't work either :-(04:42
StevenKwallyworld: What's the error?04:43
wallyworldsame thing as with lp-land04:43
wallyworldmissing get function04:43
StevenKDidn't the update of bzr-pqm fix it?04:44
wallyworldi had thought so, but then i apt updated. and it seems broken again. but not sure. let me check04:45
StevenKwallyworld: Are you right for me to land this?04:47
wallyworldStevenK: just updated my .bazaar/plugins/pgm checkout and there was one update but it's still broken04:47
wallyworldStevenK: yes please04:47
* StevenK sighs at lp-land and branches it locally04:48
wallyworlddon't forget to edit the commit message to remove the duplicated tags04:49
wallyworldthat lp-land puts there04:49
StevenKYes, thanks, I've used it before.04:50
wallyworldsorry, didn't mean to tell you to suck eggs04:51
StevenKMy tree is WADLing04:52
wallyworldStevenK: this branch includes a make switch to disable the WADL stuff04:54
StevenKYes, I know that too. I've read the entire MP.04:55
wallyworldok, i'll shutup now04:56
StevenKI don't believe that. :-P04:56
wallyworldwell, stranger things have happened04:57
StevenKwallyworld: Merged.04:57
StevenKwallyworld: Did you want the PQM message?04:57
wallyworld\o/ thanks :-)04:57
wallyworldnah04:58
nigelboh, one of those days when I wwant to have a bash.org like site for LP.04:58
StevenKr14722 for reference04:58
wallyworldStevenK: thanks. just in time for bb too :-)04:58
StevenKWhat? Oh crap04:59
wallyworlduh oh04:59
wallyworld?04:59
StevenKOh well, WCPGW04:59
wallyworldyou mean with buildbot?05:00
nigelbStevenK: Famous last words.05:00
StevenKwallyworld: I mean if it fails buildbot, it gets reverted05:00
StevenKnigelb: Yes, that's why I said them05:00
wallyworldlet's hope the bb updates worked then i guess05:00
nigelbStevenK: Also, "lets see what this button does"05:00
StevenKIt makes the Indian cricket team lose every mat.... OH.05:01
nigelbdammit.05:01
wallyworldStevenK:  at least it will fail during make so we'll know soon enough05:01
StevenKDamn it, laughing a lot sends me into a coughing fit05:02
* wallyworld goes to get the kid from school and hopes bb is still green when he gets back05:02
* StevenK can't work out how this mustache template is populated05:02
wgrantStevenK: Find both things that render it and see where they get their data? :)05:07
StevenKwgrant: I just found it05:07
StevenK-            'tags': [{'url': base_tag_url + tag, 'tag': tag}05:07
StevenK+            'tags': [{'url': base_tag_url + urllib.quote(tag), 'tag': tag}05:07
wgrantRight.05:08
* StevenK stabs the messaging indicator more05:16
wgrantEwww05:18
wgrantlp.mustache05:18
wgrantIs there not a way to do that that isn't a crime against humanity?05:18
StevenKI already asked05:20
StevenKBut yes, it's incredibly disgusting05:20
wgrantwallyworld: Some bits use YUI.add, some YUI().add. Why?05:20
StevenKSigh. Python needs Data::Dumper05:25
StevenKAnd no, pprint doesn't count, it's utterly poor in comparsion.05:25
StevenKwgrant: https://code.launchpad.net/~stevenk/launchpad/link-bug-tags-correctly-redux/+merge/9004405:39
wgrantStevenK: Done05:40
StevenKwgrant: Thanks05:40
wallyworldwgrant: they are not supposed to use different forms. i thought i had found and fixed them all06:34
wallyworldthe codebase was a bit of a consistency mess06:34
wgrantHeh, yes.06:35
wgrantIt's certainly no worse than it was.06:35
wgrantI just hoped it would make it perfect :)06:35
wallyworldit will be. i'm pissed that i missed some06:35
wallyworldi'll let rick know and he can clean up during his day06:35
wgrantThat's nice of you :P06:36
wallyworldwell, we want it done asap :-)06:36
wallyworldand he's working on the next steps06:36
wallyworldso it won't be much to fix06:36
wallyworldif he can't then i will for sure06:36
wgrantYup06:37
wallyworldat least buildbot is running the tests, so that's one hurdle overcome06:39
wallyworldmeaning the bb update worked :-)06:39
stubI'm adding Lucid PG 9.1 to the PPA and will be adding PG 9.1 to the database-deps07:53
wgrantstub: Slony likes it now?07:58
wgrantI'm not sure we can sensibly upgrade until we acquire more CPUs :/07:59
stubGood enough to get started - fixes are in, might need to upgrade our slony if we see the 9.1 issues07:59
stubWhy do we need more CPUs?07:59
wgrantstub: Unless we want to do an in-place upgrade on wildcherry, we'd have to switch the master for a day.08:02
stubYes. I'm investigating inplace. Looks fine except for plpython stored procedures, so I need to investigate if the workarounds are sane.08:03
wgrantSeems a bit sad to do that.08:03
wgrantBut I guess.08:03
stub(perhaps waiting for PG to fix the plpython pg_upgrade bug is best - discussions ramping up again after the break)08:03
stubThe work around is creating a symlink. I need to determine if that is going to break future inplace upgrades08:04
stubIn place isn't sad - looks like minutes, but of course will need to confirm timings on staging once I've got the glitches ironed out08:05
wgrantWell, we would presumably miss out on some of the improvements on unrebuilt DBs.08:07
stubBut before we go upgrading production and staging, we need the test suite passing08:07
wgrantBah.08:07
wgrantWhere's the fun in that.08:07
stubYes, bloated would remain bloated.08:07
wgrantIs there anything much apart from the string escaping thing?08:07
stubSome minor work in database/schema so far, nothing unexpected. I want to get ec2 able to run the test suite since I can't be arsed running the full test suite locally.08:08
stublp:~stub/launchpad/postgresql-9.108:09
wgrantAh, not too bad.08:11
=== jtv is now known as jtv-eat
=== jtv-eat is now known as jtv
adeuringgood morning09:02
lifelesswgrant: we don't have capacity to switch masters atm09:27
=== almaisan-away is now known as al-maisan
wgrantlifeless: That was why I asserted that we couldn't sensibly upgrade until we acquired more CPUs.09:39
wgrantI guess we need to get used to in-place upgrades if we're going to drop slony at some point.09:40
wallyworldrick_h: you thre yet?10:18
=== mpt_ is now known as mpt
rick_hwallyworld: what's up?11:23
wallyworldrick_h: THE branch is almost through buildbot :-D11:23
rick_hyay11:23
wallyworldi missed a couple of places where it used YUI().add instead of YUI.add11:24
rick_hthat's ok, YUI().add should be safe11:24
wallyworldyeah, but it would be cool to clean up11:24
rick_hk11:24
wallyworldalso, i had to disable a test11:24
wallyworldyou know that location-widget.txt test where round() was used?11:24
rick_hok, which test and I'll go back at it11:24
rick_hyea11:25
wallyworldwell, round() is broken on 2.611:25
wallyworldbut it works in 2.711:25
rick_hlol, but of course it is. hmmm, I ran it in 2.6 and it passed?11:25
wallyworldthat's what i thought. but i tried it in 2.6 and it failed, as did ec211:25
rick_hoh, no guess I'm on 2.711:25
rick_hsorry, don't even know which python version I'm on11:25
wallyworldso, i commented that line of the doc test11:25
rick_hok11:26
wallyworldand we will be on 2.7 soon11:26
wallyworldi fell dirty doing that but we needed to land this thing11:26
rick_hrgr11:26
wallyworldwould be nice to fix in 2.6 if we could do so feasibly11:26
rick_hsomething is up with that test anyway, forever and ever it's just always spit out perfect 3.0 and suddenly it's doing 2.999999 consistantly? strange11:26
wallyworldyeah11:27
rick_hyea, I can look at what with round is broken and a different way to do it11:27
wallyworldthe pressure will be off a bit IF this passes qastaging once bb has finished with it :-)11:27
=== al-maisan is now known as almaisan-away
rick_hyea, will be nice11:27
wallyworldhow long do you think we will need to get the final convoy stuff sorted?11:28
rick_hit's actually fine11:28
rick_hconvoy dev reviewed it yesterday and I fixed (added a test) and resubmitted for review11:28
rick_hI'd feel comfy using that brach for our own ppa11:28
wallyworldso it's just the deployment coordination that needs doing11:28
rick_hso we can do that any time, just have to change to their upstream once they merge it in11:29
wallyworldi mean getting prod systems all set up11:29
rick_hright11:29
rick_hI'm sure we can get our hands held through that processes without too much trouble11:30
wallyworldwe should send an email to dev and ask a few suckers ^H^H^H^H^H^H guinea pigs to try it11:30
rick_hyep, I've got a couple of people actually from my ubuntu loco ready11:30
wallyworldcool11:30
rick_hand jcastro has suckered me into enough stuff I can try to get him as well. He owes me and should be in lots of places of LP I don't go every day11:30
wallyworldok. i think the intent is to turn on the ff on prod for at least ~launchpad11:31
wallyworldinitially11:31
StevenKSo we need the MP merged in, a new release -- if upstream actually make a tarball, that would be awesome.11:31
rick_hStevenK: yea, I submitted my changes back after their review like 1hr later11:32
wallyworldyeah :-)11:32
rick_hso hopefully they're looking at it soon11:32
StevenKThen we need to work out the deployment strategy -- I think I understand that11:32
wallyworldi think we will need about a week for that?11:32
rick_hStevenK: but at the end of the day, he only wanted an extra test so no complaints from the changes themselves11:32
wallyworldto get everything done11:32
StevenKrick_h: Sure, but it was still marked Needs Fixing11:32
rick_his it? I marked it back to needs review yesterday?11:32
StevenKrick_h: His vote was Needs Fixing, I mean11:33
StevenKWhat I'm not clear about is how to set the convoy root url in the code11:33
StevenK/+combo/r..../?...11:33
rick_hStevenK: ah right11:33
StevenKrick_h: wallyworld and I are off tomorrow11:33
rick_hStevenK: right, so my understanding is that the .wsgi file will set a combo root of /var/tmp/convoy and our application code (LP) will set the root to /+combo/$revno11:34
StevenKrick_h: So you have today and tomorrow to beat sidnei with a stick.11:34
StevenKrick_h: On qas and prod, it probably won't be /var/tmp/convoy, but sure.11:34
rick_hso on disk will be /var/tmp/convoy/rev12345 and /var/tmp/convoy/rev1234611:34
rick_hok, well whatever that dir is, but that's my understanding of how that works out atm11:35
StevenKrick_h: The disk stuff I'm fine with -- that's the easy bit.11:35
StevenKWhat I'm not clear about is the *code*.11:35
rick_hwhat part weren't you sure about then?11:35
rick_hso the code is in the YUI.GlobalConfig that the base and the combo roots are '/+combo/rev12345'11:35
rick_hwith a prefix of yui or lp based on the group11:35
wgrantrick_h: round() returns a float.11:36
wgrantIt's not broken.11:36
wgrantIt's just impossible to represent most decimal fractions as non-decimal floating point formats :)11:36
rick_hwgrant: right, that's cool. expected even.11:36
StevenKOh, we have a TAL define for revno11:36
rick_hStevenK: right11:36
wallyworldi've never had an issue like this in Java for example11:36
wgrantwallyworld: You probably don't use doctests in Java :)11:37
StevenKrick_h: Right. So we add a combo_url of string:/+combo/r${revno};11:37
wallyworldyes, but i print stuff out11:37
wgrantIt's still == 0.311:37
rick_hStevenK: exactly11:37
* StevenK is no longer concerned11:37
rick_hthat's ok, one day I'm going to be at pycon with the guy that invented doctests and he's going to miss the rest of the conference because I've locked him in a closet with a handful of saltines11:38
wgrantwallyworld: And whatever method you use to print probably performs rounding.11:38
StevenKrick_h: BWAHAHA11:38
wgrantwallyworld: Whereas here in the doctest we're just using __str__/__repr__, which need to return something that is equal.11:38
wgrantNot just vaguely correct.11:38
cjwatsonhmm.  last night's generate-contents-files run:11:38
cjwatson2012-01-25 07:05:13 DEBUG   Installing new Contents file for precise/amd64.11:38
cjwatson2012-01-25 07:05:17 DEBUG   Installing new Contents file for precise/armel.11:38
cjwatson2012-01-25 07:05:20 DEBUG   Installing new Contents file for precise/armhf.11:38
cjwatson2012-01-25 07:05:23 DEBUG   Installing new Contents file for precise/i386.11:38
cjwatson2012-01-25 07:05:26 DEBUG   Installing new Contents file for precise/powerpc.11:39
cjwatsonbut the versions in dists/ are dated 2012-01-24.11:39
wgrantIt probably raced.11:39
wallyworldwgrant: sure, but that web page you pasted earlier talks about how the algorithm for strigification needs improving11:39
wallyworldStevenK: are we going to upgrade the apache wsgi lib from suggests to depends?11:39
wgrantwallyworld: Well, FSVO "needs"11:39
wallyworld:-)11:40
StevenKrick_h: Is there a flag in your convoy MP to turn on the dir walking stuff?11:40
StevenKwallyworld: My jury is still out.11:40
rick_hStevenK: no, not a flag. It *just works*11:40
cjwatsonhmm, yes, 07:05 is just after the start of a publish-ftpmaster run.11:40
StevenKrick_h: Fair enough11:40
rick_hif the extra bits are in the url it routes, if the url only has a /convoy then it doesn't11:41
wgrant2012-01-25 07:03:05 INFO    Creating lockfile: /var/lock/launchpad-publisher.lock11:41
wgrantcjwatson: ^^ from publish-ftpmaster.log11:41
wgrantcjwatson: Is the extra arch making g-c-f take too long?11:41
StevenKrick_h: Then beat sidnei with a stick, get his +1 and get him to land it.11:41
wallyworldStevenK: ok. i'm just asking because it will affect the "how to" instructions11:41
rick_hwill try11:41
StevenKwallyworld: Sure.11:42
* rick_h goes to look up what TZ he's in11:42
cjwatsonIt takes three hours.  It's probably dumb luck whether it happens to run when publish-ftpmaster is running.11:42
cjwatsonNow that we're on half-hour publishing I guess the odds have got worse.11:42
cjwatsonMaybe it should copy into dists.new if it exists.11:42
wgrantcjwatson: The publisher deliberately skipped an hour a day for this reason.11:42
wgrantDoes it not still?11:42
cjwatsonIt doesn't, but in any case it would have to skip rather a lot ...11:43
gmbHas anyone seen this before when trying to pull devel? https://pastebin.canonical.com/58731/11:53
gmbI can't tell if it's a codehosting problem or a local bzr problem.11:53
wallyworldrick_h: buildbot just completed, branch should be on qastaging in around 45 minutes or maybe a bit sooner11:55
gmbOh, it's a "I don't get prompted for my SSH key" problem.11:55
gmbWeird.11:55
StevenKWe need the new convoy, and we need to change the base template before we can think about talking to a webop to configure qas/staging12:02
wallyworldyes12:04
wgrantgmb: See #-ops12:05
=== StevenK changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugtasks: 4*10^2
StevenKrick_h: https://code.launchpad.net/~stevenk/launchpad/combo-url/+merge/9009312:26
rick_hwallyworld: awesome12:30
rick_hStevenK: looks good to me. I'd approve but I'm in mentor mode anyway so someone would have to second it12:31
StevenKrick_h: It even works, so you can +1 if you wish12:32
rick_hStevenK: ok, made my comment and marked it as needs review ok?12:33
wallyworldStevenK: how does it work in dev mode where revno is "unknown"?12:34
rick_hhah, wallyworld for the block. Yea, because in dev mode the path is /var/tmp/convoy and the revno will need to be empty/non-existant12:35
StevenKwallyworld: In make run, the revno is expanded out, but the current convoy ignores the path12:36
wallyworldyes, but when we upgrade it will break, no?12:36
StevenKWhen we upgrade it, combo-rootdir will change12:36
StevenKSo this can land now, and will not need to change.12:37
rick_hStevenK: but if you have make run, and then you make some changes/commit12:37
rick_hwill the revno get incremented?12:37
rick_hI'm not seeing how that'll be easy to manage12:37
wallyworldrick_h: in dev mode, revno is always "unknown" IIRC12:37
StevenKThen the new rootdir will be populated12:37
StevenKwallyworld: It is not12:37
wallyworldi could have sworn it displayed as such on lp.dev12:38
wallyworldor something similar12:38
rick_hStevenK: ok, well we'll need to test/verify that 100% and figure that out to go with that MP change12:38
StevenKI did test it12:38
rick_hStevenK: with the new convoy branch?12:39
rick_hbecause the current convoy doesn't care about anything in the url, while the new one will end up with missing files if the path isn't right12:39
StevenKrick_h: Right, which is why it's okay to land now.12:39
rick_hright, I'm just saying that I want to make sure we don't *forget* that there's a future breakage there12:40
rick_hand we'll want to think ahead a step and have a plan for getting it to work12:40
StevenKAfter we switch to new convoy, combo-rootdir will change to populate into CONVOYROOT/rev<revno>12:40
rick_hStevenK: right, but I'm not sure that'll work out in real development12:40
StevenKIt sounds okay to me12:41
StevenKrick_h: But we can kick that around when the new convoy turns up12:47
deryckMorning, all.14:09
deryckbigjools, ping14:53
bigjoolsderyck: o/14:57
mabacstub, I'm about to propose a patch for the launchpad db schema and would like to ask you about the table permissions. Should I make up a name for a script user and put that in the security.cfg? I notice that there was en email thread about perhaps not having per script table permissions. Did anything happen with that?15:05
stubmabac: Every script or process needs to use a unique database user defined in security.cfg. This is unrelated to creating new tables.15:07
=== mpt_ is now known as mpt
stubmabac: If you create a new table, the security.py script will complain if nothing has permissions to it so you will need to add something to security.cfg (even if it is just adding an entry to the [public] section stating nobody has access).15:08
stubmabac: Assuming you are going to be creating a new table and a new script, you are probably best adding the new database user with permissions in the same branch as your db patch.15:08
mabacstub, aha, I was wondering how to add the new user. thanks, I'll dig for that15:09
mabacstub, and yes, we'll be adding new tables and new scripts15:09
stubmabac: We still have per script table permissions, but feel free to inherit permissions from elsewhere to make life easier. Not the 'write' group though, as that is a real mess.15:09
stubmabac: I'm trying to find a middle road between annoyed developers and throwing out all access controls15:10
* jelmer wonders if it's a coincidence that the lp branch scanner doesn't scan anything beyond revision 99999 in lp:~vcs-import/chromium-browser/trunk15:10
mabacstub, :) that's not trivial, I get that.15:11
mabacstub, so to inherit permissions, I just make the new user part of a suitable group?15:11
stubmabac: If your scripts are related, they each will need a unique user. They all might be clones of each other though, all inheriting their permissions from one place.15:12
stubmabac: Yes, exactly.15:12
stubmabac: user and group is interchangeable - the terminology dates from when they were separate in PostgreSQL. Now there are just roles so you should be able to have a group inheriting from a user and vice versa.15:12
mabacstub, cool, I didn't know that. thanks. I'll give it a go and let you know when I have something for you to review15:13
stubmabac: np. let me know if you need a hand, here or email or whatever.15:14
mabacstub, I'll certainly let you know15:16
mabacstub, thanks!15:16
mabacls15:23
mabacoops15:23
=== matsubara is now known as matsubara-lunch
=== abentley changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: abentley | Firefighting: - | Critical bugtasks: 4*10^2
=== jml is now known as jml`
=== jml` is now known as jml
=== kornbluth.freenode.net changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugtasks: 4*10^2
=== bdmurray_ is now known as bdmurray
=== mabac is now known as Guest83705
abentleysinzui: I would like to stop using the fictional "application/text" content type for downloading the CoC, and instead use "text/plain".  Is this a good idea, or the greatest idea ever?16:08
=== Guest83705 is now known as mabac_
sinzuiabentley, I think the issue is that users are exceedingly adept at copy and paste errors. I think the hack is to ensure that the user gets an untampered file.16:09
abentleysinzui: The content-disposition field should ensure the users save the file.16:10
sinzuiabentley, This is only half the problem. These same users still paste a tampered signature into the forms and Lp tells them to go jump in lake of jello16:10
sinzuiabentley, Then you have the greatest idea ever16:10
abentleysinzui: Okay.  I will verify that users are prompted to download in Firefox, Chromium and Opera.16:11
abentleysinzui: Prompted to save, rather.16:11
sinzuifab16:12
mabac_stub, do you think something like this looks acceptable? http://bazaar.launchpad.net/~mabac/launchpad/workitems-schema-changes/revision/1132216:13
mabac_salgado, ^^^ I'm not sure what scripts we will have to add, trying to create something to start from16:14
salgadoI think we'll only need the one to maintain specificationworkitemstats, no?16:15
stubmabac_: That is fine.  As these are scripts, you will also need to inherit from the 'scripts' group at a minimum so it has permission to update the script activity table.16:17
mabac_salgado, that's what I think too. just my cautious nature, expecting more unexpected things ;)16:17
mabac_stub, aha I missed that. thanks.16:20
mabac_stub, and for read access from lp code, I can just add SELECTs to the public section, right?16:20
stubmabac_: For the appserver, add it to the [launchpad_main] section16:22
=== Ursinha` is now known as Ursinha
stubmabac_: It is truely needed to be read by everything, public would be appropriate but I don't think we have any tables in that state apart from featureflag16:22
mabac_stub, yes, this is nothing special in that respect.16:23
=== mpt_ is now known as mpt
=== SpamapS_ is now known as SpamapS
=== james_w` is now known as james_w
=== deryck is now known as deryck[lunch]
=== matsubara-lunch is now known as matsubara
=== beuno_ is now known as beuno
=== deryck[lunch] is now known as deryck
=== mpt_ is now known as mpt
=== abentley changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: abentley | Firefighting: - | Critical bugtasks: 4*10^2
=== micahg_ is now known as micahg
=== _thumper_ is now known as thumper
lifeless.20:41
=== salgado is now known as salgado-afk
=== kirkland` is now known as kirkland
lifelessjames_w: are you using the django ORM ?22:18
james_wlifeless, yes22:21
lifelessjames_w: you might like to do a oops-django package providing django ORM integration for oops.22:26
james_wyes22:26
lifelessjames_w: erm, rather timeline-django is what I menat.22:26
james_win this case we don't really care22:26
lifeless(oops-timeline already exists, so timeline-django is the right join)22:26
james_wgive jml a few more days and he's likely to rip the db out of this project22:26
james_wbut it would be nice to have anyway22:26
lifelessheh22:26
lifelesswhat will you be using for persistence?22:28
james_wnothing22:28
james_wthis project as it stands doesn't need it22:29
lifelessI'm intruiged22:29
james_wit's a webhooks-based interface to celery (rabbit) bascially22:29
james_win fact we'd probably have been better off with just celery22:29
lifelessoh, interesting22:30
lifelessyou know about txlongpoll right ?22:30
james_wso there's persistence in rabbit for the lifetime of the job, and there's persistence in the other service22:30
lifeless(long poll interface to rabbit)22:30
james_wI've heard of it22:30
james_wI'd like to discuss if it's a good fit, but I've got to dash now22:30
lifelessciao22:31
lifelessping me whenever, or drop me a mail22:31
james_wok22:31
wallyworld__sinzui: was that a typo in the team lead notes?23:23
sinzuiwallyworld__, about wgrant?23:24
wallyworld__sinzui: the test suite running in *8* seconds?23:24
sinzuiwallyworld__, not lp's testsuite23:24
sinzuiwallyworld__, MaaS23:24
wallyworld__right, makes more sense now23:24
sinzuiI countered with GDP's testsuite now runs in half the time, 1 second23:25
wallyworld__i was thinking maybe a few 000's were left off23:25
* wallyworld__ wonders if qastaging is broken - it's been down a while23:33
wgrantrm: cannot remove `/var/tmp/convoy/yui2/event/event.js': Permission denied23:33
wgrantSo, yes.23:33
wgrantqastaging is quite broken :)23:33
wgrantwallyworld__: ^^23:33
wgrantwallyworld__: Also, aren't you not here today?23:33
wallyworld__wgrant: neither are you :-)23:34
wgrantYeah, but I had to check that oops-prune finished :)23:35
wallyworld__hmmm. not sure of the reason for that error off thr top of my head23:35
wgrantWhy is it trying to touch /var/tmp?23:36
wgrantOn prodish?23:36
wallyworld__/var/tmp is where convoy looks to load yui from23:36
wallyworld__like how we use /var/tmp/bazaar etc23:37
wgrantYes, but not outside dev.23:37
wgrant/var/tmp is not used on anything vaguely productionish.23:37
wallyworld__let me check something23:38
wallyworld__wgrant: so there's a CONVOY_ROOT var that needs to be set up23:39
wgranto_O23:39
wallyworld__it's set in the Makefile to /var/tmp/convoy23:39
wgrantIs there precedent for that?23:39
wallyworld__yes, CODEHOSTING_ROOT23:40
wallyworld__also set in the Makefile23:40
wgrantThat's not precedent.23:40
wgrantThat's only used in dev targets.23:40
wgrantIt looks like we now have to set this variable on every machine.23:41
wgrantWhich is a bit silly.23:41
wallyworld__yes, it should be in .conf somewhere23:41
wgrantAnyway, seems like we need to revert it, or check if LPCONFIG=development, or something like that.23:42
wallyworld__if it is in .conf, can the Makefile get access to that setting?23:42
wgrantOr split it into a target that isn't jsbuild.23:43
wallyworld__can we get it going without reverting23:43
wgrantI don't know. How do we get it going?23:43
wallyworld__if it's "just" a setting that can be tweaked23:43
wgrantWhat is the desired end goal?23:43
wallyworld__to have the combo loader root set to something that works ie not /var/tmp/convoy if that doesn't work23:44
wgrantIsn't the real goal at present probably to have it not built at all?23:44
wgrantSince we're some way from using it.23:44
wgrantAnd don't have deployment sorted out yet.23:44
wallyworld__yes, but we want to use it locally, so need a way to have it built23:45
wallyworld__we could also use a flag23:45
kirklandwgrant: so back to https://bugs.launchpad.net/bugs/91924123:45
_mup_Bug #919241: Sources published in a private ppa are downloadable by any subscriber <Launchpad itself:Triaged> < https://launchpad.net/bugs/919241 >23:45
wgrantSure, but until it's finalised you can use a separate Makefile target, or an envvar to enable it.23:45
wallyworld__yes, that would work23:46
kirklandwgrant: what about dropping a 2-line .htaccess rule in the PPA's pool/.htaccess that 403 denies *.gz?23:46
kirklandwgrant: ie:23:46
kirklandRewriteEngine On23:46
kirklandRewriteRule .*\.gz$ - [F,L]23:46
kirklandwgrant: this isn't something i need all the time, so I could just ask the LOSA to turn that on when s/he sets up my private PPA23:46
kirklandwgrant: and profit!23:47
wgrantkirkland: That would break builds.23:47
wgrantAnd they could still be downloaded through the web UI.23:47
kirklandwgrant: builds do wgets?23:47
wgrantThey get the private sources from ppa.launchpad.net, yes.23:47
kirklandwgrant: hmm, seems like that could be further handled through another rule that whitelists the build requests23:49
wgrantkirkland: But the builders are untrusted :)23:49
wgrantUnless we restrict it to the buildd user.23:49
wgrantWhich could work.23:49
wgrantBut we'd still have to fix permissions in the app.23:50
wgrantSince they were inappropriately loosed just before I joined.23:50
wgrantloosened.23:50
kirklandwgrant: so this issues is really, really causing major headaches as to how we're trying to use commercial launchpad ppas23:50
kirklandwgrant: it seems so simple to me on the outside23:50
wgrantEverything seems simple from the outside :)23:51
kirklandwgrant: though I appreciate that there's complexity i don't understand23:52
kirklandwgrant: from my PoV, just deny public (outside) downloads of .tar.gz, one way or another23:52
wgrantSure, but there are at least two ways that need to be stopped.23:52
wgrantAnd one of them is complex because the buildds use it.23:52
wgrantAnd we have to work out how it works with PPA dependencies etc.23:52
wallyworld__wgrant: the icing dir is set to lib/canonical/launchpad/icing. we could use perhaps lib/canonical/launchpad/convoy for now just to get make going ?23:55
wgrantwallyworld__: I'd prefer build/convoy or something like that.23:55
wgrantYou'll need to hack everything qastaging script to set it.23:55
wgrantAnd staging.23:56
wgrantAnd production.23:56
wgrantSo possibly unwise.23:56
wallyworld__if i understand correctly, it's just the make that is failing23:56
wgrantRight.23:56
wgrantBut most things will do a make.23:57
wallyworld__so we can cowboy the makefile?23:57
wgrantAnd this affects asuka/gandwana/tellurium23:57
wallyworld__to get it working23:57
wgrantAnd every production machine.23:57
wgrantWe don't want to unbreak qastaging, because then we'll deploy and fuck production :)23:57
wallyworld__or i can just lp-land a tweak23:57
wgrantI would lp-land a tweak to split it into a separate target for now.23:58
wgrantUntil you sort out how deployment will work.23:58
wallyworld__i'll come up with something just to get going and get you to +1.23:58
wgrantGreat.23:58
wgrantkirkland: So, I'm glad to see thsi being looked at, but it's not as easy as it seems.23:59
wgrantkirkland: And there may even be things I haven't thought of.23:59
wgrantkirkland: Because PPAs were not designed to do what you want.23:59
wgrantThey can be made to, and it's very doable, but it's by no means trivial.23:59

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