Я должен выполнять некоторый код в начале и в конце каждого вызова, обрабатываемого моим сервером grpc.
Я использую ServerCall.Listener:
- код для выполнения в начале вызова находится в конструкторе слушателя
- код для выполнения в конце вызова запускается onComplete и onCancel
- поток, создающий слушателя, должен быть тем, который вызовет onComplete / onCancel (мы используем локальные переменные потока)
Слушатель создается перехватчиком, зарегистрированным на моем сервере.
Но есть проблема: иногда кажется, что даже если прослушиватель был создан, за ним не следует вызов onComplete или onCancel.
Чтобы быть абсолютно точным, проблема также может быть вызвана, если другой поток, а не тот, который создает экземпляр прослушивателя, вызывает onComplete / onCancel.
Должна ли произойти одна из этих ситуаций? Я использую grpc-netty версии 1.6.1.
Спасибо за помощь!