I tried out your new patch, and removed my prefixing code from my patch, and they work together. Good call on just modifying the Request internally. I updated my review to have just the app-default changes and hopefully we can land both.
On Tuesday, February 14, 2017 at 6:47:21 AM UTC-8, mpl wrote: > > > > On 14 February 2017 at 04:41, Steve Armstrong <[email protected] > <javascript:>> wrote: > >> Now it's me who's missing something. >> >> 1. I thought we couldn't modify the Request object, so if we want to >> strip the prefix before sending a Reqeust to the mux, we need to clone or >> otherwise create a new one. Is that what you're proposing? >> > > I think Brad's objection was because I was doing that on the app handler, > which is a proxy. I am now doing it on the scanning cabinet app itself, > which is the final recipient of the request, where I'd say we can do > whatever we want with the request since it has reached its destination. > > >> 2. I looked at your new patch, and I can't seem to find where you're >> stripping the prefix off to see how you did it. >> > > > https://camlistore-review.googlesource.com/#/c/5416/12/app/scanningcabinet/handler.go@171 > > As an aside, I've been keeping my scancab branch at >> https://github.com/stevearm/camlistore/tree/scancab until it was ready >> to post to your CL. It's got your rebased commit and 3 small fixes (one of >> which you've already got in your new rebase), then 3 feature commits I was >> going to propose once the base scancab landed. >> > > Once we're past the prefix issue, and once at least one person (so, most > likely you) has reviewed and +1ed the scancab CL, I'll land it. Then > https://camlistore-review.googlesource.com/9206 . Then we can move on to > whatever changes you propose. > > On Monday, February 13, 2017 at 2:57:56 PM UTC-8, mpl wrote: >>> >>> Hi, >>> >>> I wanted to test your CL ( >>> https://camlistore-review.googlesource.com/9206) in conjunction with >>> the scanning cabinet, and I found out that we don't >>> need CAMLI_APP_URL_PREFIX after all, if we strip the prefix from the >>> request's URL Path right before giving it to the muxer. PTAL at >>> https://camlistore-review.googlesource.com/#/c/5416/12 , and let me >>> know what you think or if I'm missing something again. >>> >>> thanks. >>> >>> >>> On 6 February 2017 at 20:09, Steve Armstrong <[email protected]> >>> wrote: >>> >>>> Great, thanks. I'll implement that then as a CL (adding >>>> CAMLI_APP_URL_PREFIX) and rebase my scanningcabinet branch on top for >>>> submission. >>>> >>>> On Monday, February 6, 2017 at 7:15:00 AM UTC-8, mpl wrote: >>>> >>>>> >>>>> >>>>> On 3 February 2017 at 08:10, Steve Armstrong <[email protected]> >>>>> wrote: >>>>> >>>>>> On Monday, January 30, 2017 at 8:00:28 AM UTC-8, mpl wrote: >>>>>>> >>>>>>> >>>>>>> My base concern is /scancab/ is user defined. >>>>>>>> >>>>>>> >>>>>>> Why does that concern you? >>>>>>> >>>>>> >>>>>> Because it could be anything, so scanningcabinet needs to be told >>>>>> what it is so it can strip it out (either in env vars or in the callback >>>>>> config). >>>>>> >>>>>>> >>>>>>> >>>>>>>> Either camlistore should remove it from the url before proxying, or >>>>>>>> should supply it in the env vars when starting the app so the app >>>>>>>> knows >>>>>>>> what it needs to remove. >>>>>>>> >>>>>>> >>>>>>> Why can't you use camlistore.org/pkg/app.PathPrefix , to know what >>>>>>> needs stripping, just like the publisher does, and like the scanning >>>>>>> cabinet handler already does too actually? What does not work in doing >>>>>>> that? >>>>>>> >>>>>> >>>>>> From what I can tell, scanningcabinet just uses app.PathPrefix to get >>>>>> the base url when making links. Since this function only works from >>>>>> within >>>>>> a request, I can't bind the prefixed urls to the ServeMux at startup. I >>>>>> also can't modify the Request object and feed it back into the ServeMux >>>>>> per >>>>>> our previous discussion about Camlistore removing the prefix in the >>>>>> first >>>>>> place. Prefix is also not provided by default in the config returned by >>>>>> the >>>>>> app config callback url. I'm unsure which of these things I should be >>>>>> fixing in order to get around this, or am I missing something critical? >>>>>> >>>>> >>>>> No, I think you're right; we can't set up the muxer's handlers if we >>>>> don't know the prefix path. >>>>> The publisher circumvents this problem by muxing everything to "/", >>>>> stripping the request url path of the prefix, and dispatching manually to >>>>> various handlers, which I think is not a good idea. The scanning cabinet >>>>> was on the back burner when we fixed the app handler to not mutate the >>>>> request url path, which is why I didn't think to raise that objection at >>>>> the time. >>>>> So yes, the app handler should probably provide to the app the prefix >>>>> path on which it is mounted on Camlistore. The most obvious/clean way >>>>> would >>>>> be to add another env var to doc/app-environment.md, that the app >>>>> handler is then contractually obliged to provide to the app when it >>>>> creates >>>>> the app's process. I actually went back and forth in the various CLs as >>>>> to >>>>> whether we should include the prefix in an env var. >>>>> Another way, if we think that the prefix is not always necessary (but >>>>> I think it pretty much is), is to include it in the appConfig that the >>>>> all >>>>> can optionally request from the app handler on startup. >>>>> >>>>> >>>>>> >>>>>>> >>>>>>> On Wednesday, January 25, 2017 at 5:37:32 AM UTC-8, mpl wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On 25 January 2017 at 09:06, Steve Armstrong <[email protected] >>>>>>>>> > wrote: >>>>>>>>> >>>>>>>>>> My suggestion to have Camlistore drop the handler prefix from the >>>>>>>>>> url before it proxies through to the app was rejected because a >>>>>>>>>> design >>>>>>>>>> decision was already made: >>>>>>>>>> https://github.com/camlistore/camlistore/issues/833 >>>>>>>>>> >>>>>>>>> >>>>>>>>> Is there a conversation somewhere why this is so? >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> https://camlistore-review.googlesource.com/#/c/6916/5/pkg/server/app/app.go@102 >>>>>>>>> So I suppose it must come from some RFC somewhere about proxying... >>>>>>>>> >>>>>>>>> Are we planning on having the prefix in an environment variable so >>>>>>>>>> the app always knows what the url will be and it can handle it? >>>>>>>>>> While I'm >>>>>>>>>> modifying the scanningcabinet to work with this, I need to go down >>>>>>>>>> one of >>>>>>>>>> these two paths (Camlistore takes care of it, or passes all required >>>>>>>>>> info >>>>>>>>>> to the app so it can do it) and I don't want to implement opposite >>>>>>>>>> to >>>>>>>>>> something that's already been worked out by the team. >>>>>>>>>> >>>>>>>>> >>>>>>>>> I was trimming the prefix because I thought there was no good >>>>>>>>> reason for the app to be burdened with the knowledge of the app >>>>>>>>> handler's >>>>>>>>> prefix (i.e. I thought it was more elegant like that), but there was >>>>>>>>> no >>>>>>>>> technical problem solved by doing so, or no good technical reason for >>>>>>>>> doing >>>>>>>>> it. So I'm having some trouble understanding what the issue you're >>>>>>>>> trying >>>>>>>>> to address is. What is it in the scanningcabinet that does not work >>>>>>>>> and >>>>>>>>> that you're trying to fix? >>>>>>>>> >>>>>>>>> Or are you just asking about the existence of something like >>>>>>>>> camlistore.org/pkg/app.PathPrefix ? >>>>>>>>> >>>>>>>>> >>>>>>>>>> Thanks >>>>>>>>>> >>>>>>>>>> On Monday, January 23, 2017 at 9:28:03 AM UTC-8, mpl wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 22 January 2017 at 20:46, Steve Armstrong < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> Posted separate review so Camlistore, when getting a request >>>>>>>>>>>> for an app, will strip off the app's prefix from the url before >>>>>>>>>>>> prepending >>>>>>>>>>>> the app's host url: >>>>>>>>>>>> https://camlistore-review.googlesource.com/9207 >>>>>>>>>>>> >>>>>>>>>>>> Finally, what is the policy for updating someone else's review? >>>>>>>>>>>> I've got mpl's scancab review ( >>>>>>>>>>>> https://camlistore-review.googlesource.com/#/c/5416/) rebased >>>>>>>>>>>> onto ToT and working (here on my Github fork >>>>>>>>>>>> https://github.com/stevearm/camlistore/tree/scancab). Should I >>>>>>>>>>>> post a separate review with mpl's changes and my two small commits >>>>>>>>>>>> squashed >>>>>>>>>>>> into a single commit, or should I be updating the existing review? >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> The main reason my CL isn't up to date is because the main >>>>>>>>>>> interested party (Brad) does not have time to review it, and >>>>>>>>>>> because it's >>>>>>>>>>> not in our first priorities. Also because obviously I wouldn't >>>>>>>>>>> merge it >>>>>>>>>>> without review. >>>>>>>>>>> That said, if it gets reviewed and tested enough by others, it >>>>>>>>>>> is more acceptable for me to land it without waiting for Brad. >>>>>>>>>>> So yes, if you want you can add a patchset on top of the >>>>>>>>>>> existing CL, and we can move forward from there if there's enough >>>>>>>>>>> interest. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Thanks >>>>>>>>>>>> >>>>>>>>>>>> On Sunday, January 22, 2017 at 11:12:23 AM UTC-8, Steve >>>>>>>>>>>> Armstrong wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> I've posted the following to setup defaults for the keys I >>>>>>>>>>>>> thought should be optional: >>>>>>>>>>>>> https://camlistore-review.googlesource.com/#/c/9206/ >>>>>>>>>>>>> >>>>>>>>>>>>> On Sunday, January 22, 2017 at 9:32:50 AM UTC-8, Steve >>>>>>>>>>>>> Armstrong wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> I'm trying to get the scanningcabinet working ( >>>>>>>>>>>>>> https://camlistore-review.googlesource.com/#/c/5416/). I've >>>>>>>>>>>>>> rebased it up on ToT and it seems to be functional, but I'm >>>>>>>>>>>>>> having a lot of >>>>>>>>>>>>>> confusion with the app interface with camlistore. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I added the following to my config: >>>>>>>>>>>>>> >>>>>>>>>>>>>> "/scancab/": { >>>>>>>>>>>>>> "handler": "app", >>>>>>>>>>>>>> "enabled": true, >>>>>>>>>>>>>> "handlerArgs": { >>>>>>>>>>>>>> "prefix": "/scancab/", >>>>>>>>>>>>>> "program": "scanningcabinet", >>>>>>>>>>>>>> "listen": "127.0.0.1:2055", >>>>>>>>>>>>>> "backendURL": "http://127.0.0.1:2055/" >>>>>>>>>>>>>> } >>>>>>>>>>>>>> }, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I'd like to drop as much redundant info as possible. Why is >>>>>>>>>>>>>> "prefix" required twice? Can we plumb through the "/scancab/" >>>>>>>>>>>>>> key down into >>>>>>>>>>>>>> the handler's constructor so it has it as a default? This key >>>>>>>>>>>>>> seems to be >>>>>>>>>>>>>> how scannincabinet would call back to Camlistore. Shouldn't that >>>>>>>>>>>>>> not be >>>>>>>>>>>>>> configurable and just be a randomly generated URL that's passed >>>>>>>>>>>>>> into >>>>>>>>>>>>>> scanningcabinet when it's run (like the auth is)? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Also, "listen" or "serverListed" are required. Can't we just >>>>>>>>>>>>>> default to a random port added to Camlistore's ip if neither one >>>>>>>>>>>>>> is >>>>>>>>>>>>>> specified? >>>>>>>>>>>>>> >>>>>>>>>>>>>> "backendURL" or "serverBaseURL" is also required. Shouldn't >>>>>>>>>>>>>> it just default to whatever "listen" defaults to? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Finally, when I go to http://localhost:3179/scancab/test it >>>>>>>>>>>>>> routes to http://localhost:2055/scancab/test. I'd expect it >>>>>>>>>>>>>> to trim off the "/scancab/" prefix and route to >>>>>>>>>>>>>> http://localhost:2055/test. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I'm probably missing the goal of how this contract is >>>>>>>>>>>>>> supposed to work, and which knobs are intended to be >>>>>>>>>>>>>> configurable. Could >>>>>>>>>>>>>> someone help me out, as I don't want to submit a pull request >>>>>>>>>>>>>> that >>>>>>>>>>>>>> removes/changes a bunch of these keys and behaviours if they >>>>>>>>>>>>>> were intended. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>> Google Groups "Camlistore" group. >>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>> it, send an email to [email protected]. >>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "Camlistore" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to [email protected]. >>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "Camlistore" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to [email protected]. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> >>>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Camlistore" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Camlistore" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "Camlistore" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Camlistore" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
