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/f7e36515-588b-424b-a2c9-28e0a2b29654o%40googlegroups.com.
