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.
smime.p7s
Description: S/MIME Cryptographic Signature
