Реактивное программирование на Java: как найти основную причину/трассировку стека исключений типа сигнала CANCELJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Реактивное программирование на Java: как найти основную причину/трассировку стека исключений типа сигнала CANCEL

Сообщение Anonymous »

В doFinally напечатан тип сигнала, чтобы окончательно убедиться, что это CANCEL.
Однако это не фиксируется как часть doOnError, поскольку технически Cancel не является частью ошибки.
Я понимаю, почему происходит CANCEL, потому что
  • Таймауты: если вы используете .timeout(), отмена произойдет, если истечет таймаут.
  • Утилизация вручную: если вы вызываете .dispose() или .cancel() в подписке.
  • Завершение работы приложения: если приложение или поток остановлены.
  • Обратное давление: если нисходящий поток отменяется из-за ограничений ресурсов.
Однако в отличие от doOnError(Throwable t -> {}) - doOnCancel(()->{}) не обеспечивает трассировку стека, чтобы найти основную причину, по которой операция вызвала эту отмену.
Это сложный код, в котором вызывается несколько методов библиотеки, поэтому отследить его через код не так просто. Отмена происходит только в PROD и ни в каких других средах. Нашим главным подозреваемым является ресурс и ограничение памяти.
Но есть ли способ отследить основную причину сигнала CANCEL, например, какой метод или операция вызвали это?
Не уверен, что использование Hooks.onOperatorDebug() будет разумным.

Подробнее здесь: https://stackoverflow.com/questions/798 ... cktrace-of
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»