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/camli
>>>>>>> store/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.goo
>>>>>>>>> glesource.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-r
>>>>>>>>>> eview.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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to