Как найти основную причину/трассировку стека исключения типа сигнала CANCELJAVA

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

Сообщение Anonymous »

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

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

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

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

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

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

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