I believe I may not understand something about how gRPC Channels, Stubs,
And Transports work. I have an Android app that creates a channel and a
single blocking stub and injects it with dagger when the application is
initialized. When I need to make a grpc call, I have a method in my client,
that calls a method with that stub. After the app is idle a while, all of
my calls return DEADLINE_EXCEEDED errors, though there are no calls showing
up in the server logs.
@Singleton@Provides
fun providesMyClient(app: Application): MyClient {
val channel = AndroidChannelBuilder
.forAddress("example.com", 443)
.overrideAuthority("example.com")
.context(app.applicationContext)
.build()
return MyClient(channel)}
Where my client class has a function to return a request with a deadline:
class MyClient(channel: ManagedChannel) {private val blockingStub:
MyServiceGrpc.MyServiceBlockingStub = MyServiceGrpc.newBlockingStub(channel)
fun getStuff(): StuffResponse =
blockingStub
.withDeadlineAfter(7, TimeUnit.SECONDS)
.getStuff(stuffRequest())}
fun getOtherStuff(): StuffResponse =
blockingStub
.withDeadlineAfter(7, TimeUnit.SECONDS)
.getOtherStuff(stuffRequest())}
I make the calls to the server inside a LiveData class in My Repository,
where the call looks like this: myClient.getStuff()
I am guessing that the channel looses its connection at some point, and
then all of the subsequent stubs simply can't connect, but I don't see
anywhere in the AndroidChannelBuilder documentation that talks about how to
handle this (I believed it reconnected automatically). Is it possible that
the channel I use to create my blocking stub gets stale, and I should be
creating a new blocking stub each time I call getStuff()? Any help in
understanding this would be greatly appreciated.
--
You received this message because you are subscribed to the Google Groups
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit
https://groups.google.com/d/msgid/grpc-io/6c32e6e1-7408-401d-9ee8-03ccf5a10d46%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.