binder: A Server might check its SecurityPolicy even after declaring termination
- 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
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