У меня есть приведенный ниже код для моего компонента пьедестала. Когда библиотека Стюарта Сьерры запускает мою системную карту, вызывается метод start, реализованный в derecord пьедестала, и он возвращает обновленную версию моего компонента с ассоциированным :pedestal-server. Разве диспетчер жизненного цикла не должен распространять обновленный компонент, чтобы его можно было использовать методом остановки? Всякий раз, когда я пытаюсь остановить сервер, вызывая (component/stop (system)) в REPL, ничего не происходит, потому что для ключа :pedestal-server установлено значение nil.
(defrecord Pedestal [service-map pedestal-server]
component/Lifecycle
(start [this]
(if pedestal-server
this
(assoc this :pedestal-server
(-> service-map
http/create-server
http/start))))
(stop [this]
(when pedestal-server
(http/stop pedestal-server))
(assoc this :pedestal-server nil)))
(defn new-pedestal []
(map->Pedestal {}))