apa512 / clj-rethinkdb

Eclipse Public License 1.0
204 stars 42 forks source link

rethinkdb.net/deliver-result tries to conj to ex-info, which fails #199

Open jwr opened 4 years ago

jwr commented 4 years ago

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.

apa512 commented 4 years ago

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.

jwr commented 4 years ago

Thank you. I am considering building and switching to the current HEAD of clj-rethinkdb, just slightly worried about Cursor-related changes.

apa512 commented 4 years ago

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.