I responded on https://github.com/grpc/grpc-java/issues/7164 . In short,
full-stream decompression is not fully implemented and should not be used.

On Thu, Jun 25, 2020 at 6:04 AM <[email protected]> wrote:

> Sorry wrong flag posted. C++ actual flag in client is
> "GRPC_COMPRESS_STREAM_GZIP".
>
> Thanks,
> Parth
>
> On Thursday, June 25, 2020 at 6:32:19 PM UTC+5:30, [email protected] wrote:
>>
>> HI,
>>
>> grpc-core supports "GRPC_COMPRESS_GZIP" flag to provide full stream level
>> gzip compression.
>>
>> In grpc-java we have gzip inflater is already implemented. This was used
>> and client side support for full-stream decompression is already
>> implemented (#3403 <https://github.com/grpc/grpc-java/pull/3403>).
>>
>> I am looking for server side capabilities in grpc-java which can support
>> full-stream decompression.
>> Currently we are doing this by patch on ServerImpl.java for checking
>> "Content-Encoding" header and  setting GzipInflatingBuffer on
>> AbstractServerStream.
>>
>> @@ -21,6 +21,7 @@
>>  import static
>> com.google.common.util.concurrent.MoreExecutors.directExecutor;
>>  import static io.grpc.Contexts.statusFromCancelled;
>>  import static io.grpc.Status.DEADLINE_EXCEEDED;
>> +import static io.grpc.internal.GrpcUtil.CONTENT_ENCODING_KEY;
>>  import static io.grpc.internal.GrpcUtil.MESSAGE_ENCODING_KEY;
>>  import static io.grpc.internal.GrpcUtil.TIMEOUT_KEY;
>>  import static java.util.concurrent.TimeUnit.NANOSECONDS;
>> @@ -52,6 +53,7 @@
>>  import io.grpc.ServerServiceDefinition;
>>  import io.grpc.ServerTransportFilter;
>>  import io.grpc.Status;
>> +import io.grpc.internal.AbstractServerStream;
>>  import io.perfmark.Link;
>>  import io.perfmark.PerfMark;
>>  import io.perfmark.Tag;
>> @@ -494,6 +496,14 @@
>>          }
>>          stream.setDecompressor(decompressor);
>>        }
>> +
>> +      if (headers.containsKey(CONTENT_ENCODING_KEY)) {
>> +        String streamEncoding = headers.get(CONTENT_ENCODING_KEY);
>> +        if (streamEncoding.equalsIgnoreCase("gzip") && stream instanceof
>> AbstractServerStream) {
>> +          ((AbstractServerStream)stream).transportState()
>> +            .setFullStreamDecompressor(new GzipInflatingBuffer());
>> +        }
>> +      }
>>
>>        final StatsTraceContext statsTraceCtx = Preconditions.checkNotNull(
>>            stream.statsTraceContext(), "statsTraceCtx not present from
>> stream");
>> @@ -554,14 +564,10 @@
>>
>>
>>
>> Is there any other way to achieve similar thing without patch?
>> If it can not be achieved without patch can we submit a ticket and patch
>> for grpc-java project?
>>
>> Thanks,
>> Parth
>>
> --
> 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 view this discussion on the web visit
> https://groups.google.com/d/msgid/grpc-io/68c2d7bc-98d9-4c43-91b6-f972e8413d17o%40googlegroups.com
> <https://groups.google.com/d/msgid/grpc-io/68c2d7bc-98d9-4c43-91b6-f972e8413d17o%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CA%2B4M1oNLWwZzuBinD70U6Z4UhOyL46XYMOnsErbzshgyHVKahg%40mail.gmail.com.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to