grpc / grpc/grpc-java

binder: BinderChannelBuilder and BinderServerBuilder should implement maxInboundMessageSize()

Offen
#12,744 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

binder enhancement
Vorherrschende Sprache
Java
Sterne
12.1k
Forks
4k
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
37

Beschreibung

Is your feature request related to a problem?

Yes. Senders can trivially OOM a peer with an unending sequence of non-empty stream transactions with the FLAG_MESSAGE_DATA_IS_PARTIAL flag set.

Describe the solution you'd like

grpc-binder should establish a default value for client and server maxInboundMessageSize(). If a receiver sees a transaction that would cause the next message to exceed this limit, it should "out of band close" the stream with RESOURCE_EXHAUSTED.

Describe alternatives you've considered

None

Additional context

Even with stream flow control receivers must ack transactions whenever the application has request()ed at least one message. That design had been relying on this message-layer limit but grpc-binder doesn't seem to implement one.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne bei BinderChannelBuilder und BinderServerBuilder und verfolge anschließend die Verarbeitung von grpc-binder-Streamtransaktionen für FLAG_MESSAGE_DATA_IS_PARTIAL. Ermittle das standardmäßige Limit für eingehende Nachrichten sowie den Empfängerpfad, der den Stream mit RESOURCE_EXHAUSTED schließen sollte, wenn die nächste Nachricht dieses Limit überschreiten würde. Als abgeschlossen gilt die Aufgabe, wenn beide Builder das Limit bereitstellen und Sequenzen übergroßer partieller Nachrichten abgewiesen werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
backend-api-design, networking
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.