Why not make the headerName a key to an outer map, instead of using a list.
That would enforce uniqueness.


On Thu, Feb 2, 2017 at 1:23 PM Alfred Fuller <[email protected]> wrote:

Interestingly, most of the time, the extracted fields are also bound to the
url for REST, in which case the strings are URL encoded, and the bytes are
base64 encoded. So it would seem to make sense to follow suit.

On Thu, Feb 2, 2017 at 1:19 PM Alfred Fuller <[email protected]> wrote:

I think this type of config is very service centric, not interface centric.
For example, look at the LRO API. Different services use the same protobuf,
but have different resource name formats. If the requirement was copy a
field verbatim it 'might' work to define the same extraction for all
services that implement LRO, but the requirement here is that the client is
able to uniquely identify an 'affinity key', so the protocol must be able
to extract the exact substring needed.

I can also see some services implementing a routing layer that is happy to
inspect everything, and in those cases, no extraction is needed even though
the same interface is exposed.

Also, this eliminates the problems of clients using old configuration with
new infrastructure.

So I would say this is not interface configuration, so it should not be in
the interface definition (i.e. the proto files).

On Thu, Feb 2, 2017 at 1:00 PM Louis Ryan <[email protected]> wrote:

I'm a little confused by this spec. Given that protobuf is backed by a
significant amount of code-generation and expression handling machinery why
is the spec putting responsibility for the extraction and formatting of
these headers on the GRPC runtime?

Is there some requirement to be able to configure the field extraction
behavior dynamically for APIs that did not anticipate the need for it when
they were launched? If so it seems like that responsibility should rest
entirely on the protobuf runtime and the spec for GRPC should just talk
about how to talk to it to get something extracted. The same would be true
for other encoding runtimes.

Given that protobuf has (or will have) a standard expression language it
seems like that is what should be passed up to the protobuf runtime

On Wed, Feb 1, 2017 at 4:28 PM, Alfred Fuller <[email protected]> wrote:

+Trevor Schroeder <[email protected]> what is easiest for the GFE and
friends? Base64 decoding a header, url unescaping a header or something
else?

(I like the idea of %encoding for strings and base64 encoding bytes, though
if I had to pick only one it would probably be base64, as the blowup from
that is fixed and known)

On Wed, Feb 1, 2017 at 10:02 AM Mark D. Roth <[email protected]> wrote:

On Wed, Feb 1, 2017 at 9:57 AM, Eric Anderson <[email protected]> wrote:

On Wed, Feb 1, 2017 at 9:38 AM, Mark D. Roth <[email protected]> wrote:

Right off the cuff, I can think of a few possible options here:

1. Always base64-encode the extracted values.
2. Do base64 encoding only when non-ASCII characters are actually present.
3. Simply strip out non-ASCII characters.


There's also the option of encoding the special characters. Say, with
%-encoding. We're doing this for status messages. I think we are sad each
time we have to do this, but it frequently seems to be the least-bad
solution.

Note this would get pretty strange (from a parsing perspective) when values
are binary, not text. So we may want a different solution for binary.


You're right, that is another viable option.  And I do like the fact that
it makes things easier to debug in the common case, where the string is
mostly ASCII but may have a small number of non-ASCII characters.

The down-side of this approach is that, as you pointed out, we would
probably want a separate solution for binary data.  That would mean two
different code-paths and probably some way to indicate which one we want to
use for each header extraction spec.

Alfred, what are you thoughts on all of this?


-- 
Mark D. Roth <[email protected]>
Software Engineer
Google, Inc.

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CAHZencYjYi0UTkGzqca-E9oSLvUh0V33YQi92FT2vzjRSUZVbg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to