[01:52] <wgrant> StevenK: Bug #1208866 might be of interest
[01:52] <_mup_> Bug #1208866: PackageDiff.requester not set properly for recipe build uploads <package-diff> <recipe> <soyuz-upload> <Launchpad itself:Triaged> <https://launchpad.net/bugs/1208866>
[01:56] <StevenK> wgrant: Because the uploads are unsigned
[01:57] <wgrant> StevenK: Yes
[01:57] <wgrant> signing_key is none; you need to go through SPR.SPRB.requester instead
[01:57] <wgrant> Not sure of the best place to do that
[03:55] <StevenK> wgrant: http://pastebin.ubuntu.com/5961229/
[03:56] <StevenK> wgrant: I was also pondering destroying IPerson.isUploader() and subsuming it into its remaining callsite
[03:57] <wgrant> StevenK: That would seem reasonable; it never belonged on Person anyway.
[03:58] <wgrant> Distribution, potentially
[03:58] <wgrant> But if there's only one callsite then inline it.
[03:58] <StevenK> Which was my plan, yeah
[03:58] <StevenK> lib/lp/registry/doc/person.txt, lib/lp/registry/interfaces/person.py, lib/lp/registry/model/person.py, lib/lp/soyuz/adapters/notification.py
[03:58] <StevenK> So inline it goes
[04:19] <jtv> Hi StevenK, hi wgrant.  It's a shame we never meet up any more.  I'm rapidly going through a kilo bag of drop bears and mint crosses.
[04:20] <wgrant> Heh
[04:20] <wgrant> Hi
[04:21] <wgrant> jtv: What's a mint cross?
[04:21] <jtv> Similar, but more sweet than salty (still sugar-free in this case, like the drop bears) and with mint in it.
[04:22] <lifeless> jtv: o/
[04:22] <jtv> Hi there lifeless!
[04:22] <jtv> How are the various kittens?
[04:23] <lifeless> they are cats now; and great fun
[04:23] <jtv> Too many yappy dogs around here.  Don't see the cats much any more.  :(
[04:23] <lifeless> it's winter here, so we're waking up at 5:30/6am to cats climbing in bed for warmth
[04:23] <jtv> That's always sweet.
[04:24] <jtv> I knew these two sisters in the Northeast (Siamese) who would do that.  We had 9 degrees one winter night.
[04:25] <stub> Squirrels and cats here
[04:25] <stub> And rats and cockroaches :)
[04:27] <jtv> You have squirrels too?  Bastards steal my mangoes.
[04:27] <jtv> Eat 'em right off the tree.
[04:27] <jtv> I have a bat, too.
[04:33] <stub> I cook my squirrels first
[04:37] <jtv> What was that joke I saw the other day...  Bat father putting his son to bed.  His son makes him check that Ozzie Osbourne isn't under the bed.
[04:40] <stub> Looking at feature flags, to discover lib/lp/services/features/doc/features.txt is 0 bytes...
[04:41] <StevenK> Haha
[04:42] <StevenK> Tempted to drive-by delete that in the branch I have up
[04:43] <stub> Should I be attempting to use a feature flag from twisted, or just stick with a config value?
[04:43] <wgrant> Should work fine from the librarian
[04:46] <lifeless> stub: there was docs for the feature flags; no idea why that file is empty
[04:46] <stub> StevenK: Or pull the docs in from lib/lp/services/features/__init__.py - seems to be in there
[04:47] <stub> wgrant: I'll need to ensure it is all populated somehow before starting the reactor, or we will end up blocking on db calls.
[04:48] <wgrant> stub: But only once.
[04:48] <wgrant> So it's not that bad.
[04:48] <lifeless> wgrant: eh
[04:48] <lifeless> once per flag context
[04:48] <lifeless> you're not proposing to have to restart to activate changes?
[04:49] <wgrant> We've not much choice. We can't sanely query every time.
[04:49] <lifeless> loopingcall once a minute? call into db from a thread?
[04:49] <wgrant> If we want to do that, yeah.
[04:50] <lifeless> well, not my problem :)
[04:50] <lifeless> but, restarting services on config change is a bit of a PITA
[04:50] <lifeless> you're not putting creds in the feature flags are you?
[04:50] <lifeless> cause that would be bad :)
[04:52] <StevenK> wgrant: https://code.launchpad.net/~stevenk/launchpad/sprb-findpersontonotify/+merge/179093
[04:54] <stub> lifeless: it needs to be restarted to reload flags, or it will block.
[04:56] <stub> Unless I do a largish refactor to allow me to make the flag lookup deferToThread, but since the purpose of the flag would be to avoid using the new code path and instead stick to the antique and stable one...
[04:59] <stub> ioc, yeah, separate task to refresh the flags
[05:00] <stub> Do we care if the Librarian supports range queries? It should be irrelevant now all access is via squid?
[05:00] <lifeless> stub: squid will pass on range queries if it is a miss
[05:01] <stub> 'Cause I can't support range queries without cargo culting a pile of code from twisted.web
[05:01] <lifeless> stub: you can reply with the full content, but if that's not cachable for some reason you'll waste a bunch of in-dc bandwidth
[05:01] <lifeless> I think it's probably fine to not support them
[05:02] <stub> lifeless: yeah, but if squid passes on the range query and receives the entire file, will it chop it up and send only the requested bits to the client?
[05:02] <lifeless> it will try
[05:02] <lifeless> bastard clients can cause issues,.
[05:02] <lifeless> like, if they ask for the last byte, then the first byte, then the middle, then the second last, then ...
[05:03] <lifeless> in one request
[05:03] <stub> I'd trust squid's implementation over the twisted one in any case...
[05:03] <lifeless> anyhow, if you give squid the whole file, and it's cachable, squid can cache it and then satisfy from the cache
[05:03] <stub> especially as I'm not going to allow rewinding my swift stream ;)
[05:03] <lifeless> I *think* that still happens on misses, but if it doesn't, the client is required to deal anyhow.
[05:03] <lifeless> since swift data can be compressed I think that's very wise.