Size: a a a

Clojure — русскоговорящее сообщество

2020 April 16

MA

Mike Ananev in Clojure — русскоговорящее сообщество
тоже самое
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Mike Ananev
^C:msg uncaught exception :thread SIGINT handler :desc #error {
:cause clojure/core$pr_str
:via
[{:type java.lang.ExceptionInInitializerError
  :message nil
  :at [org.rssys.kb_index.core$exit_fn invokeStatic core.clj 21]}
 {:type java.lang.ClassNotFoundException
  :message clojure/core$pr_str
  :at [java.lang.Class forName0 Class.java -2]}]
:trace
[[java.lang.Class forName0 Class.java -2]
 [java.lang.Class forName Class.java 427]
 [clojure.lang.RT classForName RT.java 2211]
 [clojure.lang.RT classForName RT.java 2220]
 [clojure.lang.LispReader$EvalReader invoke LispReader.java 1317]
 [clojure.lang.LispReader$DispatchReader invoke LispReader.java 853]
 [clojure.lang.LispReader read LispReader.java 285]
 [clojure.lang.LispReader read LispReader.java 216]
 [clojure.lang.LispReader read LispReader.java 205]
 [clojure.lang.RT readString RT.java 1878]
 [clojure.lang.RT readString RT.java 1873]
 [org.rssys.kb_index.core$exit_fn$fn__1508 <clinit> core.clj 21]
 [org.rssys.kb_index.core$exit_fn invokeStatic core.clj 21]
 [org.rssys.kb_index.core$exit_fn doInvoke core.clj 19]
 [clojure.lang.RestFn invoke RestFn.java 408]
 [signal.handler$__GT_handler$fn__1176 invoke handler.clj 23]
 [signal.handler.proxy$java.lang.Object$SignalHandler$d8c00ec7 handle nil -1]
 [sun.misc.Signal$InternalMiscHandler handle Signal.java 198]
 [jdk.internal.misc.Signal$1 run Signal.java 220]
 [java.lang.Thread run Thread.java 832]]}
тут с класслоадером проблема судя по всему какая-то
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
хрен знает в каком окружении оно выполняется
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
попробуй просто навесить хук на шатдаун без сигналов
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
.addShutdownHook (Runtime/getRuntime)
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
да. только вот куда дальше копать не понятно. я сменил на clojure.tools.logging и все работает.  как под коврик проблему, а хочется понять, что вызывает такое поведение.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Andrew Rudenko
.addShutdownHook (Runtime/getRuntime)
тебе для graceful shutdown другого и не надо
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mike Ananev
Столкнулся с такой проблемой: вешаю hook на сигналы ОС (SIGTERM, SIGINT) для того чтобы сделать graceful shutdown, корректно потушить систему. Во-время этого shutdown'а выяснилось, что  логгирование на базе pedestal.log не работает (null pointer где-то случается). если заменить на clojure.tools.logging все работает как надо. низлежащие логгеры типа log4j не причем, проверил.
Никто у пьедестала не ловил такое поведение?
а до shutdown всё хорошо логгируется тем же pedestal.log?
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
да. по логам видно же
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
старт системы и логгирование во многих модулях осуществляется стандартно на педестале
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Mike Ananev
да. только вот куда дальше копать не понятно. я сменил на clojure.tools.logging и все работает.  как под коврик проблему, а хочется понять, что вызывает такое поведение.
в сырцы openjdk
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
это вообще не особо публичное API
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
и видимо оно как то ломает класслоадеры прежде чем вызваться
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
это если хочется разобраться
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
Андрей, спасибо! Как ты предложил - заработало!
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
а если хочется чтоб просто работало — просто через шатдаун хук
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Mike Ananev
Андрей, спасибо! Как ты предложил - заработало!
во, норм )
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
(.addShutdownHook (Runtime/getRuntime) (Thread. #(log/info :m "abc123")))
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
отработало
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
а этот шутдаун хук какие сигналы ОС ловит?
источник