[06:05] <wgrant> cjwatson: the pack protocol we use internally is extensible with a dict of strings
[06:05] <wgrant> like git's normal host field, but not restricted to host
[09:32] <wgrant> cjwatson: Morning.
[10:09] <cjwatson> wgrant: Hi.  How's Malta?
[10:11] <wgrant> cjwatson: Cooler than last year, but sprint going well so far.
[10:11] <wgrant> cjwatson: I can't push to a locally mojo'd turnip today.
[10:11] <wgrant> turnipserver.py still works on my host, so I wonder if the split is buggy.
[10:11] <wgrant> I haven't debugged too fa yet.
[10:13] <cjwatson> wgrant: Pushing to qas still works, and qas has the split ...
[10:13] <cjwatson> (e.g. https://code.qastaging.launchpad.net/~cjwatson/binfmt-support/+git/binfmt-support which I just pushed)
[10:13] <wgrant> Hm
[10:15] <wgrant> cjwatson: I have a subordinate alternate branch proposed, and apparmor stuff working for git subproesses but won't propose that until I have turnip itself confined.
[10:15] <cjwatson> wgrant: You definitely have all the listeners up?
[10:15] <wgrant> cjwatson: Yeah, it looks like git receive-pack --stateless-rpc just immediately dies for some reason.
[10:16] <wgrant> I can see it starting, and processEnded is called, but outReceived and errReceived are not :/
[10:16] <wgrant> I'll poke harder.
[10:17] <cjwatson> That's a peculiar failure mode for the stuff I was doing, unless I missed some detail in which the TACs differ from turnipserver.py.
[10:17] <wgrant> Indeed, but I think you caught it all.
[10:17] <cjwatson> The only one of those I noticed was that the backend server hadn't been updated to run hookrpc, but I fixed that.
[10:18] <cjwatson> Hopefully the logging is less hopelessly inconvenient to play with locally now :-)
[10:18] <cjwatson> Like, timestamps.
[10:18] <cjwatson> I stuffed a draft production stage into our mojo spec branch too, if you want to have a look.  Mostly the same as qas.
[10:53] <cjwatson> wgrant: alternates: I wonder if we need to force receive.autogc to false before doing this
[10:53] <cjwatson> wgrant: Otherwise branch removal + next push might corrupt cloned-from repositories.
[10:54] <cjwatson> (And we'll have to be very careful on repack, but we knew that.)
[11:43] <wgrant> cjwatson: How can it corrupt cloned-from?
[11:47] <cjwatson> wgrant: Sorry, I mean corrupt cloned.
[11:47] <cjwatson> I think my comment in the MP was clearer.
[11:48] <cjwatson> wgrant: I've been trying to reproduce the behaviour from http://paste.ubuntu.com/10909945/ in the test suite and can't (if I .encode the URL I pass to test_traverse, something in the traversal machinery decodes it again for me.  Is there anything specific to the test suite you know about that would cause that?
[11:48] <wgrant> But we're cloning the cloned-from, so even deletion of it won't affect anything.
[11:48] <cjwatson> Oh
[11:48] <wgrant> cjwatson: A GC in the cloned-from can't touch the packs that we've hardlinked into the alternate.
[11:48] <cjwatson> Yeah, OK, I'm confused then.
[11:49] <wgrant> That's the entire reason we create the separate repo.
[11:49] <cjwatson> Disabling autogc might be good for other reasons, but you're right.
[11:49] <wgrant> Otherwise, yes, disaster would strike.
[11:49] <wgrant> Indeed.
[13:20] <cjwatson> wgrant: Have you had a chance to look at the couple of pending LP git branches I have?
[13:21] <cjwatson> https://code.launchpad.net/~cjwatson/launchpad/git-mp-collection/+merge/257145, https://code.launchpad.net/~cjwatson/launchpad/git-mp-ref-proposals/+merge/257374
[13:23] <wgrant> cjwatson: Looking.
[13:29] <cjwatson> Ah.  So BasicLaunchpadRequest.__init__ decodes the PATH_INFO.  I wonder why that isn't done for API requests as well?
[13:30] <cjwatson> Oh, except it doesn't, it decodes and re-encodes.  Must be somewhere else.
[13:30] <wgrant> Isn't that all done in Zope?
[13:30] <wgrant> Are you seeing it as a bytestring somewhere?
[13:31] <cjwatson> zope.publisher.http:sane_environment is the bunny.
[13:31] <cjwatson> Yes, in an API requesthttp://paste.ubuntu.com/10909945/
[13:31] <cjwatson> er http://paste.ubuntu.com/10909945/
[13:32] <cjwatson> I wonder if lazr.restful should be decoding the path to match.
[13:33] <wgrant> :/
[13:34] <cjwatson> How have we not come across this before?  Are there just lots of little model hacks to decode?
[13:34] <cjwatson> I mean I know it's only pure-Storm stuff that's likely to care, but.
[13:35] <wgrant> It's very odd.
[13:35] <cjwatson> I had to handle this in GitTraverser, which is probably why.
[13:35] <cjwatson> Never tracked it down properly at the time.
[13:39] <cjwatson> I wonder if this is the else case of SimpleFieldMarshaller.marshall_from_request.
[13:41] <cjwatson> If it's posting a non-JSON-encoded bytestring there, that case doesn't decode it.
[13:43] <wgrant> Ah, yes.
[13:44] <cjwatson> Will have a go at that after lunch.
[14:37] <cjwatson> Ah, no, the problem is that lazr.uri returns bytestrings in URI.path (arguably reasonably) and we need to decode those in URLDereferencingMixin.dereference_url.
[16:05] <cjwatson> Aha.  I think lazr.uri 1.0.3 is the thing.
[16:05] <cjwatson> Far be it from us to have upgraded to our own software released three years ago.