Last active
April 20, 2025 13:24
-
-
Save Ramblurr/cb0e575a76870c626181b0a17e0ea2d8 to your computer and use it in GitHub Desktop.
Inaccessible `(ex-data ..)` in datahike exceptions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2025-04-20T13:18:30.410Z quine DEBUG [datahike.connector:149] - Using config {:keep-history? true, :search-cache-size 10000, :index :datahike.index/persistent-set, :store {:path "/tmp/example", :scope "127.0.0.2", :backend :file}, :store-cache-size 1000, :attribute-refs? false, :writer {:backend :self}, :crypto-hash? false, :schema-flexibility :write, :branch :db} | |
2025-04-20T13:18:30.423Z quine DEBUG [datahike.writing:296] - Transacting 1 objects | |
2025-04-20T13:18:30.454Z quine DEBUG [datahike.writing:296] - Transacting 1 objects | |
2025-04-20T13:18:30.476Z quine DEBUG [datahike.writing:296] - Transacting 1 objects | |
2025-04-20T13:18:30.476Z quine ERROR [datahike.db.transaction:231] - Cannot add #datahike/Datom [3 :name "Alice" 536870915 true] because of unique constraint: #datahike/Datom [2 :name "Alice" 536870914 true] {:error :transact/unique, :attribute :name, :datom #datahike/Datom [3 :name "Alice" 536870915 true]} | |
2025-04-20T13:18:30.478Z quine ERROR [datahike.writer:73] - Error during invocation {:op transact!, :args [{:tx-data [{:name "Alice"}]}], :callback #object[clojure.core.async.impl.channels.ManyToManyChannel 0x429f355b "clojure.core.async.impl.channels.ManyToManyChannel@429f355b"]} #error { | |
:cause "Cannot add #datahike/Datom [3 :name \"Alice\" 536870915 true] because of unique constraint: #datahike/Datom [2 :name \"Alice\" 536870914 true]" | |
:data {:error :transact/unique, :attribute :name, :datom #datahike/Datom [3 :name "Alice" 536870915 true]} | |
:via | |
[{:type clojure.lang.ExceptionInfo | |
:message "Cannot add #datahike/Datom [3 :name \"Alice\" 536870915 true] because of unique constraint: #datahike/Datom [2 :name \"Alice\" 536870914 true]" | |
:data {:error :transact/unique, :attribute :name, :datom #datahike/Datom [3 :name "Alice" 536870915 true]} | |
:at [datahike.db.transaction$validate_datom_upsert invokeStatic "transaction.cljc" 231]}] | |
:trace | |
[[datahike.db.transaction$validate_datom_upsert invokeStatic "transaction.cljc" 231] | |
[datahike.db.transaction$validate_datom_upsert invoke "transaction.cljc" 227] | |
[datahike.db.transaction$with_datom_upsert invokeStatic "transaction.cljc" 237] | |
[datahike.db.transaction$with_datom_upsert invoke "transaction.cljc" 236] | |
[clojure.lang.AFn applyToHelper "AFn.java" 156] | |
[clojure.lang.AFn applyTo "AFn.java" 144] | |
[clojure.core$apply invokeStatic "core.clj" 669] | |
[clojure.core$update_in$up__6945 invoke "core.clj" 6248] | |
[clojure.core$update_in invokeStatic "core.clj" 6249] | |
[clojure.core$update_in doInvoke "core.clj" 6235] | |
[clojure.lang.RestFn invoke "RestFn.java" 470] | |
[datahike.db.transaction$transact_report invokeStatic "transaction.cljc" 276] | |
[datahike.db.transaction$transact_report invoke "transaction.cljc" 269] | |
[datahike.db.transaction$transact_add invokeStatic "transaction.cljc" 409] | |
[datahike.db.transaction$transact_add invoke "transaction.cljc" 398] | |
[datahike.db.transaction$apply_db_op invokeStatic "transaction.cljc" 634] | |
[datahike.db.transaction$apply_db_op invoke "transaction.cljc" 630] | |
[datahike.db.transaction$transact_tx_data invokeStatic "transaction.cljc" 819] | |
[datahike.db.transaction$transact_tx_data invoke "transaction.cljc" 746] | |
[datahike.core$with invokeStatic "core.cljc" 133] | |
[datahike.core$with invoke "core.cljc" 126] | |
[datahike.writing$transact_BANG_ invokeStatic "writing.cljc" 298] | |
[datahike.writing$transact_BANG_ invoke "writing.cljc" 295] | |
[clojure.lang.AFn applyToHelper "AFn.java" 156] | |
[clojure.lang.AFn applyTo "AFn.java" 144] | |
[clojure.core$apply invokeStatic "core.clj" 669] | |
[clojure.core$apply invoke "core.clj" 662] | |
[datahike.writer$create_thread$fn__41384$fn__41758$state_machine__6885__auto____41785$fn__41788 invoke "writer.cljc" 51] | |
[datahike.writer$create_thread$fn__41384$fn__41758$state_machine__6885__auto____41785 invoke "writer.cljc" 51] | |
[clojure.core.async.impl.ioc_macros$run_state_machine invokeStatic "ioc_macros.clj" 58] | |
[clojure.core.async.impl.ioc_macros$run_state_machine invoke "ioc_macros.clj" 57] | |
[clojure.core.async.impl.ioc_macros$run_state_machine_wrapped invokeStatic "ioc_macros.clj" 62] | |
[clojure.core.async.impl.ioc_macros$run_state_machine_wrapped invoke "ioc_macros.clj" 60] | |
[clojure.core.async.impl.ioc_macros$take_BANG_$fn__946 invoke "ioc_macros.clj" 71] | |
[clojure.core.async.impl.channels$appm$fn__730 invoke "channels.clj" 36] | |
[clojure.lang.AFn run "AFn.java" 22] | |
[java.util.concurrent.ThreadPoolExecutor runWorker "ThreadPoolExecutor.java" 1144] | |
[java.util.concurrent.ThreadPoolExecutor$Worker run "ThreadPoolExecutor.java" 642] | |
[clojure.core.async.impl.concurrent$counted_thread_factory$reify__621$fn__622 invoke "concurrent.clj" 29] | |
[clojure.lang.AFn run "AFn.java" 22] | |
[java.lang.Thread run "Thread.java" 1583]]} [{:tx-data [{:name "Alice"}]}] | |
---- EX | |
#error { | |
:cause "Cannot add #datahike/Datom [3 :name \"Alice\" 536870915 true] because of unique constraint: #datahike/Datom [2 :name \"Alice\" 536870914 true]" | |
:data {:error :transact/unique, :attribute :name, :datom #datahike/Datom [3 :name "Alice" 536870915 true]} | |
:via | |
[{:type clojure.lang.ExceptionInfo | |
:message "clojure.lang.ExceptionInfo: Cannot add #datahike/Datom [3 :name \"Alice\" 536870915 true] because of unique constraint: #datahike/Datom [2 :name \"Alice\" 536870914 true] {:error :transact/unique, :attribute :name, :datom #datahike/Datom [3 :name \"Alice\" 536870915 true]}" | |
:data {} | |
:at [superv.async$throw_if_exception_ invokeStatic "async.cljc" 93]} | |
{:type java.util.concurrent.ExecutionException | |
:message "clojure.lang.ExceptionInfo: Cannot add #datahike/Datom [3 :name \"Alice\" 536870915 true] because of unique constraint: #datahike/Datom [2 :name \"Alice\" 536870914 true] {:error :transact/unique, :attribute :name, :datom #datahike/Datom [3 :name \"Alice\" 536870915 true]}" | |
:at [java.util.concurrent.CompletableFuture reportGet "CompletableFuture.java" 396]} | |
{:type clojure.lang.ExceptionInfo | |
:message "Cannot add #datahike/Datom [3 :name \"Alice\" 536870915 true] because of unique constraint: #datahike/Datom [2 :name \"Alice\" 536870914 true]" | |
:data {:error :transact/unique, :attribute :name, :datom #datahike/Datom [3 :name "Alice" 536870915 true]} | |
:at [datahike.db.transaction$validate_datom_upsert invokeStatic "transaction.cljc" 231]}] | |
:trace | |
[[datahike.db.transaction$validate_datom_upsert invokeStatic "transaction.cljc" 231] | |
[datahike.db.transaction$validate_datom_upsert invoke "transaction.cljc" 227] | |
[datahike.db.transaction$with_datom_upsert invokeStatic "transaction.cljc" 237] | |
[datahike.db.transaction$with_datom_upsert invoke "transaction.cljc" 236] | |
[clojure.lang.AFn applyToHelper "AFn.java" 156] | |
[clojure.lang.AFn applyTo "AFn.java" 144] | |
[clojure.core$apply invokeStatic "core.clj" 669] | |
[clojure.core$update_in$up__6945 invoke "core.clj" 6248] | |
[clojure.core$update_in invokeStatic "core.clj" 6249] | |
[clojure.core$update_in doInvoke "core.clj" 6235] | |
[clojure.lang.RestFn invoke "RestFn.java" 470] | |
[datahike.db.transaction$transact_report invokeStatic "transaction.cljc" 276] | |
[datahike.db.transaction$transact_report invoke "transaction.cljc" 269] | |
[datahike.db.transaction$transact_add invokeStatic "transaction.cljc" 409] | |
[datahike.db.transaction$transact_add invoke "transaction.cljc" 398] | |
[datahike.db.transaction$apply_db_op invokeStatic "transaction.cljc" 634] | |
[datahike.db.transaction$apply_db_op invoke "transaction.cljc" 630] | |
[datahike.db.transaction$transact_tx_data invokeStatic "transaction.cljc" 819] | |
[datahike.db.transaction$transact_tx_data invoke "transaction.cljc" 746] | |
[datahike.core$with invokeStatic "core.cljc" 133] | |
[datahike.core$with invoke "core.cljc" 126] | |
[datahike.writing$transact_BANG_ invokeStatic "writing.cljc" 298] | |
[datahike.writing$transact_BANG_ invoke "writing.cljc" 295] | |
[clojure.lang.AFn applyToHelper "AFn.java" 156] | |
[clojure.lang.AFn applyTo "AFn.java" 144] | |
[clojure.core$apply invokeStatic "core.clj" 669] | |
[clojure.core$apply invoke "core.clj" 662] | |
[datahike.writer$create_thread$fn__41384$fn__41758$state_machine__6885__auto____41785$fn__41788 invoke "writer.cljc" 51] | |
[datahike.writer$create_thread$fn__41384$fn__41758$state_machine__6885__auto____41785 invoke "writer.cljc" 51] | |
[clojure.core.async.impl.ioc_macros$run_state_machine invokeStatic "ioc_macros.clj" 58] | |
[clojure.core.async.impl.ioc_macros$run_state_machine invoke "ioc_macros.clj" 57] | |
[clojure.core.async.impl.ioc_macros$run_state_machine_wrapped invokeStatic "ioc_macros.clj" 62] | |
[clojure.core.async.impl.ioc_macros$run_state_machine_wrapped invoke "ioc_macros.clj" 60] | |
[clojure.core.async.impl.ioc_macros$take_BANG_$fn__946 invoke "ioc_macros.clj" 71] | |
[clojure.core.async.impl.channels$appm$fn__730 invoke "channels.clj" 36] | |
[clojure.lang.AFn run "AFn.java" 22] | |
[java.util.concurrent.ThreadPoolExecutor runWorker "ThreadPoolExecutor.java" 1144] | |
[java.util.concurrent.ThreadPoolExecutor$Worker run "ThreadPoolExecutor.java" 642] | |
[clojure.core.async.impl.concurrent$counted_thread_factory$reify__621$fn__622 invoke "concurrent.clj" 29] | |
[clojure.lang.AFn run "AFn.java" 22] | |
[java.lang.Thread run "Thread.java" 1583]]} | |
---- is ex-info? | |
true | |
---- EX DATA | |
{} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns user) | |
(require '[datahike.api :as d]) | |
(def cfg {:store {:backend :file :path "/tmp/example"}}) | |
(d/create-database cfg) | |
(def conn (d/connect cfg)) | |
(d/transact conn [{:db/ident :name | |
:db/unique :db.unique/value | |
:db/valueType :db.type/string | |
:db/cardinality :db.cardinality/one}]) | |
(d/transact conn {:tx-data [{:name "Alice"}]}) | |
(try | |
(d/transact conn {:tx-data [{:name "Alice"}]}) | |
(catch Exception e | |
(println "---- EX") | |
(prn e) | |
(println "") | |
(println "---- is ex-info?") | |
(prn (instance? clojure.lang.ExceptionInfo e)) | |
(println "") | |
(println "---- EX DATA") | |
(prn (ex-data e)))) | |
(d/release conn) | |
(d/delete-database cfg) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment