taoensso / nippy

The fastest serialization library for Clojure
https://www.taoensso.com/nippy
Eclipse Public License 1.0
1.04k stars 60 forks source link

Handling unfreezable data #160

Closed lowecg closed 1 year ago

lowecg commented 1 year ago

Looking at issues #141 and #142, if I've understood things correctly, I should be able to handle unfreezable content in one of three ways (summarising from #141/#142):

  1. Set *freeze-fallback* to the keyword value :write-unfreezable
  2. Set *freeze-fallback* to the function value taoensso.nippy/write-unfreezable
  3. Set *freeze-fallback* to a custom function

In my case, I wish to capture a HTTP response from the clj-http, v3.12.3 library. In that response, there is a reference to the http-client which trips up the freezing process. In this situation, I'd like the freeze operation to ignore what is unfreezable and capture everything else.

Ideally, I'd prefer option 2 or 3. However, I can only get option 1 to work.

Baseline (plain nippy - I'm using v 3.2.0)

(require '[clj-http.client :as client])
(require '[taoensso.nippy :as nippy])

(-> (client/head "https://www.google.co.uk")
    nippy/freeze-to-string
    nippy/thaw-from-string)

Output

Execution error (ExceptionInfo) at taoensso.nippy/throw-unfreezable (nippy.clj:1005).
Unfreezable type: class org.apache.http.impl.client.InternalHttpClient

Option 1 - write-unfreezable keyword

(with-redefs [nippy/*freeze-fallback* :write-unfreezable]
  (-> (client/head "https://www.google.co.uk")
      nippy/freeze-to-string
      nippy/thaw-from-string))

Output

{:cached nil,
 :request-time 85,
 :repeatable? false,
 :protocol-version {:name "HTTP", :major 1, :minor 1},
 :streaming? false,
 :http-client #:nippy{:unfreezable {:type #:nippy{:unthawable {:type :serializable,
                                                               :cause :quarantined,
                                                               :class-name "java.lang.Class",
                                                               :content #object["[B" 0xded75d8 "[B@ded75d8"]}},
                                    :content "#object[org.apache.http.impl.client.InternalHttpClient 0x3c49d10f \"org.apache.http.impl.client.InternalHttpClient@3c49d10f\"]"}},
 :chunked? false,
 :cookies {"AEC" {:discard false,
                  :domain "google.co.uk",
                  :expires #inst"2024-03-06T06:40:31.000-00:00",
                  :path "/",
                  :secure true,
                  :value "Ad49MVG4EylCWxZnpLxT95j_Ur_xMggywIrjtDxhj7aNo-twxIWjlzsneg",
                  :version 0},
           "__Secure-ENID" {:discard false,
                            :domain "google.co.uk",
                            :expires #inst"2024-10-07T22:58:49.000-00:00",
                            :path "/",
                            :secure true,
                            :value "14.SE=Z1u-JenXpoR8Dk3q6HHorz5grmddkE1sOsYbCdaOifWmzFp4x_Qt1KnEE9eKRmUpTkvh1K4cI90J2PesyfLV-rDkYes5nW2X0rtw2AEugwnBaS_-gXkX36UA2Cvs4gK75r6AXDl_r9ZLds5YPoaBWjSGg6Dk6K9mrcQQ8gjv8-o",
                            :version 0},
           "CONSENT" {:discard false,
                      :domain "google.co.uk",
                      :expires #inst"2025-09-07T06:40:31.000-00:00",
                      :path "/",
                      :secure true,
                      :value "PENDING+492",
                      :version 0}},
 :reason-phrase "OK",
 :headers {"Server" "gws",
           "Content-Security-Policy-Report-Only" "object-src 'none';base-uri 'self';script-src 'nonce-S-4aRWAmyIocyTHrrn0x0w' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp",
           "Content-Type" "text/html; charset=ISO-8859-1",
           "Alt-Svc" "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000",
           "X-Frame-Options" "SAMEORIGIN",
           "Connection" "close",
           "Transfer-Encoding" "chunked",
           "Expires" "Fri, 08 Sep 2023 06:40:31 GMT",
           "P3P" "CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"",
           "Date" "Fri, 08 Sep 2023 06:40:31 GMT",
           "X-XSS-Protection" "0",
           "Cache-Control" "private"},
 :orig-content-encoding nil,
 :status 200,
 :length 0,
 :body nil,
 :trace-redirects []}

Option 2 - write-unfreezable fn

(with-redefs [nippy/*freeze-fallback* nippy/write-unfreezable]
  (-> (client/head "https://www.google.co.uk")
      nippy/freeze-to-string
      nippy/thaw-from-string))

Output

Execution error (StackOverflowError) at java.lang.StringBuilder/<init> (StringBuilder.java:128).
null

Option 3 - Custom function

I copied this from #141 and might not have done this correctly - do I have to write something to data-output?

(with-redefs [nippy/*freeze-fallback* (fn [data-output x]
                                        (println "could not freeze: " x))]
  (-> (client/head "https://www.google.co.uk")
      nippy/freeze-to-string
      nippy/thaw-from-string))

Output

could not freeze:  #object[org.apache.http.impl.client.InternalHttpClient 0x1075f9ed org.apache.http.impl.client.InternalHttpClient@1075f9ed]
Execution error (EOFException) at java.io.DataInputStream/readByte (DataInputStream.java:272).
null

Lastly, I was looking to avoid wrapping the calls in a with-redef. I note from nippy/set-freeze-fallback! that I should use alter-var-root. The following seems to work, I wanted to double check I have this right?

(alter-var-root #'nippy/*freeze-fallback* (constantly :write-unfreezable))
lowecg commented 1 year ago

Slightly different error on a subsequent execution of option 2


(with-redefs [nippy/*freeze-fallback* nippy/write-unfreezable]
  (-> (client/head "https://www.google.co.uk")
      nippy/freeze-to-string
      nippy/thaw-from-string))
Execution error (StackOverflowError) at taoensso.nippy/try-pr-edn (nippy.clj:988).
null
*e
=>
#error{:cause nil,
       :via [{:type java.lang.StackOverflowError,
              :message nil,
              :at [taoensso.nippy$try_pr_edn invokeStatic "nippy.clj" 988]}],
       :trace [[taoensso.nippy$try_pr_edn invokeStatic "nippy.clj" 988]
               [taoensso.nippy$try_pr_edn invoke "nippy.clj" 986]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 999]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$write_unfreezable invokeStatic "nippy.clj" 996]
               [taoensso.nippy$write_unfreezable invoke "nippy.clj" 995]
               [taoensso.nippy$eval8519$fn__8520 invoke "nippy.clj" 1242]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8238$fn__8239 invoke "nippy.clj" 581]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]
               [taoensso.nippy$eval8479$fn__8480 invoke "nippy.clj" 1174]
               [taoensso.nippy$eval8183$fn__8184$G__8174__8191 invoke "nippy.clj" 569]
               [taoensso.nippy$eval8230$fn__8231 invoke "nippy.clj" 578]
               [taoensso.nippy$eval8211$fn__8212$G__8202__8219 invoke "nippy.clj" 570]
               [taoensso.nippy$write_map$fn__8305$fn__8306 invoke "nippy.clj" 889]
               [taoensso.nippy$write_map$fn__8305 invoke "nippy.clj" 886]
               [clojure.lang.PersistentArrayMap kvreduce "PersistentArrayMap.java" 429]
               [clojure.core$fn__8525 invokeStatic "core.clj" 6908]
               [clojure.core$fn__8525 invoke "core.clj" 6888]
               [clojure.core.protocols$fn__8257$G__8252__8266 invoke "protocols.clj" 175]
               [clojure.core$reduce_kv invokeStatic "core.clj" 6919]
               [clojure.core$reduce_kv invoke "core.clj" 6910]
               [taoensso.nippy$write_map invokeStatic "nippy.clj" 886]
               [taoensso.nippy$write_map invoke "nippy.clj" 868]]}```
lowecg commented 1 year ago

Stack trace for option 3

(with-redefs [nippy/*freeze-fallback* (fn [data-output x]
                                        (println "could not freeze: " x))]
  (-> (client/head "https://www.google.co.uk")
      nippy/freeze-to-string
      nippy/thaw-from-string))
could not freeze:  #object[org.apache.http.impl.client.InternalHttpClient 0x43af4a3f org.apache.http.impl.client.InternalHttpClient@43af4a3f]
Execution error (EOFException) at java.io.DataInputStream/readByte (DataInputStream.java:272).
null
*e
=>
#error{:cause nil,
       :via [{:type clojure.lang.ExceptionInfo,
              :message "Thaw failed: Decryption/decompression failure, or data unfrozen/damaged.",
              :data {:opts {:compressor :auto, :encryptor :auto}},
              :at [taoensso.nippy$thaw$fn__8635$ex__8636 invoke "nippy.clj" 1864]}
             {:type clojure.lang.ExceptionInfo,
              :message "Thaw failed against type-id: 112",
              :data {:type-id 112},
              :at [taoensso.nippy$thaw_from_in_BANG_ invokeStatic "nippy.clj" 1778]}
             {:type java.io.EOFException,
              :message nil,
              :at [java.io.DataInputStream readByte "DataInputStream.java" 272]}],
       :trace [[java.io.DataInputStream readByte "DataInputStream.java" 272]
               [taoensso.nippy$thaw_from_in_BANG_ invokeStatic "nippy.clj" 1595]
               [taoensso.nippy$thaw_from_in_BANG_ invoke "nippy.clj" 1588]
               [taoensso.nippy$read_kvs_into$fn__8588 invoke "nippy.clj" 1441]
               [clojure.lang.LongRange reduce "LongRange.java" 233]
               [clojure.core$reduce invokeStatic "core.clj" 6885]
               [clojure.core$reduce invoke "core.clj" 6868]
               [taoensso.encore$reduce_n invokeStatic "encore.cljc" 984]
               [taoensso.encore$reduce_n invoke "encore.cljc" 983]
               [taoensso.nippy$read_kvs_into invokeStatic "nippy.clj" 1441]
               [taoensso.nippy$read_kvs_into invokePrim "nippy.clj" -1]
               [taoensso.nippy$thaw_from_in_BANG_ invokeStatic "nippy.clj" 1673]
               [taoensso.nippy$thaw_from_in_BANG_ invoke "nippy.clj" 1588]
               [taoensso.nippy$thaw$fn__8635$thaw_data__8638 invoke "nippy.clj" 1888]
               [taoensso.nippy$thaw$fn__8635 invoke "nippy.clj" 1914]
               [taoensso.nippy$call_with_bindings invokeStatic "nippy.clj" 1279]
               [taoensso.nippy$call_with_bindings invoke "nippy.clj" 1275]
               [taoensso.nippy$thaw invokeStatic "nippy.clj" 1857]
               [taoensso.nippy$thaw invoke "nippy.clj" 1833]
               [taoensso.nippy$thaw_from_string invokeStatic "nippy.clj" 2157]
               [taoensso.nippy$thaw_from_string invoke "nippy.clj" 2151]
               [taoensso.nippy$thaw_from_string invokeStatic "nippy.clj" 2154]
               [taoensso.nippy$thaw_from_string invoke "nippy.clj" 2151]
               [user$eval8771$fn__8774 invoke "form-init4543631197370884929.clj" 3]
               [clojure.core$with_redefs_fn invokeStatic "core.clj" 7582]
               [clojure.core$with_redefs_fn invoke "core.clj" 7566]
               [user$eval8771 invokeStatic "form-init4543631197370884929.clj" 1]
               [user$eval8771 invoke "form-init4543631197370884929.clj" 1]
               [clojure.lang.Compiler eval "Compiler.java" 7194]
               [clojure.lang.Compiler eval "Compiler.java" 7149]
               [clojure.core$eval invokeStatic "core.clj" 3215]
               [clojure.core$eval invoke "core.clj" 3211]
               [nrepl.middleware.interruptible_eval$evaluate$fn__968$fn__969 invoke "interruptible_eval.clj" 87]
               [clojure.lang.AFn applyToHelper "AFn.java" 152]
               [clojure.lang.AFn applyTo "AFn.java" 144]
               [clojure.core$apply invokeStatic "core.clj" 667]
               [clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1990]
               [clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1990]
               [clojure.lang.RestFn invoke "RestFn.java" 425]
               [nrepl.middleware.interruptible_eval$evaluate$fn__968 invoke "interruptible_eval.clj" 87]
               [clojure.main$repl$read_eval_print__9206$fn__9209 invoke "main.clj" 437]
               [clojure.main$repl$read_eval_print__9206 invoke "main.clj" 437]
               [clojure.main$repl$fn__9215 invoke "main.clj" 458]
               [clojure.main$repl invokeStatic "main.clj" 458]
               [clojure.main$repl doInvoke "main.clj" 368]
               [clojure.lang.RestFn invoke "RestFn.java" 1523]
               [nrepl.middleware.interruptible_eval$evaluate invokeStatic "interruptible_eval.clj" 84]
               [nrepl.middleware.interruptible_eval$evaluate invoke "interruptible_eval.clj" 56]
               [nrepl.middleware.interruptible_eval$interruptible_eval$fn__999$fn__1003
                invoke
                "interruptible_eval.clj"
                152]
               [clojure.lang.AFn run "AFn.java" 22]
               [nrepl.middleware.session$session_exec$main_loop__1067$fn__1071 invoke "session.clj" 202]
               [nrepl.middleware.session$session_exec$main_loop__1067 invoke "session.clj" 201]
               [clojure.lang.AFn run "AFn.java" 22]
               [java.lang.Thread run "Thread.java" 829]]}
ptaoussanis commented 1 year ago

Hi @lowecg- thanks for the clear & detailed info, that's helpful!

I should be able to handle unfreezable content in one of three ways:

  1. Set freeze-fallback to the keyword value :write-unfreezable
  2. Set freeze-fallback to the function value taoensso.nippy/write-unfreezable
  3. Set freeze-fallback to a custom function

That's correct so far, though 1. and 2. are equivalent.

I'd like the freeze operation to ignore what is unfreezable and capture everything else.

Understood, that shouldn't be a problem 👍

I'll explain exactly what's happening in each case-

Baseline (plain nippy - I'm using v 3.2.0)

In this case this is the code path running.

The InternalHttpClient doesn't implement Java's Serializable interface, and the Clojure reader can't serialize it - so an exception is thrown.

Nippy's default behaviour when it can't reliably freeze something is to throw - to try prevent unintentional data loss.

Option 2 - write-unfreezable fn

In this case this is the code path running.

It'll also try Java's Serializable interface and Clojure's reader, but instead of throwing if those fail - it just writes a payload that indicates there was a freezing issue.

That's what you're seeing in your output.

Option 3 - Custom function

When you have a *freeze-fallback* function, this is the codepath that'll run.

This is the one you want in your case, since you just want to skip the unfreezable data.

Your intuition is correct, something like (fn [data-output x]) that no-ops is conceptually what you're looking for.

The problem is easy to miss: by the time your function is being called, Nippy expects something to be present in the data stream at that position.

An analogy: think of Nippy's data stream as a vector of elements. Your fallback function is being asked to update the stream for the given element. You're choosing not to update the stream, i.e. you're basically adding nothing to the vector.

But the vector's element count was already set, so now your vector (stream) is missing an element - leading to the EOFException you're seeing.

The solution is to write something to the stream that'll act as a placeholder for the unfreezable value.

One example *freeze-fallback* function that should do the trick:

(fn [out x] (nippy/freeze-to-out! out :my-unfreezable-placeholder))

This'll add the :my-unfreezable-placeholder keyword to the stream as a placeholder for the unfreezable InternalHttpClient.

Does that make sense?

This is definitely a bit of a confusing problem, sorry about that!

I'll modify the *freeze-fallback* docstring to add some more info and clarify that exactly one element needs to be written to the data stream.

I hope this helps?

lowecg commented 1 year ago

Thank you, Peter - that all made sense and helped a lot. Very clear.

The example custom function is just what I need, and the suggested doc string improvement will be helpful.

ptaoussanis commented 1 year ago

You're very welcome. I've updated the *freeze-fallback* docstring to make this all clearer.

Again, apologies for the confusion. Feel free to close once you've got confirmation that the proposed solution is working okay.

lowecg commented 1 year ago

All is good from my side, and the new doc string looks good.