grpc / grpc/grpc-java

binder: A Server might check its SecurityPolicy even after declaring termination

Offen
#12,938 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
12.1k
Forks
4k
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
37

Beschreibung

### What version of gRPC-Java are you using?
master/HEAD on any version of Android

### What did you expect to see?
Some reasoning/guarantee that a `BinderServerTransport` will no longer call into its SecurityPolicy after it declares termination.

### Steps to reproduce the bug
One of many ways is to call call `shutdownNow()` while it's processing the first call to one of its services.

### Analysis
`BinderServerTransport` has this problem when using either `AsyncSecurityPolicy` or ordinary `SecurityPolicy`. It checks these policies from the `BinderTransportSecurity.ServerAuthInterceptor` which runs on the server's `executor()` without coordination or synchronization with the transport. A call to `shutdownInternal()` w/`forceTerminate=true` can move the transport to `SHUTDOWN_TERMINATED` and call `ServerTransportListener#transportTerminated` with streams still in-flight.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Verfolge BinderServerTransport.shutdownInternal(), BinderTransportSecurity.ServerAuthInterceptor und den Transport-Executor, um zu verstehen, wie sich die Beendigung mit Prüfungen der Sicherheitsrichtlinie überschneidet. Prüfe den Pfad ServerTransportListener#transportTerminated und den Fall forceTerminate; abgeschlossen bedeutet, dass das Verhalten sowohl für AsyncSecurityPolicy als auch für die gewöhnliche SecurityPolicy nach shutdownNow() definiert und verifiziert ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
android, java
Bereich
backend-api-design, security
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

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