A repository for gRFCs
Go to file
Pardhu Konakanchi 4f833c5774
A91: Outlier Detection Metrics (#478)
* Create A87-grpc-metrics-xds-outlier-detection.md

* Update A87-grpc-metrics-xds-outlier-detection.md

* Update A87-grpc-metrics-xds-outlier-detection.md

* Update A87-grpc-metrics-xds-outlier-detection.md

* Update A87-grpc-metrics-xds-outlier-detection.md

Some review feedback

* Update A87-grpc-metrics-xds-outlier-detection.md

added discussion link

* Update and rename A87-grpc-metrics-xds-outlier-detection.md to A91-outlier-detection-metrics.md

`detected` metrics description update and rename file

* Update A91-outlier-detection-metrics.md

Added backend_service optional label

* cosmetic changes

* Add missing link for A75

* Update A91-outlier-detection-metrics.md

Remove gauge metric

* Update A91-outlier-detection-metrics.md

Clarified how `grpc.lb.backend_service` label will be populated

* Update A91-outlier-detection-metrics.md

* Update A91-outlier-detection-metrics.md

* Update A91-outlier-detection-metrics.md

spacing

* Update A91-outlier-detection-metrics.md

* Update A91-outlier-detection-metrics.md

* Update A91-outlier-detection-metrics.md

remove total

* Update A91-outlier-detection-metrics.md

Changed Detected ejections to Unenforced ejections

* Update A91-outlier-detection-metrics.md

* Update A91-outlier-detection-metrics.md

Co-authored-by: Doug Fawley <dfawley@google.com>

* Update A91-outlier-detection-metrics.md

Fixed naming of label

* Update A91-outlier-detection-metrics.md

typo

* Update A91-outlier-detection-metrics.md

Another typo

---------

Co-authored-by: Mark D. Roth <roth@google.com>
Co-authored-by: Doug Fawley <dfawley@google.com>
2025-07-08 14:21:32 -07:00
A6_graphics Add more diagrams to retry design 2017-08-24 18:40:38 -07:00
A14_graphics Fix typo in A14-channelz (#146) 2019-06-04 11:13:56 -07:00
A27_graphics A27: xDS-Based Global Load Balancing (#170) 2020-03-18 11:25:53 -07:00
A28_graphics A28: gRPC xDS traffic splitting and routing (#178) 2020-06-15 16:44:34 -07:00
A31_graphics A31: xDS Timeout Support and Config Selector Design (#192) 2020-09-18 08:41:16 -07:00
A37_graphics A37: xDS Aggregate and Logical DNS Clusters (#216) 2021-02-11 15:20:58 -08:00
A42_graphics A42: xDS Ring Hash LB Policy (#239) 2021-06-09 11:09:37 -07:00
A44_graphics A44: gRPC xDS Retry Support (#253) 2021-08-16 17:26:35 -07:00
A50_graphics A50: gRPC xDS Outlier Detection Support (#281) 2022-02-16 13:01:15 -08:00
A52_graphics A52: gRPC xDS Custom Load Balancer Configuration (#298) 2022-05-09 10:01:54 -07:00
A55_graphics A55: Stateful session affinity for gRPC clients (#319) 2023-01-24 08:17:52 -08:00
A60_graphics A60: xDS WeightedClusters support for Stateful Session Affinity (#348) 2023-04-27 23:54:49 +05:30
A68_graphics A68: Random subsetting with rendezvous hashing LB policy (#423) 2024-08-19 08:28:57 -07:00
A69_graphics A69: Certificate Revocation List Enhancements (#382) 2025-03-05 10:06:03 -05:00
A74_graphics A74: xDS Config Tears (#404) 2024-02-15 17:08:57 -08:00
A75_graphics A75: xDS Aggregate Cluster Behavior Fixes (#405) 2024-03-04 13:57:53 -08:00
A79_graphics A79: Non-per-call Metrics Architecture (#421) 2024-04-08 13:27:18 -07:00
L9_graphics L9: new balancer and resolver APIs for gRPC-go (#30) 2018-02-06 15:58:08 -08:00
L38_graphics L38 initial proposal 2018-09-24 14:28:28 -07:00
L50_graphics L50: gRPC Objective-C Interceptor (#140) 2019-06-02 21:14:08 -07:00
L55_graphics L55 - gRPC Objective-C Global Interceptor (#150) 2019-07-10 12:23:34 -07:00
L56_graphics L56 objc bazel support (#153) 2019-08-22 10:42:02 -07:00
L63_graphics L63: Core/C++ CallCredentials DebugString() (#171) 2020-02-27 14:30:28 -08:00
L73-java-binderchannel binder: Wireformat changes in support of stream flow control (#408) 2024-01-16 11:48:08 -08:00
L96_graphics L96: .NET: Load balancing, connectivity and wait for ready in client (#240) 2022-03-08 15:49:05 +01:00
.gitignore Git ignore DS_Store 2017-03-09 11:38:14 -08:00
A1-http-connect-proxy-support.md Reference Java APIs for implemented proposals 2018-04-04 07:07:19 -07:00
A2-service-configs-in-dns.md Update after A21 service config error handling changes (#133) 2019-03-08 13:29:34 -08:00
A3-channel-tracing.md Add more better phrasing 2018-10-04 13:02:05 -07:00
A5-grpclb-in-dns.md Document gRPCLB dual protocol (http+https) workaround 2018-06-20 09:09:52 -07:00
A6-client-retries.md A6 update: change specification of backoff behavior to make sense (#452) 2024-08-29 08:14:35 -07:00
A8-client-side-keepalive.md typo: update A8-client-side-keepalive.md (#497) 2025-05-27 08:35:19 -07:00
A9-server-side-conn-mgt.md keepalive: Document C's option names 2018-07-12 10:42:21 -07:00
A10-avoid-grpclb-and-service-config-for-localhost-and-ip-literals.md minor wording fix 2018-11-01 01:11:57 -07:00
A14-channelz.md Fix typo in A14-channelz (#146) 2019-06-04 11:13:56 -07:00
A15-promote-reflection.md A15: Promote Reflection Proto out of Alpha 2018-06-13 13:50:44 -07:00
A16-binary-logging.md A16-binary-logging: fix config format (#195) 2020-07-14 11:04:45 -07:00
A17-client-side-health-checking.md Specify validation rule 2019-03-01 17:03:52 -08:00
A18-tcp-user-timeout.md Update A18: Java was implemented in 2019 (#400) 2023-11-07 15:51:26 -08:00
A21-service-config-error-handling.md A21 update: Add note on fallback to default service config if no service config is found (#142) 2022-09-06 17:20:01 -07:00
A24-lb-policy-config.md A24: Update GrpcLbConfig to add child policy in LoadBalancingConfig (#137) 2019-03-25 13:50:43 -07:00
A26-grpclb-selection.md A26: gRPCLB Selection (#164) 2019-11-08 09:31:53 -08:00
A27-xds-global-load-balancing.md A27 update: note restrictions on locality priority and weight, and on addresses (#332) 2022-10-13 10:32:40 -07:00
A28-xds-traffic-splitting-and-routing.md A28 update: fake content-type header and exclude -bin headers (#378) 2023-07-18 15:20:42 -07:00
A29-xds-tls-security.md A29: xDS-Based Security for gRPC Clients and Servers (#243) 2021-08-30 11:42:43 -07:00
A30-xds-v3.md A30 update: remove info about ongoing xDS version changes (#333) 2022-10-25 08:32:01 -07:00
A31-xds-timeout-support-and-config-selector.md A31: update xds field names to reflect recent changes (#209) 2020-09-24 12:22:37 -07:00
A32-xds-circuit-breaking.md A32: mention circuit breaking atomics are shared globally for entire client process (#220) 2021-02-12 16:32:29 -08:00
A33-Fault-Injection.md Patch the gRFC A33 with details around 200/OK and headers (#225) 2021-03-01 14:17:23 -08:00
A36-xds-for-servers.md Update the C++ API for connection drain grace time (#280) 2022-01-19 11:30:20 -08:00
A37-xds-aggregate-and-logical-dns-clusters.md A61 update: remove special case for LOGICAL_DNS clusters (#477) 2025-03-06 14:07:19 -08:00
A38-admin-interface-api.md A38: Admin Interface API (#218) 2021-03-05 13:20:59 -08:00
A39-xds-http-filters.md A39 update: Require that the HTTP filter list be non-empty. (#266) 2021-10-07 10:32:47 -07:00
A40-csds-support.md A88: xDS Data Error Handling (#466) 2025-03-27 10:09:48 -07:00
A41-xds-rbac.md A41: Call out precise HeaderMatcher.invert_match semantics (#270) 2022-06-06 16:16:18 -07:00
A42-xds-ring-hash-lb-policy.md A61 update: fix ring_hash proactive connection attempt logic (#475) 2025-02-14 14:49:43 -08:00
A43-grpc-authorization-api.md A43: gRPC Authorization API (#246) 2022-02-04 13:18:42 -08:00
A44-xds-retry.md A44: gRPC xDS Retry Support (#253) 2021-08-16 17:26:35 -07:00
A45-retry-stats.md grfc: fix typo in the title of A45 (#324) 2022-08-25 16:43:50 -07:00
A46-xds-nack-semantics-improvement.md A46: xDS NACK Semantics Improvement (#260) 2021-09-20 12:52:24 -07:00
A47-xds-federation.md A47 update: fix spec for data plane authority (#420) 2024-02-27 13:28:53 -08:00
A48-xds-least-request-lb-policy.md Update A48: remove reference to Go's base balancer (#387) 2023-11-07 13:14:56 -08:00
A50-xds-outlier-detection.md A50 update: Explicitly mention that attributes are not used, and explain why (#396) 2023-10-06 11:20:10 -07:00
A51-custom-backend-metrics.md Update link to LoadReport proto (#409) 2024-01-10 13:36:53 -08:00
A52-xds-custom-lb-policies.md A37, A42, and A52 update: clarify aggregate cluster handling, and LB policy registry algorithm (#390) 2023-08-24 13:25:42 -07:00
A53-xds-ignore-resource-deletion.md A53 Update: Typo in #Background (#490) 2025-04-16 15:40:09 -07:00
A54-restrict-control-plane-status-codes.md A54: Restrict Control-Plane Status Codes (#314) 2022-08-24 16:19:33 -07:00
A55-xds-stateful-session-affinity.md update status and implementation details (#347) 2023-03-21 14:26:43 -07:00
A56-priority-lb-policy.md A56: priority LB policy (#321) 2022-12-06 14:33:53 -08:00
A57-xds-client-failure-mode-behavior.md A57: XdsClient Failure Mode Behavior (#335) 2022-11-15 09:32:35 -08:00
A58-client-side-weighted-round-robin-lb-policy.md A58 update: Prefer application_utilization to cpu_utilization (#373) 2023-06-07 08:14:30 -07:00
A59-audit-logging.md fix typos in A59 audit logging (#442) 2024-06-14 11:13:47 -07:00
A60-xds-stateful-session-affinity-weighted-clusters.md A60: xDS WeightedClusters support for Stateful Session Affinity (#348) 2023-04-27 23:54:49 +05:30
A61-IPv4-IPv6-dualstack-backends.md A61 update: remove special case for LOGICAL_DNS clusters (#477) 2025-03-06 14:07:19 -08:00
A62-pick-first.md A62 update: clarify that shuffling happens upon address list update (#375) 2023-06-08 07:50:50 -07:00
A63-xds-string-matcher-in-header-matching.md A63: xDS StringMatcher in Header Matching (#359) 2023-05-18 13:05:22 -07:00
A64-lrs-custom-metrics.md A85: Changes to xDS LRS Custom Metrics Support (#454) 2024-11-19 14:57:46 -08:00
A65-xds-mtls-creds-in-bootstrap.md A65: mTLS Credentials in xDS Bootstrap File (#372) 2023-06-09 13:49:50 -07:00
A66-otel-stats.md A66 update: Update OpenTelemetry Java APIs (#439) 2024-05-29 11:18:48 -07:00
A68-random-subsetting.md A68: Random subsetting with rendezvous hashing LB policy (#423) 2024-08-19 08:28:57 -07:00
A69-crl-enhancements.md A69: Certificate Revocation List Enhancements (#382) 2025-03-05 10:06:03 -05:00
A71-xds-fallback.md A71 update: Clarify when resource watchers are notified of connectivity problems (#473) 2025-02-07 14:09:27 -08:00
A72-open-telemetry-tracing.md A72 clarifications and corrections (#474) 2025-02-11 12:42:30 -08:00
A74-xds-config-tears.md A74 update: fix aggregate cluster behavior for non-existing underlying cluster (#500) 2025-07-01 14:58:53 -07:00
A75-xds-aggregate-cluster-behavior-fixes.md A89: Backend Service Metric Label (#471) 2025-04-02 13:31:41 -07:00
A76-ring-hash-improvements.md A76: Improvements to the Ring Hash LB Policy (#412) 2024-12-23 10:34:02 -08:00
A78-grpc-metrics-wrr-pf-xds.md A88: xDS Data Error Handling (#466) 2025-03-27 10:09:48 -07:00
A79-non-per-call-metrics-architecture.md A79 update: Add Go APIs (#461) 2024-11-07 16:37:31 -08:00
A81-xds-authority-rewriting.md A81: xDS Authority Rewriting (#435) 2024-08-16 16:34:23 -07:00
A82-xds-system-root-certs.md A82 update: fix field name and improve wording (#451) 2024-08-26 08:22:52 -07:00
A83-xds-gcp-authn-filter.md A83 Update: Add Java implementation link (#487) 2025-04-03 09:05:19 -07:00
A85-lrs-custom-metrics-changes.md A85: Changes to xDS LRS Custom Metrics Support (#454) 2024-11-19 14:57:46 -08:00
A86-xds-http-connect.md Add Java implementation link to A86-xds-http-connect.md (#480) 2025-03-10 21:27:27 +05:30
A87-mtls-spiffe-support.md A87: mTLS SPIFFE Support (#462) 2025-04-01 08:57:45 -07:00
A88-xds-data-error-handling.md A88: xDS Data Error Handling (#466) 2025-03-27 10:09:48 -07:00
A89-backend-service-metric-label.md A89: Backend Service Metric Label (#471) 2025-04-02 13:31:41 -07:00
A90-health-service-list-method.md A90: Add List Method to gRPC Health Service (#468) 2025-03-13 16:11:16 -07:00
A91-outlier-detection-metrics.md A91: Outlier Detection Metrics (#478) 2025-07-08 14:21:32 -07:00
A96-retry-otel-stats.md A96: OTel Metrics for Retries (#488) 2025-07-01 14:16:19 -07:00
A97-xds-jwt-call-creds.md A97: xDS JWT Call Credentials (#492) 2025-06-16 15:54:26 -07:00
CODE-OF-CONDUCT.md Add CODE-OF-CONDUCT.md, GOVERNANCE.md and update README.md (#160) 2019-09-26 09:39:05 -07:00
G1-true-binary-metadata.md Review feedback 2017-04-04 15:25:23 -07:00
G2-http3-protocol.md Update G2-http3-protocol.md (#331) 2022-11-11 13:53:19 -08:00
GOVERNANCE.md Add CODE-OF-CONDUCT.md, GOVERNANCE.md and update README.md (#160) 2019-09-26 09:39:05 -07:00
GRFC-TEMPLATE.md template: add section for environment variable protection (#222) 2021-03-11 10:30:42 -08:00
L1-cpp-stream-coalescing.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L2-cpp-completion-queue-creation-api.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L5-node-client-interceptors.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L6-core-allow-cpp.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L7-go-metadata-api.md L7: Go Metadata API proposal (#25) 2018-01-17 09:49:44 -08:00
L8-cpp-internalization.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L9-go-resolver-balancer-API.md L9: new balancer and resolver APIs for gRPC-go (#30) 2018-02-06 15:58:08 -08:00
L11-ruby-interceptors.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L12-csharp-interceptors.md Update status to Approved 2018-06-07 08:16:51 -07:00
L13-python-interceptors.md Update status to Approved 2019-02-01 15:47:39 -08:00
L15-php-interceptors.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L17-cpp-sync-server-exceptions.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L18-core-remove-grpc-alarm.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L21-core-gpr-review.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L22-cpp-change-grpcpp-dir-name.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L23-node-protobufjs-library.md make load, loadSync accept multiple files at once (#143) 2019-05-16 10:25:31 -07:00
L24-cpp-extensible-api.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L25-cpp-expose-buffer-reader-writer.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L26-cpp-raw-codegen-api.md Update and rename gRFC 2018-07-02 10:53:02 -07:00
L29-cpp-opencensus-filter.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L30-cpp-control-max-threads-in-SyncServer.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L31-php-intercetor-api-change.md L31: PHP interceptor API change with deserialize argument 2018-10-24 13:32:04 -07:00
L32-node-channel-API.md Expand createCall documentation in L32 2018-06-27 12:52:01 -07:00
L33-node-checkServerIdentity-callback.md Updated approver and discussion link thread. 2018-07-23 11:10:25 -07:00
L34-cpp-opencensus-span-api.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L35-node-getAuthContext.md L35 update: expand getAuthContext return contents in grpc-js (#479) 2025-03-10 16:42:16 -07:00
L38-objc-api-upgrade.md Mark status as Final 2019-01-04 14:54:13 -08:00
L39-core-remove-grpc-use-signal.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L40-node-call-invocation-transformer.md L40: resolve comments on PR 2018-09-27 10:45:01 -07:00
L41-node-server-async-bind.md L41: Add error to callback 2018-09-28 12:27:46 -07:00
L42-python-metadata-flags.md Update the compare phrase between ChannelReadyFuture and wait-for-ready 2018-11-07 16:26:29 -08:00
L43-node-type-info.md L43 update: Add serialize and deserialize methods to proto type objects (#503) 2025-07-01 15:54:07 -07:00
L44-python-rich-status.md Fix typo 2019-02-22 15:50:18 -08:00
L45-cpp-server-load-reporting.md Rename L38-cpp.. 2019-01-24 16:30:08 -08:00
L46-python-compression-api.md L46: Python Compression API (#125) 2019-04-09 15:15:42 -07:00
L48-node-metadata-options.md L48: Node Metadata options (#127) 2019-03-15 13:27:50 -07:00
L49-objc-flow-control.md Update status of flow control to "approved" 2019-05-20 09:53:01 -07:00
L50-objc-interceptor.md L50: gRPC Objective-C Interceptor (#140) 2019-06-02 21:14:08 -07:00
L51-java-rm-nano-proto.md L51: Java Remove Nano Protobuf 2019-05-21 17:58:10 -07:00
L52-core-static-method-host.md gRFC for static method and host. (#148) 2019-08-09 13:52:55 -04:00
L54-python-server-wait.md L54: Python Server Wait API (#149) 2019-08-05 15:56:16 -07:00
L55-objc-global-interceptor.md L55 - gRPC Objective-C Global Interceptor (#150) 2019-07-10 12:23:34 -07:00
L56-objc-bazel-support.md L56: fix spelling mistaks (#157) 2019-08-23 11:04:31 -07:00
L57-csharp-new-major-version.md L57 - C# 2.x release (#154) 2019-07-30 05:31:04 -07:00
L58-python-async-api.md L58: Async API for gRPC Python (#155) 2020-05-26 10:25:34 -07:00
L59-core-allow-cppstdlib.md L59 - Allow C++ standard library in gRPC Core Library (#156) 2019-09-05 11:20:16 -07:00
L60-core-remove-custom-allocator.md L60: Remove custom allocation function overrides from core surface API (#162) 2019-10-31 14:13:32 -07:00
L62-core-call-credential-security-level.md gRFC L62-core:gRPC security level negotiation between channels and call creds (#167) 2020-01-06 10:34:31 -08:00
L63-core-call-credentials-debug-string.md L63: Core/C++ CallCredentials DebugString() (#171) 2020-02-27 14:30:28 -08:00
L64-python-runtime-proto-parsing.md Update simple stubs status to implemented (#207) 2020-09-08 16:24:18 -07:00
L65-python-package-name.md L65: Additional PyPI Packages for gRPC Python (#177) 2020-06-01 10:00:02 -07:00
L66-core-cancellation-status.md L66: Core server RPCs will not report cancellation if completed with non-OK status (#179) 2020-06-11 09:07:44 -07:00
L67-cpp-callback-api.md L67: C++ callback-based asynchronous API (#180) 2021-05-27 14:52:01 -07:00
L68-core-callback-api.md L68: Core callback completion queue (#181) 2020-06-23 12:44:19 -07:00
L70-node-proto-loader-type-generator.md L70 update: Type branding for proto-loader-gen-types (#342) 2022-12-05 07:37:54 -08:00
L72-core-google_default_credentials-extension.md L72: Allow Call Credentials to be Specified in `grpc_google_default_credentials_create` (#190) 2020-07-20 11:44:56 -07:00
L73-java-binderchannel.md L73-java-binderchannel - Remove OnDevice*Builder. (#313) 2022-07-06 09:00:52 -07:00
L74-java-channel-creds.md L74: Fix missed updates to factory methods (#235) 2021-05-06 15:43:58 -07:00
L75-core-remove-grpc-channel-ping.md L75: Proposal to remove grpc_channel_ping from core surface API (#203) 2020-09-08 11:32:16 -07:00
L77-core-cpp-third-party-identity-support-for-call-credentials.md L77: Core and C++ Third Party Identity Support for Call Credentials (#221) 2021-02-08 13:55:47 -08:00
L78-python-rich-server-context.md L78: Python: Expose rich server context (#224) 2021-03-31 10:19:01 -07:00
L79-cpp-byte-buffer-slice-methods.md L79: C++ API changes on ByteBuffer and Slice (#232) 2021-05-25 13:36:18 -07:00
L80-cpp-async-response-reader-destruction.md L80: change to only a minor version bump. (#242) 2021-06-05 10:20:23 -04:00
L84-cpp-call-failed-before-recv-message.md L84: Add grpc_call_failed_before_recv_message() to C-core API (#257) 2021-09-09 10:16:07 -07:00
L86-aspect-based-python-bazel-rules.md L86: Start new gRFC for aspect-based python bazel rules (#263) 2021-10-21 16:38:34 -07:00
L88-cpp-absl-status-conversions.md L88-cpp: Add conversion operators between absl::Status and grpc::Status. (#273) 2021-11-16 09:20:02 -08:00
L89-core-remove-grpc-insecure-channel-creation-api.md L89: C-core: Remove grpc_insecure_channel_create and grpc_server_add_insecure_http2_port from Core Surface API (#272) 2022-03-29 14:52:37 -07:00
L91-improved-directory-support-for-python-bazel-rules.md L91: Improved handling of subdirectories and external repositories for py_proto_library (#277) 2021-12-13 10:07:10 -08:00
L92-dotnet-grpc-web.md L92: grpc-dotnet gRPC-Web proposal (#169) 2022-01-04 15:35:35 +01:00
L93-node-securecontext-creds.md L93: Add a new Node API to create credentials from a SecureContext (#282) 2022-01-10 14:05:43 -08:00
L94-core-eliminate-slice-interning.md L94: C-core: Eliminate slice interning (#284) 2022-01-25 08:09:31 -08:00
L95-python-reflection-client.md L95: Python reflection client (#286) 2022-02-10 09:51:19 -08:00
L96-csharp-load-balancing.md L96: .NET: Load balancing, connectivity and wait for ready in client (#240) 2022-03-08 15:49:05 +01:00
L98-requiring-cpp14.md Update L98-requiring-cpp14 to have the OSS policy doc (#312) 2022-06-30 13:22:34 -07:00
L99-core-eliminate-corking.md L99: C-core: Eliminate corking (#316) 2022-08-16 07:00:18 -07:00
L100-core-narrow-call-details.md L100: C-core: Narrow grpc_call_details (#317) 2022-08-16 07:00:07 -07:00
L101-core-remove-grpc_register_plugin.md L101: Remove grpc_register_plugin (#325) 2022-09-20 07:41:05 -07:00
L102-cpp-version-macros.md Added L102-cpp-version-macros (#327) 2022-10-27 15:55:45 -07:00
L103-core-move-insecure-creds-declaration.md L103: C-core: Move insecure credentials functions into their own header file (#329) 2022-11-17 09:58:03 -08:00
L104-core-ban-recv-with-send-status.md L104: Ban GRPC_OP_SEND_STATUS_FROM_SERVER in combination with recv ops (#336) 2023-01-14 08:33:59 -08:00
L105-python-expose-new-error-types.md L105: Python Add New Error Types (#388) 2023-09-27 09:46:48 -07:00
L106-node-heath-check-library.md L106: Node Heath Check Library 2.0 (#391) 2023-09-13 16:59:22 -07:00
L107-node-noop-start.md L107: Node: Make `Server#start` a no-op (#395) 2023-10-17 14:55:20 -07:00
L108-node-grpc-reflection-library.md L108: Node.js Reflection Server Library (#397) 2023-11-08 15:20:24 -08:00
L109-node-server-unbind.md L109: Node: Server API to unbind ports (#398) 2023-11-08 13:52:21 -08:00
L110-csharp-nullable-reference-types.md L110: C# nullable reference types proposal (#394) 2023-10-23 09:54:06 -07:00
L111-node-server-drain.md L111: Node: Server API to drain connections on a port (#401) 2023-12-01 11:43:50 -08:00
L112-node-server-interceptors.md L112 update: Add getConnectionInfo and getAuthContext to ServerInterceptingCall (#483) 2025-03-13 11:19:23 -07:00
L113-core-remove-num-external-connectivity-watchers.md L113: C-core: Remove `grpc_channel_num_external_connectivity_watchers()` (#417) 2024-02-20 09:59:53 -08:00
L114-node-server-connection-injection.md L114: Node Server Connection Injection (#418) 2024-02-23 11:03:47 -08:00
L115-core-refactor-generic-service-stub.md L115: Refactor generic service and generic stub (#426) 2024-05-13 18:14:17 -07:00
L116-core-loosen-max-pings-without-data.md L116: C++-Core: Loosen behavior of GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA (#429) 2024-05-16 15:12:04 -07:00
L117-core-replace-gpr-logging-with-abseil-logging.md L117 update: Add 3 new absl wrapper functions (#450) 2024-08-29 09:06:34 +05:30
L118-core-remove-cronet.md L118: Remove Cronet (#448) 2024-09-04 08:12:22 -07:00
L119-python-add-typing-to-sync-api.md proposal for adding python-typings to sync api (#459) 2024-10-24 15:42:16 +00:00
L120-requiring-cpp17.md L120: Requiring C++17 (#460) 2024-12-13 10:22:15 -08:00
L121-removing-core-cpp-public-hdrs L121: Deprecating and removing the `grpc++_public_hdrs` target (#470) 2025-01-14 14:53:39 -08:00
L122-core-remove-gpr_atm_no_barrier_clamped_add.md L122: Remove core function gpr_atm_no_barrier_clamped_add (#495) 2025-05-12 18:47:03 -07:00
LICENSE Change license to Apache 2.0 2017-08-29 23:40:50 -07:00
P1-cloud-native.md Add convention for naming files 2017-03-13 16:58:23 -07:00
P3-grfcs-for-core-api-changes.md P3: Core API changes (including additions) need a gRFC (#52) 2018-02-02 08:45:32 -08:00
P4-grpc-cve-process.md P4 update: Remove dead link to ISSUE_TEMPLATE (#376) 2023-06-09 13:14:14 -07:00
P5-jdk-version-support.md P5: JDK Version Support Policy (#283) 2022-01-14 13:50:37 -08:00
P6-grpc-io-announce.md P6: grpc-io-announce mailing list (#458) 2024-10-30 13:00:53 -07:00
README.md Copy edit README.md (#176) 2020-05-28 08:46:42 -07:00

README.md

gRPC RFCs

Introduction

Please read the gRPC organization's governance rules and contribution guidelines before proceeding.

This repo contains the design proposals for substantial feature changes for gRPC that need to be designed upfront. The goal of the upfront design process is to:

  • Provide increased visibility to the community on upcoming changes and the design considerations around them.
  • Provide ability to reason about larger “sets” of changes that are too big to be covered either in an Issue or in a PR.
  • Establish a consistent process for structured participation by the community on large changes, especially those that impact multiple runtimes and implementations.

Prerequisites

This process needs to be followed for any significant change to gRPC that needs design. Changes that are considered significant can be:

  • Features that need implementation across runtimes and languages.
  • Process changes that affect how the gRPC product is implemented.
  • Breaking changes to the public API (i.e. semver major changes).

Process

  1. Fork the repo and copy the template GRFC-TEMPLATE.md.
  2. Rename it to $CategoryName-$Summary, eg.: A6-client-retries.md (see category definitions below)
    • For language-specific proposals, include the name of the language: L##-$Language-$Summary. Canonical names: core, cpp, csharp, go, java, node, objc, php, python, ruby.
  3. Write up the RFC.
  4. Submit a Pull Request.
  5. Someone from gRPC team will be assigned as an APPROVER as part of this review. Once the APPROVER is assigned, the OWNER needs to start a discussion on grpc-io and update the PR with the discussion link. After this is done, the OWNER should update the gRFC to the state of In Review. It is expected that the APPROVER will help the OWNER along this process as needed.
  6. For at least a period of 10 business days (the minimum comment period), it is expected that the OWNER will respond to the comments and make updates to the RFC as new commits to the PR. Through the process, the discussion needs to be kept to the designated thread in the mailing list in order to avoid splintering conversations. The OWNER is encouraged to solicit as much feedback on the proposal as possible during this period. PR comments should be limited to formatting and vocabulary.
  7. If there is consensus as deemed by the APPROVER during the comment period, the APPROVER will mark the proposal as final and assign it a gRFC number. Once this is assigned (as part of the closure of discussion), the OWNER will update the state of the PR as final and submit the PR. Commits must not be squashed; the commit history serves as a log of changes made to the proposal.

APPROVER

  • By default a11r is the approver unless another approver is assigned on a per-proposal basis.
  • If the assigned APPROVER and the OWNER cannot satisfactorily settle an issue, the final APPROVER is still a11r.

Proposal Categories

The proposals shall be numbered in increasing order.

  • #An - Affects all languages.
  • #Pnn - Affects processes, such as the proposal process itself.
  • #Lnnn - Language specific changes to external APIs or platform support.
  • #Gnnnn - Protocol level changes.

Proposal Status

  1. Every uncommitted proposal candidate starts off in the Draft state.
  2. After it accepted for review and posted to the group, it enters the In Review state.
  3. Once it is approved for submission by the arbiter, it goes into the Final state. Only minor changes are allowed (what qualifies as minor is left to the APPROVER).
  4. If a proposal needs to be revisited, it can be moved back to the Draft or In Review state. This can happen if issues are discovered during implementation. At which point, the review process as described above must be followed.
  5. Once a proposal is Final and if it has been implemented by a language, it can be updated to a status of Implemented with the implementing languages listed. (Listing versions is not required.)