Compojure / Ring: ¿Por qué una sesión con cookie-store no sobrevive al reinicio de un servidor?

Tengo una aplicación compojure que utiliza el contenedor de sesión de anillo para almacenar el token de OAuth asociado con el usuario actual. Me gustaría que este token permanezca disponible cuando el servidor se reinicie, para que no tenga que pasar por el proceso de autenticación cada vez.

Supuse que usar la cookie-store en lugar de la memoria predeterminada sería una ayuda, pero no es así. ¿Qué me estoy perdiendo?

Esta es la parte relevante del código:

(defn auth-callback-handler
  [session {code :code}]
  (let [token (retrieve-token code)]
    (-> (redirect "/") (assoc :session (assoc session :token token)))))

(defroutes app-routes
  (GET "/" {session :session} (root-handler session))
  (GET "/auth-callback" {session :session params :params} (auth-callback-handler session params))
  (route/not-found "Not Found"))

(def app
  (-> (handler/site app-routes)
      (wrap-session {:store (cookie-store {:key "a 16-byte secret"})})))

La funciónroot-handler utiliza el token para decidir si alguien ha iniciado sesión o no, pero no devuelve nada en forma de información de sesión.

Respuestas a la pregunta(1)

Su respuesta a la pregunta