/srv/irclogs.ubuntu.com/2012/06/12/#launchpad-dev.txt

StevenKOMG, actual sun.01:20
nigelbheh01:22
nigelbI thought you guys had plenty of sun. oh wait, because winter?01:22
wgrantBecause winter and because Sydney.01:23
nigelbAh!01:23
StevenKnigelb: The suburb I live in got 90mm of rain yesterday.01:25
nigelbWoah.01:25
StevenKwgrant: We need at least two DB patches. We need to drop NOT NULL from private and transitively_private01:28
wgrantStevenK: False. They both have defaults.01:32
StevenKAh01:34
StevenKRight, so they get set to false irrespectively to information_type and they can just get dumped.01:35
wgrantStevenK: transitively_private default to true, but yes.01:36
wgrantStevenK: We can just stop setting them and they will default to relatively sensible things that nothing will see anyway.01:36
wgrantThen we can drop them.01:36
StevenKwgrant: You were talking about bug_build_access_cache in 16-0 that I should look at?02:02
wgrantStevenK: That sort of thing, yes.02:07
lifelesswgrant: ping (LEP, impl notes)03:32
lifelessugh03:37
lifelessthis post-merge-dif-nuking really is disruptive.03:37
lifelesshttps://code.launchpad.net/~lifeless/launchpad/memcache/+merge/10955103:37
StevenKlifeless: It doesn't even look like that branch has been scanned.04:32
lifelessindeed04:36
lifelesswedged-is-U04:36
lifelessS04:36
StevenKlifeless: bzr push -r -2 ...  ?04:39
StevenKlifeless: I approve of +49/-118204:50
StevenKwgrant: Am I on the right track? http://pastebin.ubuntu.com/1036633/05:00
lifelessStevenK: that thing is landed :>05:14
lifelessgaryposter: I have checkmarkified https://dev.launchpad.net/PolicyAndProcess/DatabaseSchemaChangesProcess#preview05:14
lifelessjml: I'd like to know if https://checkmarkable.com/team/sthederj/checklist/1263/view would have helped your confusion around db schema qa etc the other day.05:14
StevenKlifeless: Hmmm, memcache for garbo is useful. If we had some other way to record stuff between runs it could die a horrible death06:03
* StevenK stabs the branch scanner06:23
stubStevenK: Do you mean, like, some sort of persistent database?06:23
StevenKstub: Haha06:24
stubIts a pretty bad fit for garbo. If that is the last use of it, we should replace it with something suitable.06:24
stubKeep the IMemcache interface for lazyness06:24
StevenKstub: I think it's the last use.06:25
StevenKAnd only a few jobs use it06:25
StevenKOne job, in fact.06:25
stubAnd it could be replaced with sqlite easily enough or even something less like a hack06:25
StevenKwallyworld_: Do you have a sec to look over https://code.launchpad.net/~stevenk/launchpad/drop-set-spph-packageupload/+merge/109776 ?06:26
nigelbwoah, LP has a new intern?06:27
nigelbYou guys are going to break him, aren't you? ;-)06:27
wallyworld_StevenK: a sec yes, i'm about to go see aus vs japan :-)06:27
StevenKwallyworld_: It's +1/-133, so it should be very quick06:27
nigelbwallyworld_: rugby?06:27
StevenKSoccer06:27
StevenKWorld Cup06:27
nigelbwat.06:27
nigelbSoccer World Cup?06:28
wallyworld_nigelb: football06:28
nigelbo_O06:28
wallyworld_world cup qualifier06:28
nigelbaha06:28
nigelbthat makes better sense06:28
StevenKWe are going to lose horribly06:28
wallyworld_yep :-(06:28
nigelbI was following Eurocup and couldn't believe there was world cup going on.06:28
wallyworld_StevenK: r=me06:29
StevenKwallyworld_: Thanks. Go and enjoy the soccer.06:29
wallyworld_will do. hope we at least make a decent game of it06:30
lifelessStevenK: two jobs when I looked in trunk06:34
StevenKlifeless: Yup, I just removed one in the MP wallyworld_ reviewed.06:38
lifelessStevenK: ah, kk.06:46
lifelesswe could do a persistent transactional k:v store in the DB06:46
lifelessor we could grab redis or something with persistent backing and use that.06:46
lifelessmemcache is fine I think today.06:46
lifelessstub: sqlite in production would be more, not less of a hack :)06:47
stublifeless: yer, I'm not suggesting it is a briliant idea. just that there are alternatives.06:48
stubThere is a new hstore datatype in PG 9.1 for k,v stuff.06:49
stubAnd json to match the existing xml datatype06:49
=== matsubara_ is now known as matsubara
wgrantlifeless: Hi, just added them. https://dev.launchpad.net/DisklessArchives and https://dev.launchpad.net/LEP/DisklessArchives07:36
lifelessI'll do an edit pass and then let elmo etc know07:40
lifelesswgrant: we may want two leps; a horizontal scaling one covering the uploader bug etc, and this one. *may*07:44
wgrantlifeless: Possibly, yes.07:44
wgrantBut we also need *something* for the whole picture, I think.07:45
lifelessCan't fault your logic07:47
lifelessuhm, we'll see. I'm applying humanizing to this doc just now :)07:48
lifelessthank you for putting them together.07:48
lifelesswgrant: you've let a lot of implementation detail leak into the LEP (I mention this so you don't think I'm crazy for deleting it). I'll ensure it survives somewhere.07:49
wgrantlifeless: Probably.07:51
adeuringgood mornin07:53
lifelesswgrant: could you check (e.g. on dogfood, or give me a query) the number of unique people uploading to ppa.l.n ?07:57
jelmerg'morning adeuring07:57
adeuringhi jelmer07:57
wgrantlifeless: SELECTing.07:59
=== almaisan-away is now known as al-maisan
lifelesswgrant: https://dev.launchpad.net/LEP/DisklessArchives edited, please check I didn't trash your intent :)08:28
wgrantlifeless: Looks reasonable.08:31
wgrantThanks.08:31
=== jamestunnicliff_ is now known as jamestunnicliffe
lifelesswgrant: still around ?09:18
wgrantlifeless: A little.09:18
wgrantlifeless: 'sup?09:19
lifelessso you claim external acls are cached on the full request path.09:20
lifelessBut09:20
lifelessmakeExternalAclKey09:20
lifelessclaims otherwise09:20
lifelessI want to check why you say that before I delete it as wrong :)09:20
lifelesswgrant: ^09:21
wgrantlifeless: makeExternalAclKey? Is that some Squid thing?09:22
lifelessyes09:22
wgrantlifeless: Squid can't know that we only care about the first two segments of the path.09:23
lifelessits the thing that makes the helper cache key from the helper parameter format string09:23
lifelesswgrant: thats what the third helper is for.09:23
lifelesswgrant: it does that, trivially, and tags the request.09:23
wgrantWell, Squid itself doesn't cache it. One of the helpers does, if there are two.09:23
wgrantDoes the acl helper get the tags?09:23
wgrantThe rewrite helper doesn't.09:23
lifelessso, there are three helpers09:25
lifelessmapper09:25
lifelessit takes url, returns ppa string, does no DB lookup at all. Purely local.09:25
lifelessit is cached by squid on full url.09:25
lifelessauthenticator09:26
wgrantThat's the ideal situation.09:26
lifelessit takes the auth header + the ppa tag, does DB lookup (via webservice).09:26
lifelessits cache by squid on the auth header value + the ppa tag value.09:26
wgrantBut I didn't see a way for the mapper to execute before the others and tag the request in a way they could see it.09:26
lifelessyou use it in an acl earlier.09:27
lifelesswe may need four helpers in fact, we need to detect ppa.l.n requests to private ppas.09:27
wgrantAhh. There's an %EXT_TAG new in 3.209:28
lifelessthe mapper always succeeds, and you say http_access deny !mapper09:28
wgrant(which isn't in Ubuntu)09:28
lifelessor some such.09:28
lifelessjust %TAG should be fine, no ?09:28
wgrantIs that a thing?09:28
lifelessah no09:29
lifelessmisread the code.09:29
lifelessSo we need that ported, or to run 3.2.09:29
lifelessnoting.09:29
wgrant"%EXT_TAG tag= value returned by previous external ACL calls. Tag may not be altered once set."09:29
wgrantlifeless: So we can't stack tags.09:29
=== gmb changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | Welcome our new intern: ivorykr8 | On call reviewer: gmb | Firefighting: - | Critical bugs: 3.47*10^2
wgrantlifeless: I was handling public-on-private by an arg on the the librarian mapper func, but something nicer might be better.09:30
lifelesswgrant: oh, two rewriters?09:31
wgrantlifeless: Or just pass the hostname in.09:32
wgrantBut two rewriters might be cleaner.09:32
lifelesswell, a public and private ppa may map to the same file09:32
lifelessI propose just having one rewriter that doesn't care about public/private, and do the public/private check separately.09:33
lifelessfor public requests we check the ppa is public, for private ones we check its authed and their creds match09:33
wgrantI guess the extra public roundtrip doesn't suck too much if we're using a separate API service that isn't LP.09:33
jmllifeless:09:34
jmllifeless: that's the checklist at the top of the process page, but with some detailed notes09:34
jmllifeless: I made edits to the wiki page as I went, correcting sources of my confusion or uncertainty09:35
wgrantlifeless: So we just have a separate verify_public external_acl_type?09:35
wgrantWhich uses a separate helper09:35
lifelessjml: it is, but its also a stateful checklist so you can work through it as yor patch progresses.09:36
lifelessjml: bayme thats not helpful.09:36
lifelesswgrant: yes, and use squid acl rules to route to one or tother.09:37
wgrantlifeless: Right, if you look at my sample config it's trivial to do.09:37
jmllifeless: that might help. I couldn't say. I don't feel I lost track of where I was at any point, despite it being a multi-day process09:37
lifelesswgrant: we're going to want a small patch to squid09:38
lifelesswgrant: to let the helper turn off caching for failures.09:38
jmlincidentally, I made this: https://docs.google.com/a/canonical.com/spreadsheet/ccc?key=0AsE2-aW-RE8adG5vbW1nN3dJV0o0WUVKSElFRE9UUFE#gid=009:38
wgrantlifeless: negative_ttl=0?09:38
lifelessjml: we're running an experiment with checkmarkable, if you want to help that you could use it next time.09:38
jmllifeless: ok.09:39
lifelesswgrant: oh, that will do fine :)09:39
lifelesswgrant: I forgots.09:39
wgrantlifeless: external_acl_type has it, not sure if url_rewrite_helper does09:39
wgrantBut I assume so09:39
jmllifeless: I can't say it's grabbed me.09:39
* jml *sighs*09:39
lifelessjml: its trying hard :)09:39
jmlI'm just a little sick of rattling my tin cup every time I want a review.09:39
* jml drags it out again09:39
jmlAlms for the poor? https://code.launchpad.net/~jml/launchpad/remove-top-tests/+merge/10966409:39
wgranturl_rewrite_program doesn't have any such config. Probably somewhere else determines it.09:40
lifelessgmb: ^09:40
jmlSpare a penny for poor ex-leper? https://code.launchpad.net/~jml/lp-dev-utils/apply-top-tests-fixes/+merge/10966509:40
StevenKjml: remove-top-tests r=me09:41
lifelesswgrant: rewriter gets user= passed to it, if we want it09:41
gmbjml, Looking now.09:41
lifelesswgrant: src/redirect.cc redirectStart(ClientHttpRequest * http, RH * handler, void *data)09:42
StevenKgmb: I grabbed the LP one already09:42
gmbStevenK, Ok.09:42
lifelesswgrant: I'm not sure the rewriter has caching; we may need a aggressive cache layer just for it.09:43
gmb... the worrying implication, carrying on from jml's script, is that StevenK is somehow the messiah. This has far too many unpleasant implications for me, so I'm just going to look at the lp-dev-utils branch and STFU.09:43
wgrantlifeless: I don't think user= is useful.extuser= might be.09:43
wgrantlifeless: Right, we'd basically need completely custom caching for the rewriter anyway.09:43
lifelesswgrant: rephrase, I'm reasonably sure it doesn't have caching.09:43
lifelesswgrant: custom, how so ?09:43
wgrantlifeless: As I detail in my musings on the different cache coherency constraints.09:43
wgrantlifeless: pool/ should cache forever and then some.09:43
wgrantdists/ should not09:43
lifelesswgrant: you forgot that the cache keys are based on the rewrite value09:43
StevenKgmb: Unpleasant for you09:43
lifelesswgrant: unless you disproved that.09:43
StevenK? What about ME!?09:43
wgrantlifeless: I mean the lookups.09:44
gmbStevenK, You're the one that's going to end up nailed to a tree.09:44
jmlgmb: he's not the messiah. he's a very naughty boy.09:44
wgrantlifeless: Pool file rewrites never have to hit the DB ever again.09:44
StevenKjml: I was waiting for that.09:44
wgrantlifeless: Because they never change./09:44
lifelesswgrant: ah! That was entirely unclear.09:44
jmlStevenK: thanks for the review.09:44
* lifeless reedits.09:44
gmbjml, I'm so, so sad to say that I didn't actually see that coming :)09:44
StevenKHahaha09:44
czajkowskigmb: you need to get out more09:45
gmbjml, Anyroad up, your lp-dev-utils branch is approved. Want me to merge it for you?09:45
wgrantlifeless: "Caching of archive path to librarian URL rewrites is a bit of an unresolved issue. While pool/ lookups should be cachable forever without requiring revalidation"09:45
wgrantlifeless: Pretty explicit :)09:45
jmlgmb: yes please. I'll land the removal branch.09:45
gmbczajkowski, This is not, in fact, something with which I would disagree.09:45
lifelesswgrant: and yes, entirely unclear :)09:45
lifelesss/yes/yet/09:45
wgrantlifeless: I should have mentioned, though, that we'd confirmed Squid cached the content based on the post-rewrite URL09:46
wgrantlifeless: Howso? :)09:46
lifelesswgrant: I had no sleep sunday night. *anything* may fail to be unclear.09:46
wgrantHeh09:46
wgrantMay fail to be unclear?09:46
wgrantHeh09:46
wgrantAnyway, I await your edits.09:46
gmbczajkowski, Still, only 1 week and I get to catch the bollocks o'clock train to our shiny new HQ.09:46
czajkowskigmb: whoo shall see you there with bells on09:46
gmb\0/09:47
lifelesswgrant: soon, I think.09:47
gmbjml, Merged and pushed.09:48
lifelesswgrant: I think we want memcache in there.09:49
lifelesswgrant: if you disagree, I'll step you through it.09:49
lifelesswgrant: either that, or we make the mapping step so lightweight we don't need a cache at all.09:50
wgrantlifeless: memcache is probably a good place to cache this, yes.09:50
lifelesswgrant: I haven't gotten into the schema implications of that as yet.09:50
wgrantHm?09:50
wgrantI deliberately left the caching mechanism unspecified.09:50
wgrantmemcached may well be a good option.09:50
wgrantNot sure what you mean by schema implementations.09:51
wgrantimplications09:51
lifelesswell, what does it take to make url->librarian url mapping take 3ms09:53
lifelessor, lets be generous, 5.09:53
wgrantWith a bit of work the DB can answer it is about 2-3ms.09:53
wgrants/is/in/09:53
wgrantBut we should cache it to avoid hitting it too often.09:54
jmlgmb: thanks.09:54
wgrantIf we use something shared like memcache we can even have the publisher shootdown the index caches.09:54
lifelesswgrant: well, at 3K rps, we're looking at 9 seconds worth of load/second.09:54
wgrantRather than revalidating every time.09:54
wgrantOr having a TTL of like 5s.09:54
lifelessso we'd need 9 cores at peak.09:54
wgrantWe can easily take that, but let's not.09:55
lifelessand 3 at normal, which we can trivially do.09:55
lifelesswgrant: lets also avoid writing something we don't need :). I am going to call it out, but also let it be a thing to test and validate, not blindly do.09:55
wgrantThat's true.09:56
jmlit looks like the database rollouts have been blocked for a few days on a non-QAd bug: http://launchpad.net/bugs/100733309:56
_mup_Bug #1007333: update_database_disk_utilization fails with GIN indexes <qa-needstesting> <Launchpad itself:Fix Committed by stub> < https://launchpad.net/bugs/1007333 >09:56
jmlanything I can do to push that along?09:56
* jml confesses to knowing nothing as yet about GIN09:56
wgrantjml: Not blocked for a few days.09:58
wgrantJust that we have other things to do tonight, and .au wasn't here yesterday.09:58
jmlwgrant: perhaps I'm misreading lpqateam and the bug report, but it says it was marked as needing QA on Jun 109:58
wgrantTHat's possible -- we've had a lot of backlog to get through.09:59
jmlok.09:59
lifelesswgrant: what do you mean by 'migration path for PPAs' ?10:02
lifelesswgrant: do you mean 'we need to be able to bring up and validate the new environment before breaking what works on germanium?10:02
stub1It was also a two part landing which would have confused things.10:02
stub1Second landing didn't happen until Friday?10:02
* lifeless assumes he does10:03
wgrantlifeless: We probably want the ability to run both concurrently for a time, but also we need to be able to migrate to the new one.10:03
wgrantSorry, distracted by pgbouncer :)10:03
lifelesswgrant: what does that mean though ?10:03
lifelesswgrant: we have two sets of boxes10:03
wgrantlifeless: eg. we need to load all the Packages and Sources and everything into the DB.10:03
wgrantlifeless: And keep them up to date.10:03
wgrantWithout taking down PPA publishing for a day.10:04
lifelesswgrant: I don't think we do :)10:04
stub1qa-ok since staging still works10:04
wgrantOh?10:04
wgrantlifeless: What is your cunning plan?10:04
lifelesswgrant: If we bring up the new system, and run a 'garbo' job across it to regenerate everything, filling in the missing data, what is the impact on germanium10:05
wgrantlifeless: The garbo job will take more than 5 minutes.10:05
lifelesswgrant: so...10:05
wgrantlifeless: So there won't be holes any more, but stuff will be out of date.10:05
lifelesswgrant: we make the existing publisher make holes.10:05
wgrantlifeless: So the publisher knows about the new DB structures, but only to shoot them in the head?10:06
lifelessits a thought10:06
wgrantPerhaps.10:06
lifelessI don't want to make publishing on germanium *slower*10:06
lifelessthat scares me, for hopefully obvious reasons.10:06
wgrantThat's a reasonable point.10:06
lifelessso my proposal is to bring up a parallel structure10:06
wgrantBut the extra load should be minimal.10:06
lifelessand teach it to cope with germanium doing its thing10:06
lifelessbut ignore that germanium did its thing, or detect stale, or something.10:07
wgrantI think that's probably more work.10:07
wgrantBut it is indeed a reasonable thought.10:07
lifelessanyhow, now I know what you mean, I can clarify.10:07
wgrantGreat.10:08
jmlany tips on how to use the LP web ui when it's running within an LXC container?10:17
jmlI'm guessing I should just copy /etc/hosts but set it to the lxc instance's ip10:17
wgrantjml: https://dev.launchpad.net/Running/LXC10:19
wgrantStep 10 is https://dev.launchpad.net/Running/RemoteAccess10:19
jmlwgrant: thanks.10:19
jmlbuh wuh10:20
jmlapache2 isn't installed?10:21
wgrantThat sounds quite extraordinary.10:21
wgrantSure you ran rocketfuel-setup?10:21
wgrantIs launchpad-developer-dependencies installed?10:21
jmlIn order: Yes it does. I think I did but I am not certain. Yes.10:22
jmlobserve: http://paste.ubuntu.com/1036945/10:23
wgrantOh right, rocketfuel-setup installs apache separately later on.10:23
wgrantPerhaps it died early and you failed to notice?10:23
wgrantREQUIRED_PACKAGES="launchpad-developer-dependencies apache2 apache2-mpm-worker libapache2-mod-wsgi"10:24
wgrantfor pkg in $REQUIRED_PACKAGES; do do_install;10:24
wgrantdone10:24
jmlheh.10:26
jmlwow.10:26
wgrantjml: Re. bug #1011611 I wasn't saying it was reasonable, just that it might be helpful for diagnosis.10:26
_mup_Bug #1011611: Not possible to file embargoed security bug <bugs> <disclosure> <regression> <Launchpad itself:Triaged> < https://launchpad.net/bugs/1011611 >10:26
wgrant?10:26
wgrantwow?10:26
jmlit's like dependencies, but in shell.10:27
wgrantYeah10:27
wgrantPretty awesome.10:27
wgrantWe don't need no packaging system.10:27
nigelb...10:28
jmlwgrant: (have added this to the bug report) To clarify: clicking on "Public" brings up the chooser in my browser (Chrome) and from there I can change it and submit. I would never have thought to click on it, since there's absolutely no indication in Chrome that it's anything other than a declaration of fact (This bug will be Public).10:28
wgrantjml: Yeah.10:29
wgrantIf you mouseover it it gets an underline, but that's it.10:29
wgrantin Firefox it has a drunken exclamation mark.10:29
jml:\10:30
jmlI wonder if there's a more declarative way to say "LP needs these apache modules enabled in order to run"10:32
wgrantI don't believe so.10:33
jmlyay running LP10:35
wgrantBut can you browse to it?10:35
jml(maybe I'll need to do this again next time I lxc-start?)10:35
wgrantNeed to do what?10:35
wgrantThe Apache setup is one-off10:35
wgrantRunning make run or make start needs to be done every time.10:36
jmlwgrant: install apache, enable 5 modules etc.10:36
jmlthese virtual machines confuse me a little. one of the ones I use resets to a template whenever I use it.10:36
wgrantlxc-start shouldn't.10:37
wgrantlxc-start-ephemeral is the ephemeral variant.10:37
lifelesswgrant: so10:37
* jml decides that the only sane thing to do is to eat the last of the Wensleydale.10:37
lifelesswgrant: primary archive + diskless10:37
wgrantlifeless: lalalalala10:38
lifelesswgrant: I just wrote this:10:38
lifelesssplit the work in these scripts between on-disk logic and non-disk logic, and migrate the non-disk logic component off of germanium early in the development process, reducing its current load, and giving a single source of logic for the new schema as it comes of age.10:38
lifelesswgrant: how would that interact with primary archive - if we did this, would it *interfere* with it.10:38
wgrantlifeless: It'd mean redesigning the primary archive publisher.10:39
lifelesswgrant: e.g. I'm thinking the first stage would generate jobs to do the spooling to disk etc10:39
wgrantWell, that could work.10:39
lifelesswgrant: because its still apt-ftparchive ?10:39
wgrantlifeless: Right, we can't generate primary archive indices outside the actual on-disk archive.10:39
wgrantlifeless: And because we need to maintain the on-disk archive we need a queue of disk files to publish.10:39
lifelesswgrant: so, we'd need a kludge for the primary archive, to not generate indices upfront, but the rest of the work could be partitioned sanely ?10:40
wgrantlifeless: That's traditionally SPPH WHERE datepublished IS NULL10:40
wgrantlifeless: But in your proposal that would be maintained separately.10:40
lifelesswgrant: that queue could be explicit as job entries though, yes?10:40
wgrantSo we'd a set of events to publish the files.10:40
wgrantYes.10:40
lifelessI think this is the best approach so far.10:40
wgrantYeah10:40
wgrantIt means rewriting a bit more.10:40
wgrantIt's by far the cleanest.10:40
wgrantIt's a significant amount of extra work.10:41
wgrantI discounted it as being too much work, so I don't really have a good estimate of how much work it would be.10:42
wgrantBut it basically means rewriting the entire backend.10:42
wgrantRather than just extending it in a couple of places.10:42
lifelesswe can let james_w and jml decide.10:43
lifelessI suspect that 'more work' here giving a more debuggable and understandable system is well worth it.10:43
lifelessprobably a smaller system too when I think about it.10:44
lifelessbigger change from what we have today - sure.10:44
wgrantIt's also throwing away 7-year-old tried and battle-tested code, and forcing people who don't know Soyuz to rewrite Soyuz :)10:44
lifelesswgrant: can you expand a little on the concurrency issue with parse-ppa-apache-access-logs ?10:44
wgrantBut they do have packaging experience, so I guess all is not lost :)10:44
lifelesswgrant: the latter is a good thing10:44
lifelesswgrant: fresh eyes, no stockholm syndrome.10:45
wgrantlifeless: Redesigning Soyuz perhaps.10:45
lifelesswgrant: precisely.10:45
wgrantRewriting Soyuz with the same data model and all the boobytraps it has? No.10:45
lifelessnow, -logs thingy.10:45
wgrantlifeless: Well, we currently parse n lines at a time.10:45
wgrantlifeless: And then update the counts all at once.10:46
wgrantlifeless: If n is too large, we'll get lots of rollbacks.10:46
wgrantAs there'll be conflicting count updates.10:46
lifelessso by problems you mean 'lots of waste' vs 'bad data'10:46
wgrantThere's also the ParsedApacheLog problem, but I may be too paranoid there.10:46
wgrantWe currently identify a log file by its first line.10:46
lifelessantything else ?10:46
wgrantIf two logs happen to have the same first line, they'll be confused.10:47
wgrantTHat's all I know about.10:47
lifelesswgrant: whats the cycle for log parsing10:49
lifelesscron? /15 ?10:49
wgrantlifeless: cron, disabled10:49
wgrantBut something around there.10:49
* wgrant checks.10:50
lifelessok10:50
lifelesswgrant: and how long does it take when it runs? 2-3m ?10:50
wgrantIt's */3010:50
wgrantI don't know how long it takes nowadays.10:50
wgrantIt was set up before I worked here, and I haven't had cause to look at it since.10:50
wgrantSo I have no clue how long it ever took on prod.10:51
wgrantAh, we still have logs.10:51
* wgrant looks10:51
wgrantlifeless: Seems to take 5-10 minutes at load of about 6.10:52
jmlman, it would be great if pagetests handled unexpected form submission errors by showing the unexpected form submission errors.10:54
wgrantjml: The appserver just says "Unexpected form data". It doesn't give any extra data.10:55
jmlwgrant: I mean in cases where validate() shows errors but the test wasn't expected it to10:55
wgrantOh10:56
wgrantHandy.10:56
=== matsubara is now known as matsubara-lunch
lifelessjml: ...pagetests...10:58
lifelessjml: is all I saw.10:58
jmlwell, it'd also be great if Launchpad had an app server that wasn't also a web server.10:59
jmli.e. if the web UI was an api client10:59
lifelessjml: funny you should mention that.10:59
nigelbwallyworld_: \o/ suprise surprise!11:55
=== garyposter is now known as gary_poster
=== matsubara-lunch is now known as matsubara
jmlsome names appear twice (need to do proper fuzzing), but here's a lines-of-code high score table: http://paste.ubuntu.com/1037100/12:27
wgrantjml: Curses.12:30
jmlwgrant: that you aren't on top, or that the numbers add up to 10k+ LoC added since the policy?12:30
jml(incidentally lp:bzr-damage; 'bzr high-scores -r 14780..')12:31
wgrantThat I'm not on top, indeed.12:32
wgrantI wonder what Aaron deleted.12:33
wgrantMaybe that was ec2.12:33
jmlI reckon so.12:33
jmlwgrant: 'bzr loc' (takes log args) will get you that info12:33
wgrant 30 files changed, 679 insertions(+), 6078 deletions(-)12:33
wgrantYup12:33
wgrantjml: Nice, thanks.12:33
* jml is just adding a bunch of todos to the code base before taking a break.12:34
jmlwgrant: my pleasure.12:35
jmlwgrant: although it's not nice, it's hideous.12:35
cjwatsonjml: Oh, fantastic, I'd been meaning to get round to doing that.12:36
jmlcjwatson: my pleasure. I got stuck in a mental groove.12:37
jmlcjwatson: I might merge loc-contributors into bzr-damage at some point, if you don't mind12:38
* jml might also merge bzr-damage into bzr-stats12:38
jmlthe really annoying thing is the way pqm sets itself as author & committer.12:38
wgrantYeah, it would be pretty handy if it didn't do that.12:39
jmlI know lifeless says that it's the right thing for it to do, but accumulating authors from the merged revisions is expensive and hard to slot into bzr's other mechanisms12:39
cjwatsonI found that too.12:39
cjwatsonAnd it makes logs tedious to read.12:39
jmlalthough to be fair, the bzr developers would probably admit that bzrlib.log is in need of love12:40
StevenKjml: I personally think that PQM needs to die a horrid, painful and *SLOW* death, but lifeless disagrees. :-(12:40
wgrantjml: Does lifeless say that?12:40
wgrantSurely I'm the author; I told it what to do.12:40
jmlI'm thinking of spinning out the pqm hackery I've done here into a separate plugin that tweaks 'bzr log' behaviour by default.12:40
jmlwgrant: IIRC. It was a conversation long, long ago. Perhaps on IRC, perhaps not.12:41
jmlor I guess I could patch bzr proper12:42
jmlwhat I want to know is what wallyworld_ has been up to12:42
wgrantjml: Oh?12:42
wgrantWhat has wallyworld_ been up to?12:43
StevenKjml: Why are you stalking wallyworld_?12:43
jmlStevenK: because my script says he has added 12k+ lines of code, which makes him an outlier12:44
wgrantAh.12:44
wgrantHe's been writing disclosure stuff.12:44
wgrantLots of frontend and backend stuff.12:44
jmlwgrant: and that's under a LoC exemption?12:44
* jml finds that surprising.12:44
wgrantI believe so.12:44
StevenKdisclosure is, yes12:44
wgrantAnd there's a lot of code that will be deleted once this is done.12:45
StevenKjml: A lot of wallyworld_'s LoC was from writing a whole new services - ISharing12:45
wgrantStevenK: That's hardly relevant.12:45
wgrantIt's still LoC.12:45
wgrantAll LoC is equal.12:45
StevenKHe has also been pilling on bunch of JS12:45
wgrantThat's the idea of the policy.12:45
jmlHmm. I'm also not sure how to count the commits from PQM12:48
jmlI'm fairly sure they are merges from db-stable12:48
wgrantThat was a problem with community-contributions.py.12:49
wgrantI'm pretty sure i fixed it years ago.12:49
wgrantMight be able to steal stuff from that.12:50
wgrantOh right, no, it's hideous.12:50
wgrantDon't go near that.12:50
wgrantIt does work, though.12:50
jmlyeah.12:52
jmlI'm thinking of merging some of that into bzr-(damage|stats) too.12:53
jmlI wish bzr were more popular12:53
jmlthen I'd feel happier about doing that sort of thing12:53
jmlrather than slightly constrained by a weird ocd variant.12:53
wgrantHeh12:54
wallyworld_jml: what's wrong with adding code? it's sort of impossible to write a new feature without adding code to implement it don't you think?12:57
jmlwallyworld_: Certainly it requires new lines. However, those new lines can also be accompanied by removed lines.12:58
jmlwallyworld_: have you followed Drizzle at all?12:58
wallyworld_jml: why does it follow that one must remove lines just because a new feature has been added?12:59
wallyworld_i haven't followed drizzle12:59
=== Ursinha` is now known as Ursinha
=== Ursinha is now known as Guest63012
jmlwallyworld_: it doesn't necessarily follow, however it's possible and perhaps desirable to insist that you do so.13:00
wallyworld_hmmm.13:00
wallyworld_i don't see a correlation, but that's just me13:01
wgrantwallyworld_: The idea of the policy is that new code can't be added.13:01
jmlwallyworld_: Launchpad has a lines-of-code freeze policy. It's possible to write a new feature but also "pay" for it by removing other pointless code as you're adding the new feature.13:01
wgrantTherefore from adding code it follows that you must remove a corresponding amount.13:02
jmlwallyworld_: However, the team doing disclosure has decided not to do it.13:02
wallyworld_yes, for good reason :-)13:02
jmlwallyworld_: what's that reason?13:02
wallyworld_it's a bit silly to artifically find stuff to delete just because a new feature is being done'13:02
wgrantHm?13:02
wgrantThat's not silly.13:02
wallyworld_sort of adds unnecessary scope to the feature writing13:02
wgrantThat's the whole point of the policy.13:02
jmloh right, you disagree with the lines of code policy13:02
wallyworld_in some circumstances yes13:03
wallyworld_like bespoke feature development13:03
jmlhah!13:03
wallyworld_which we have an exemtiion for13:03
wallyworld_for good reason imho :-)13:03
wgrantIMO the only excuse we have is that we started 6 months before the policy.13:03
wgrantNew features will be started with the policy in mind.13:04
wallyworld_i've never ever seen such a loc policy applied to bespoke feature devellopment13:04
wgrantOurs was not.13:04
wgrantwallyworld_: Really?13:04
jmlwallyworld_: your good reason being that it adds unnecessary scope?13:04
wallyworld_yes, really13:04
wgrantwallyworld_: workitems was done under LoC freeze.13:04
wgrantwallyworld_: cjwatson's work is under LoC freeze.13:04
wgrantcelery was done under LoC freeze.13:04
wallyworld_jml: yes, and completity and muddles the cleat thought on how best to architect the feature13:04
jmland I believe all the work on drizzle (or one of the mysql forks) over the last few years was done under a LoC freeze.13:05
wgrantLaunchpad is far too big considering what it does.13:05
wallyworld_it may be possible, doesn't make it right thing to do13:05
wgrantWithout the LoC freeze there's nothing convincing people to fix that.13:05
wgrantThe last 7 years have shown that very well.13:05
wallyworld_that's what maintenance should be for13:06
jmland it is, but  it's hard with a leaky bucket.13:06
wallyworld_imagine starting a new project from scratch. bit hard for a loc freeze there. a new bespoke feature sort of falls into that category. it shouldn;t be tied to sins of the past13:07
cjwatsonIt clearly wouldn't work for a newer project, but for a mature project that's well-known to contain lots of cruft I think it's an interesting enough policy that I'm happy to support it by finding stuff to delete.13:07
cjwatsonI do waver between thinking it's insanity and thinking it's genius13:08
wallyworld_i agree somewhat if the new work builds on or it related to previous cruft13:08
czajkowskicjwatson: fine line is it :)13:08
cjwatsonYeah13:08
cjwatsonBut there is something to be said for requiring refactoring along the way; rather like how review often doesn't happen unless it's a requirement, because it's not the obvious shortest path to churning out lots of code13:08
wallyworld_i'm all for refactoring, but not as a required, mandatory cost of adding a new unrelated feature13:09
jmlwallyworld_: you're saying disclosure *isn't* related to previous cruft?13:09
cjwatsonSometimes if it isn't mandatory it won't happen.13:09
wallyworld_jml: there's arguments both ways13:10
cjwatsonI mean, maybe maintenance should be doing refactoring, but there's those 300-odd critical bugs whose line has been trending the wrong way ...13:10
wallyworld_i do think it is a primarily a maintenance thing13:11
jmlwallyworld_: if it's not related, you should be implementing it as a separate service from Launchpad13:11
wallyworld_and a best effort thing whre it makes sense for feature work13:11
cjwatsonAdmittedly I'm doing much smaller feature work than you are, but I also found that the policy forced me to think about economy of implementation, generally for the better.13:11
wallyworld_jml: the new sharing service stuff is essentially a separate bit of infrastructure, a new paradigm13:12
cjwatsonPeople doing feature work can very likely churn out lines of code much faster than maintenance programmers can refactor them, so saying it's primarily maintenance is (I think) dooming the project to unbounded growth13:12
jmlcjwatson: +113:12
wallyworld_cjwatson: i would argue that one should be thinking about that sort of stuff regardless :-)13:13
cjwatsonAnd since one of the initial axioms here appears to be that Launchpad is too large ...13:13
wallyworld_i wish we were having this discussion over a few beers down at the pub :-)13:14
cjwatsonYeah :)13:14
* wallyworld_ would then challenge jml to another arm wrestle13:14
cjwatsonOh, speaking of branches that add stuff to be traded off against later deletions, I could use a review of https://code.launchpad.net/~cjwatson/launchpad/export-change-override/+merge/10954913:14
czajkowskigmb: ^^13:14
jmlwallyworld_: you're more than welcome to next time we meet.13:15
* wallyworld_ is scared now13:15
jmlhttp://wiki.drizzle.org/FAQ#Can_I_get_involved.3F13:17
* jml → lunch13:17
gmbcjwatson, czajkowski: Noted, will take a look, ta.13:39
sinzuigmb, do you have time to review https://code.launchpad.net/~sinzui/launchpad/uncommercial-projects/+merge/10940414:02
gmbsinzui, I will do shortly.14:02
sinzuithank you14:02
deryckadeuring, abentley, rick_h -- coming for standup sorry14:03
deryckadeuring, https://plus.google.com/hangouts/_/4f2b2de401df7d5f9167b0f44c74671388ee17b4?hl=en14:05
=== al-maisan is now known as almaisan-away
=== Guest63012 is now known as Ursinha
=== Ursinha is now known as Guest90889
=== Guest90889 is now known as Ursula
gmbsinzui, So, benji looked at the code yesterday and has given it r=, but he's asked me to double-check some of the logic... I'll take a look presently and get back to you.15:04
benjigmb: here's an odd MP for you: https://code.launchpad.net/~benji/launchpad/bug-1011793/+merge/10987115:36
gmbOoh, lovely. I loves me some oddness.15:37
gmbHah.15:37
gmbNice.15:37
gmbbenji, r=me15:37
benjithanks15:37
jmlbenji: it might be a good idea to add a README to that directory so someone doesn't remove it thinking "what the heck is an empty directory in VCS for?"16:05
benjijml: good call, I'll do so16:07
gmbsinzui, r=me16:19
sinzuithank you gmb16:20
=== salgado is now known as salgado-lunch
=== matsubara is now known as matsubara-afk
=== salgado-lunch is now known as salgado
* cjwatson upgrades mawson17:39
lifelessgary_poster: hey, it might be nice if your buildbot log wiki page included the duration.18:08
lifelessgary_poster: just for my prurient interest :)18:08
gary_posterlifeless, heh, ok will do18:08
cjwatsonHave to go now, but I've upgraded dogfood and will QA my patch on it later.18:14
lifelesswgrant: can you update the diagram? take apache out.19:33
=== slank` is now known as slank
=== slank is now known as Guest2077
wgrantlifeless: Not without justification :)22:13
lifelesswgrant: we don't need it; elmo surprised me and said 'lets use squid directly for http', then we spoke about SSL and he decided that squid would be fine for that too, if I was telling the truth about how squid does SSL.22:14
wgrantlifeless: Hopefully we can also do the header mangling with need in Squid, then :)22:28
wgrantBut elmo was the main reason I thought we'd need Apache, so sounds good.22:29
=== salgado is now known as salgado-afk
lifelesswgrant: we can at a pinch ignore the outbound side cache headers, I suspect ppa.l.n doesn't do stuff there anyhow.22:37
lifelesswgrant: there is a header replacement system though22:38
lifelesshttp://www.squid-cache.org/Doc/config/reply_header_replace/22:38
lifelessmay need to tweak that to permit acl based rules I guess22:39
wgrantlifeless: ppa.launchpad.net doesn't need to do it at present.22:43
wgrantlifeless: Since the static files don't have Expires: $FOREVER22:43
wgrantLibrarian responses wil22:44
lifelesspoint is, we can set a global value trivially22:44
lifelesswe can't do sophisticated setting today.22:44
wgrantRight.22:44
lifelesswhat ppa.l.n does is roughly equiv to a global value22:45
wgrantlifeless: That's done, btw.23:04
cjwatsonBug 914779 - broken, but is that qa-ok based on my comments?  I've checked that things like Archive.newComponentUploader and Archive.newPackageUploader still works, so it's a matter of attempted new functionality being broken rather than a regression.23:28
_mup_Bug #914779: Pocket maintainers cannot always upload to their pocket <qa-needstesting> <Launchpad itself:Fix Committed by cjwatson> < https://launchpad.net/bugs/914779 >23:28
cjwatson*still work23:28
StevenKcjwatson: If it does not impact existing functionality and is safe to deploy, then you can mark as qa-ok.23:30
cjwatsonRight, thanks.  I'll fix it properly tomorrow.23:31
cjwatsonModulo being in a sprint for something else.23:31
lifelesswgrant: elmo raises a concern about FDT impact23:48
lifelesswgrant: I'll talk with him tomorrow; I think its doable offhand, because a) SC can't complete during FDT *anyway*, and most users have the GUI update-manager which is doing background updates - they won't notice23:49
wgrantlifeless: Yeah.23:55
wgrantI think it's manageable for now.23:55
wgrantAnd we can eliminate it entirely later.23:55

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