The idea in 
https://github.com/grpc/grpc-java/issues/5414#issuecomment-468754271 should 
work for your use case and the code should be almost same as that. Can you 
post a snippet for your code so that we can see what went wrong? The idea 
is to have your ServerInterceptor produce a ServerCall.Listener that delays 
calling into the real ServerCall.Listener (or more precisely, avoid calling 
into the real ServerCall.Listener if the cache-lookup ServerCall.Listener 
can end the call early with cached data). 

On Thursday, May 27, 2021 at 8:25:37 AM UTC-7 Alexander Chiu wrote:

> Hi
>
> I'm trying to build a caching ServerInterceptor which will be the first 
> in a chain of interceptors. I managed to get the basic functionality 
> working by returning a SimpleForwardingServerCallListener which checks a 
> cache in the onMessage method, and manually sending the headers and 
> response and closing the call in case of a cache hit, otherwise delegating 
> to next.startCall(...). However, it seems like next.startCall(...) causes 
> the call to cascade to the subsequent interceptors, and onMessage on the 
> listener is only called after that.
>
> My searches have come across:
>
>    - https://gitter.im/grpc/grpc?at=5b59f01bbd17b9615905d7b5
>    - 
>    
> https://stackoverflow.com/questions/39389771/validate-request-using-grpc-server-interceptor
>
> and a few others where it seems like it possible to delay 
> next.startCall(...) until after the first message is received. I tried to 
> do something akin to 
> https://github.com/grpc/grpc-java/issues/5414#issuecomment-468754271 using 
> a noop listener, but then the onMessage on the listener never seems to be 
> called at all.
>
> Am I missing something obvious?
>
> PS. A big thank you to all the maintainers
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/12459d2f-2153-4e03-9a9b-594de3b7556en%40googlegroups.com.

Reply via email to