You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When the client process is forcibly killed, the following error occurs in the server process.
How should this error be handled? If there is no need to handle it, can the log be hidden?
BinderTransport: Failed sending oob close transaction
BinderTransport: io.grpc.StatusException: UNAVAILABLE
BinderTransport: at io.grpc.Status.asException(Status.java:545)
BinderTransport: at io.grpc.binder.internal.BinderTransport.sendTransaction(BinderTransport.java:400)
BinderTransport: at io.grpc.binder.internal.BinderTransport.sendOutOfBandClose(BinderTransport.java:412)
BinderTransport: at io.grpc.binder.internal.Inbound.closeAbnormal(Inbound.java:293)
BinderTransport: at io.grpc.binder.internal.Inbound.closeAbnormal(Inbound.java:280)
BinderTransport: at io.grpc.binder.internal.BinderTransport.lambda$shutdownInternal$0(BinderTransport.java:317)
BinderTransport: at io.grpc.binder.internal.BinderTransport.$r8$lambda$oQtV0cIJ7P07ABal1DZ4FIrGE8U(BinderTransport.java:0)
BinderTransport: at io.grpc.binder.internal.BinderTransport$$ExternalSyntheticLambda0.run(R8$$SyntheticClass:0)
BinderTransport: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
BinderTransport: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
BinderTransport: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
BinderTransport: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
BinderTransport: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
BinderTransport: at java.lang.Thread.run(Thread.java:920)
BinderTransport: Caused by: android.os.DeadObjectException
BinderTransport: at android.os.BinderProxy.transactNative(Native Method)
BinderTransport: at android.os.BinderProxy.transact(BinderProxy.java:571)
BinderTransport: at io.grpc.binder.internal.OneWayBinderProxy.transactAndRecycleParcel(OneWayBinderProxy.java:107)
BinderTransport: at io.grpc.binder.internal.OneWayBinderProxy$OutOfProcessImpl.transact(OneWayBinderProxy.java:97)
BinderTransport: at io.grpc.binder.internal.BinderTransport.sendTransaction(BinderTransport.java:398)
BinderTransport: ... 12 more
Steps to reproduce the bug
During grpc communication, forcefully killing the client process...
The text was updated successfully, but these errors were encountered:
Looks like that failure would be expected when the remote process dies. We've had similar issues with the Netty server extra logging on connection close. Right now I think we log errors like this at a finer log level with Netty. Might want to do the same here.
Agreed that DeadObjectException can be expected at runtime and is already correctly exposed to the app to handle programmatically. No reason to spew a huge back trace to the log or anything at all really (anti pattern 5 at https://rolf-engelhard.de/2013/04/logging-anti-patterns-part-ii/)
What version of gRPC-Java are you using?
grpc-core: 1.60.1
grpc-stub: 1.60.1
grpc-api: 1.60.1
grpc-binder: 1.60.1
What is your environment?
Android 12
What did you expect to see?
What did you see instead?
When the client process is forcibly killed, the following error occurs in the server process.
How should this error be handled? If there is no need to handle it, can the log be hidden?
Steps to reproduce the bug
During grpc communication, forcefully killing the client process...
The text was updated successfully, but these errors were encountered: