rethinkdb.net/deliver-result tries to conj to ex-info, which fails
It would seem that I am the only user of clj-rethinkdb — if so, this issue is not really a bug report, but rather a request for comments.
I've spent some time today trying to debug why I wasn't able to process changefeed exceptions.
I had this in the logs:
Jul 09, 2020 3:28:23 PM clojure.tools.logging$eval138$fn__143 invoke
SEVERE: #error {
:cause RethinkDB server: Changefeed aborted (unavailable).
:data {:type :op-failed, :response {:t 18, :e 4100000, :r [Changefeed aborted (unavailable).], :b []}}
:via
[{:type clojure.lang.ExceptionInfo
:message RethinkDB server: Changefeed aborted (unavailable).
:data {:type :op-failed, :response {:t 18, :e 4100000, :r [Changefeed aborted (unavailable).], :b []}}
:at [rethinkdb.net$make_rethink_exception invokeStatic net.clj 29]}]
:trace
[[rethinkdb.net$make_rethink_exception invokeStatic net.clj 29]
[rethinkdb.net$make_rethink_exception invoke net.clj 28]
[rethinkdb.net$handle_response invokeStatic net.clj 119]
[rethinkdb.net$handle_response invoke net.clj 93]
[rethinkdb.net$setup_consumer$fn__23980 invoke net.clj 135]
closely followed by:
Jul 09, 2020 3:28:23 PM clojure.tools.logging$eval138$fn__143 invoke
SEVERE: error in stream handler
java.lang.ClassCastException: clojure.lang.ExceptionInfo cannot be cast to clojure.lang.IPersistentCollection
at clojure.core$conj__5390.invokeStatic(core.clj:82)
at clojure.core$conj__5390.invoke(core.clj:82)
at rethinkdb.net$deliver_result.invokeStatic(net.clj:79)
at rethinkdb.net$deliver_result.invoke(net.clj:75)
at rethinkdb.net$handle_response.invokeStatic(net.clj:118)
at rethinkdb.net$handle_response.invoke(net.clj:93)
at rethinkdb.net$setup_consumer$fn__23980.invoke(net.clj:135)
I stared and the code on GitHub and line numbers didn't match, and the whole thing didn't make sense. Until I realized that the code I'm running is different from GH master. It seems that 0.15.26 was released way back in 2016, and all the changes since then have never been released, including a fix for the conj above.
Before I do anything else, I thought I'd ask — @apa512, are there reasons for not releasing anything after 0.15.26? Is the code considered risky or experimental?
As it is, 0.15.26 is unable to deliver any exception created in handle-response, because the conj in deliver-result will fail.
Hi @jwr,
I don't remember any issues with the latest version. I just never got around to releasing it with RethinkDB shutting down and me no longer using it at work.
Thank you. I am considering building and switching to the current HEAD of clj-rethinkdb, just slightly worried about Cursor-related changes.
I'm pretty sure https://clojars.org/com.apa512/rethinkdb/versions/1.0.0-SNAPSHOT is up to date, but if it makes things easier I don't mind making it the proper non-SNAPSHOT version.