Size: a a a

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

2021 November 04

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Но это про graceful shutdown, для этого не нужна перезагрузка конфигурации наживо
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
Скажите, что я делаю не так? Есть программа, написанная с интегрантом. В ней есть система — апи. В ней хэндлеры. Все запущено в репле.

Я меняю хэндлер, эвалю его — работает старый. Перезапускаю систему — работает старый. Выключаю систему, делаю (refresh) из tools.namespace, запускаю — работает старый.

По факту новый цепляется только если убить репл и заново запустить.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
на хэндлер надо ссылаться по ссылке

#'my.ns/my-handler
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
спасибо, попробую
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Да, выглядит, как запекшийся хэндлер, только про остановку системы не понял.
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
спасибо, так гораздо лучше 😅
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
это, наверное, решит проблему (хотя вызов через var немного медленнее), но вообще-то желательно разобраться, почему перезапуск системы не выдаёт актуальные хэндлеры
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
Проблему решило, да. А как разобраться?
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
То есть в проде лучше такое не оставлять?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
не видя код, не знаю 😊
но если идея в том, что система стартует свеженькая, то из описанию ситуации выглядит, что что-то не работает так, как ожидается
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
выглядит, что это выполняется только один раз при инициализации, так что, наверное, пофиг
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
Мне тоже так показалось, и сейчас работает так, как ожидалось — эвальнул хэндлер — он поменялся вообще без перезапуска.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
это скорее всего из-за того, что хендлер оборачивается во всякие middleware
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
хотя не, не пофиг
Evaluation count : 55031094 in 6 samples of 9171849 calls.
            Execution time mean : 1,792608 ns
   Execution time std-deviation : 0,247367 ns
  Execution time lower quantile : 1,551322 ns ( 2,5%)
  Execution time upper quantile : 2,157015 ns (97,5%)
                  Overhead used : 9,469694 ns

(identity 0)

(def idt #'identity)
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
в таком случае после эвала хендлера надо шагнуть в тот ns, который его использует и заэвалить весь ns
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
сорри, не дописал
Evaluation count : 39204198 in 6 samples of 6534033 calls.
            Execution time mean : 5,554863 ns
   Execution time std-deviation : 0,310404 ns
  Execution time lower quantile : 5,291312 ns ( 2,5%)
  Execution time upper quantile : 6,032320 ns (97,5%)
                  Overhead used : 9,469694 ns

(idt 0)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну то есть вызов через var несколько медленнее
а уж важно это кому или нет, решают сами
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
ну, тут еще есть вопрос, что с этими варами после компиляции в уберджар происходит
источник

MB

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