#12938·grpc-java

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

Author: jdcormieCreated Jul 28, 2026Updated Aug 28, 2026

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.