Skip to content

Instantly share code, notes, and snippets.

@domkm

domkm/code.clj Secret

Last active January 13, 2016 19:18
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save domkm/bedbb9ef2f281c1254fe to your computer and use it in GitHub Desktop.
;;; Transactor function
{:db/doc "A transactor function that is analogous to `datomic.api/query'."
:db/id #db/id [:db.part/user]
:db/ident :fn/query
:db/fn
#db/fn
{:lang :clojure
:params [db query-map]
:code (->> query-map
:args
(cons db)
(assoc query-map :args)
d/query)}}
;;; Tx Data
[[:fn/query
{:query
{:find [?ex .],
:where
[[(new
datomic.impl.Exceptions$IllegalStateExceptionInfo
"FooBar"
{})
?ex]
[(throw ?ex)]]}}]]
;; I expect this to throw an IllegalStateExceptionInfo.
;; It does when transacted against a mem connection (see mem stacktrace file)
;; but does not when transacted against a dev connection (see dev stacktrace file).
;; It looks like the root cause is being swallowed on the dev transactor.
2. Unhandled java.util.concurrent.ExecutionException
java.lang.Exception: processing rule: (q__420 ?ex), message: processing
clause: {:argvars nil, :fn #object[datomic.extensions$eval83$fn__84
0x21933876 "datomic.extensions$eval83$fn__84@21933876"], :clause [[new
datomic.impl.Exceptions$IllegalStateExceptionInfo "FooBar" {}] ?ex], :binds
[?ex], :bind-type :scalar, :needs-source false}, message:
java.lang.IllegalStateException: FooBar
promise.clj: 10 datomic.promise/throw-executionexception-if-throwable
promise.clj: 54 datomic.promise/settable-future/reify
core.clj: 2206 clojure.core/deref
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62999/fn
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62999
Compiler.java: 6782 clojure.lang.Compiler/eval
Compiler.java: 6745 clojure.lang.Compiler/eval
core.clj: 3081 clojure.core/eval
main.clj: 240 clojure.main/repl/read-eval-print/fn
main.clj: 240 clojure.main/repl/read-eval-print
main.clj: 258 clojure.main/repl/fn
main.clj: 258 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 630 clojure.core/apply
core.clj: 1868 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
AFn.java: 22 clojure.lang.AFn/run
ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
Thread.java: 745 java.lang.Thread/run
1. Caused by java.lang.Exception
processing rule: (q__420 ?ex), message: processing clause: {:argvars nil, :fn
#object[datomic.extensions$eval83$fn__84 0x21933876
"datomic.extensions$eval83$fn__84@21933876"], :clause [[new
datomic.impl.Exceptions$IllegalStateExceptionInfo "FooBar" {}] ?ex], :binds
[?ex], :bind-type :scalar, :needs-source false}, message:
java.lang.IllegalStateException: FooBar
NativeConstructorAccessorImpl.java: -2 sun.reflect.NativeConstructorAccessorImpl/newInstance0
NativeConstructorAccessorImpl.java: 62 sun.reflect.NativeConstructorAccessorImpl/newInstance
DelegatingConstructorAccessorImpl.java: 45 sun.reflect.DelegatingConstructorAccessorImpl/newInstance
Constructor.java: 408 java.lang.reflect.Constructor/newInstance
Reflector.java: 180 clojure.lang.Reflector/invokeConstructor
boot.user1749244930106590866.clj: 172 com.broadbrim.procedure/eval62564/fn
error.clj: 135 datomic.error/deserialize-exception
peer.clj: 401 datomic.peer.Connection/notify_error
connector.clj: 169 datomic.connector/fn
MultiFn.java: 233 clojure.lang.MultiFn/invoke
connector.clj: 194 datomic.connector/create-hornet-notifier/fn/fn/fn/fn
connector.clj: 189 datomic.connector/create-hornet-notifier/fn/fn/fn
connector.clj: 187 datomic.connector/create-hornet-notifier/fn/fn
core.clj: 1916 clojure.core/binding-conveyor-fn/fn
AFn.java: 18 clojure.lang.AFn/call
FutureTask.java: 266 java.util.concurrent.FutureTask/run
ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
Thread.java: 745 java.lang.Thread/run
5. Unhandled java.util.concurrent.ExecutionException
java.lang.Exception: processing rule: (q__62998 ?ex), message: processing
clause: {:argvars nil, :fn #function[datomic.extensions/eval62684$fn--62685],
:clause [(new datomic.impl.Exceptions$IllegalStateExceptionInfo "FooBar" {})
?ex], :binds [?ex], :bind-type :scalar, :needs-source false}, message:
java.lang.IllegalStateException: FooBar
promise.clj: 10 datomic.promise/throw-executionexception-if-throwable
promise.clj: 54 datomic.promise/settable-future/reify
core.clj: 2206 clojure.core/deref
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971/fn
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971
Compiler.java: 6782 clojure.lang.Compiler/eval
Compiler.java: 6745 clojure.lang.Compiler/eval
core.clj: 3081 clojure.core/eval
main.clj: 240 clojure.main/repl/read-eval-print/fn
main.clj: 240 clojure.main/repl/read-eval-print
main.clj: 258 clojure.main/repl/fn
main.clj: 258 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 630 clojure.core/apply
core.clj: 1868 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
AFn.java: 22 clojure.lang.AFn/run
ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
Thread.java: 745 java.lang.Thread/run
4. Caused by java.lang.Exception
processing rule: (q__62998 ?ex), message: processing clause: {:argvars nil,
:fn #function[datomic.extensions/eval62684$fn--62685], :clause [(new
datomic.impl.Exceptions$IllegalStateExceptionInfo "FooBar" {}) ?ex], :binds
[?ex], :bind-type :scalar, :needs-source false}, message:
java.lang.IllegalStateException: FooBar
datalog.clj: 1453 datomic.datalog/eval-rule/fn
datalog.clj: 1433 datomic.datalog/eval-rule
datalog.clj: 1476 datomic.datalog/eval-query
datalog.clj: 1565 datomic.datalog/qsqr
datalog.clj: 1522 datomic.datalog/qsqr
query.clj: 711 datomic.query/q
query.clj: 740 datomic.query/query
api.clj: 39 datomic.api/query
boot.user1749244930106590866.clj: 172 ns-62993/eval62994/fn
function.clj: 31 datomic.function.Function/invoke
AFn.java: 156 clojure.lang.AFn/applyToHelper
function.clj: 40 datomic.function.Function/applyTo
core.clj: 632 clojure.core/apply
db.clj: 2475 datomic.db.ProcessExpander/inject
db.clj: 2372 datomic.db.ProcessInpoint/inject
db.clj: 2535 datomic.db/with-tx/inject-all/fn
PersistentVector.java: 333 clojure.lang.PersistentVector/reduce
core.clj: 6518 clojure.core/reduce
db.clj: 2535 datomic.db/with-tx/inject-all
db.clj: 2539 datomic.db/with-tx
peer.clj: 558 datomic.peer.LocalConnection/fn
peer.clj: 558 datomic.peer.LocalConnection/transactAsync
peer.clj: 550 datomic.peer.LocalConnection/transact
api.clj: 94 datomic.api/transact
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971/fn
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971
Compiler.java: 6782 clojure.lang.Compiler/eval
Compiler.java: 6745 clojure.lang.Compiler/eval
core.clj: 3081 clojure.core/eval
main.clj: 240 clojure.main/repl/read-eval-print/fn
main.clj: 240 clojure.main/repl/read-eval-print
main.clj: 258 clojure.main/repl/fn
main.clj: 258 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 630 clojure.core/apply
core.clj: 1868 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
AFn.java: 22 clojure.lang.AFn/run
ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
Thread.java: 745 java.lang.Thread/run
3. Caused by java.lang.Exception
processing clause: {:argvars nil, :fn
#function[datomic.extensions/eval62684$fn--62685], :clause [(new
datomic.impl.Exceptions$IllegalStateExceptionInfo "FooBar" {}) ?ex], :binds
[?ex], :bind-type :scalar, :needs-source false}, message:
java.lang.IllegalStateException: FooBar
datalog.clj: 1399 datomic.datalog/eval-clause/fn
datalog.clj: 1362 datomic.datalog/eval-clause
datalog.clj: 1448 datomic.datalog/eval-rule/fn
datalog.clj: 1433 datomic.datalog/eval-rule
datalog.clj: 1476 datomic.datalog/eval-query
datalog.clj: 1565 datomic.datalog/qsqr
datalog.clj: 1522 datomic.datalog/qsqr
query.clj: 711 datomic.query/q
query.clj: 740 datomic.query/query
api.clj: 39 datomic.api/query
boot.user1749244930106590866.clj: 172 ns-62993/eval62994/fn
function.clj: 31 datomic.function.Function/invoke
AFn.java: 156 clojure.lang.AFn/applyToHelper
function.clj: 40 datomic.function.Function/applyTo
core.clj: 632 clojure.core/apply
db.clj: 2475 datomic.db.ProcessExpander/inject
db.clj: 2372 datomic.db.ProcessInpoint/inject
db.clj: 2535 datomic.db/with-tx/inject-all/fn
PersistentVector.java: 333 clojure.lang.PersistentVector/reduce
core.clj: 6518 clojure.core/reduce
db.clj: 2535 datomic.db/with-tx/inject-all
db.clj: 2539 datomic.db/with-tx
peer.clj: 558 datomic.peer.LocalConnection/fn
peer.clj: 558 datomic.peer.LocalConnection/transactAsync
peer.clj: 550 datomic.peer.LocalConnection/transact
api.clj: 94 datomic.api/transact
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971/fn
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971
Compiler.java: 6782 clojure.lang.Compiler/eval
Compiler.java: 6745 clojure.lang.Compiler/eval
core.clj: 3081 clojure.core/eval
main.clj: 240 clojure.main/repl/read-eval-print/fn
main.clj: 240 clojure.main/repl/read-eval-print
main.clj: 258 clojure.main/repl/fn
main.clj: 258 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 630 clojure.core/apply
core.clj: 1868 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
AFn.java: 22 clojure.lang.AFn/run
ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
Thread.java: 745 java.lang.Thread/run
2. Caused by java.util.concurrent.ExecutionException
java.lang.IllegalStateException: FooBar
FutureTask.java: 122 java.util.concurrent.FutureTask/report
FutureTask.java: 192 java.util.concurrent.FutureTask/get
core.clj: 2186 clojure.core/deref-future
core.clj: 6683 clojure.core/future-call/reify
core.clj: 2206 clojure.core/deref
core.clj: 2624 clojure.core/map/fn
LazySeq.java: 40 clojure.lang.LazySeq/sval
LazySeq.java: 56 clojure.lang.LazySeq/seq
RT.java: 507 clojure.lang.RT/seq
core.clj: 137 clojure.core/seq
core.clj: 3009 clojure.core/dorun
datalog.clj: 212 datomic.datalog/join-project-coll-with
datalog.clj: 224 datomic.datalog/fn
datalog.clj: 52 datomic.datalog/fn/G
datalog.clj: 604 datomic.datalog.FnRel/join_project_with
datalog.clj: 117 datomic.datalog/join-project-coll
datalog.clj: 220 datomic.datalog/fn
datalog.clj: 52 datomic.datalog/fn/G
datalog.clj: 1372 datomic.datalog/eval-clause/fn
datalog.clj: 1362 datomic.datalog/eval-clause
datalog.clj: 1448 datomic.datalog/eval-rule/fn
datalog.clj: 1433 datomic.datalog/eval-rule
datalog.clj: 1476 datomic.datalog/eval-query
datalog.clj: 1565 datomic.datalog/qsqr
datalog.clj: 1522 datomic.datalog/qsqr
query.clj: 711 datomic.query/q
query.clj: 740 datomic.query/query
api.clj: 39 datomic.api/query
boot.user1749244930106590866.clj: 172 ns-62993/eval62994/fn
function.clj: 31 datomic.function.Function/invoke
AFn.java: 156 clojure.lang.AFn/applyToHelper
function.clj: 40 datomic.function.Function/applyTo
core.clj: 632 clojure.core/apply
db.clj: 2475 datomic.db.ProcessExpander/inject
db.clj: 2372 datomic.db.ProcessInpoint/inject
db.clj: 2535 datomic.db/with-tx/inject-all/fn
PersistentVector.java: 333 clojure.lang.PersistentVector/reduce
core.clj: 6518 clojure.core/reduce
db.clj: 2535 datomic.db/with-tx/inject-all
db.clj: 2539 datomic.db/with-tx
peer.clj: 558 datomic.peer.LocalConnection/fn
peer.clj: 558 datomic.peer.LocalConnection/transactAsync
peer.clj: 550 datomic.peer.LocalConnection/transact
api.clj: 94 datomic.api/transact
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971/fn
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971
Compiler.java: 6782 clojure.lang.Compiler/eval
Compiler.java: 6745 clojure.lang.Compiler/eval
core.clj: 3081 clojure.core/eval
main.clj: 240 clojure.main/repl/read-eval-print/fn
main.clj: 240 clojure.main/repl/read-eval-print
main.clj: 258 clojure.main/repl/fn
main.clj: 258 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 630 clojure.core/apply
core.clj: 1868 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
AFn.java: 22 clojure.lang.AFn/run
ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
Thread.java: 745 java.lang.Thread/run
1. Caused by datomic.impl.Exceptions$IllegalStateExceptionInfo
FooBar
{}
boot.user1749244930106590866.clj: 172 datomic.extensions/eval62684/fn
datalog.clj: 604 datomic.datalog.FnRel/join_project_with
datalog.clj: 117 datomic.datalog/join-project-coll
datalog.clj: 220 datomic.datalog/fn
datalog.clj: 52 datomic.datalog/fn/G
datalog.clj: 1372 datomic.datalog/eval-clause/fn
datalog.clj: 1362 datomic.datalog/eval-clause
datalog.clj: 1448 datomic.datalog/eval-rule/fn
datalog.clj: 1433 datomic.datalog/eval-rule
datalog.clj: 1476 datomic.datalog/eval-query
datalog.clj: 1565 datomic.datalog/qsqr
datalog.clj: 1522 datomic.datalog/qsqr
query.clj: 711 datomic.query/q
query.clj: 740 datomic.query/query
api.clj: 39 datomic.api/query
boot.user1749244930106590866.clj: 172 ns-62993/eval62994/fn
function.clj: 31 datomic.function.Function/invoke
AFn.java: 156 clojure.lang.AFn/applyToHelper
function.clj: 40 datomic.function.Function/applyTo
core.clj: 632 clojure.core/apply
db.clj: 2475 datomic.db.ProcessExpander/inject
db.clj: 2372 datomic.db.ProcessInpoint/inject
db.clj: 2535 datomic.db/with-tx/inject-all/fn
PersistentVector.java: 333 clojure.lang.PersistentVector/reduce
core.clj: 6518 clojure.core/reduce
db.clj: 2535 datomic.db/with-tx/inject-all
db.clj: 2539 datomic.db/with-tx
peer.clj: 558 datomic.peer.LocalConnection/fn
peer.clj: 558 datomic.peer.LocalConnection/transactAsync
peer.clj: 550 datomic.peer.LocalConnection/transact
api.clj: 94 datomic.api/transact
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971/fn
boot.user1749244930106590866.clj: 185 com.broadbrim.procedure/eval62971
Compiler.java: 6782 clojure.lang.Compiler/eval
Compiler.java: 6745 clojure.lang.Compiler/eval
core.clj: 3081 clojure.core/eval
main.clj: 240 clojure.main/repl/read-eval-print/fn
main.clj: 240 clojure.main/repl/read-eval-print
main.clj: 258 clojure.main/repl/fn
main.clj: 258 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 630 clojure.core/apply
core.clj: 1868 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
AFn.java: 22 clojure.lang.AFn/run
ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
Thread.java: 745 java.lang.Thread/run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment