Skip to content
Snippets Groups Projects
Commit b1e5bac3 authored by Muxi Yan's avatar Muxi Yan
Browse files

Add /doc/workarounds.md

parent bc60bb25
Branches
Tags
No related merge requests found
# gRPC Server Backward Compatibility Issues and Workarounds Manageent
## Introduction
This document lists the workarounds implemented on gRPC servers for record and reference when users need to enable a certain workaround.
## Workaround Lists
| Workaround ID | Date added | Issue | Workaround Description | Status |
|-------------------------------------|--------------|---------------------------------------------------|------------------------------------------------------|--------------------------|
| WORKAROUND\_ID\_CRONET\_COMPRESSION | May 06, 2017 | Before version v1.3.0-dev, gRPC iOS client's | Implemented as a server channel filter in C core. | Implemented in C and C++ |
| | | Cronet transport did not implement compression. | The filter identifies the version of peer client | |
| | | However the clients still claim to support | with incoming `user-agent` header of each call. If | |
| | | compression. As a result, a client fails to parse | the client's gRPC version is lower that or equal to | |
| | | received message when the message is compressed. | v1.3.x, a flag GRPC\_WRITE\_NO\_COMPRESS is marked | |
| | | | for all send\_message ops which prevents compression | |
| | | The problem above was resolved in gRPC v1.3.0-dev.| of the messages to be sent out. | |
| | | For backward compatibility, a server must | | |
| | | forcingly disable compression for gRPC clients of | | |
| | | version lower than or equal to v1.3.0-dev. | | |
...@@ -186,7 +186,7 @@ class ServerBuilder { ...@@ -186,7 +186,7 @@ class ServerBuilder {
/// Enable a server workaround. Do not use unless you know what the workaround /// Enable a server workaround. Do not use unless you know what the workaround
/// does. For explanation and detailed descriptions of workarounds, see /// does. For explanation and detailed descriptions of workarounds, see
/// docs/workarounds.md. /// doc/workarounds.md.
ServerBuilder& EnableWorkaround(uint32_t id); ServerBuilder& EnableWorkaround(uint32_t id);
private: private:
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
/* The list of IDs of server workarounds currently maintained by gRPC. For /* The list of IDs of server workarounds currently maintained by gRPC. For
* explanation and detailed descriptions of workarounds, see * explanation and detailed descriptions of workarounds, see
* /docs/workarounds.md * /doc/workarounds.md
*/ */
typedef enum { typedef enum {
GRPC_WORKAROUND_ID_CRONET_COMPRESSION = 0, GRPC_WORKAROUND_ID_CRONET_COMPRESSION = 0,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment