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.

Reply via email to