try to print backtraces when handlers fail

This commit is contained in:
Simon Cruanes 2021-04-08 19:28:49 -04:00
parent e5cb0a331b
commit b7e89f67e4

View file

@ -171,10 +171,11 @@ module Make(IO : IO)
let protect ~id f = let protect ~id f =
IO.catch f IO.catch f
(fun e -> (fun e ->
let message = spf "%s\n%s" (Printexc.to_string e) (Printexc.get_backtrace()) in
let r = Jsonrpc.Response.error id let r = Jsonrpc.Response.error id
(Jsonrpc.Response.Error.make (Jsonrpc.Response.Error.make
~code:Jsonrpc.Response.Error.Code.InternalError ~code:Jsonrpc.Response.Error.Code.InternalError
~message:(Printexc.to_string e) ()) ~message ())
in in
send_response self r) send_response self r)
in in
@ -222,11 +223,12 @@ module Make(IO : IO)
IO.failwith (spf "cannot decode request: %s" e) IO.failwith (spf "cannot decode request: %s" e)
end) end)
(fun e -> (fun e ->
let message = spf "%s\n%s" (Printexc.to_string e) (Printexc.get_backtrace()) in
let r = let r =
Jsonrpc.Response.error id Jsonrpc.Response.error id
(Jsonrpc.Response.Error.make (Jsonrpc.Response.Error.make
~code:Jsonrpc.Response.Error.Code.InternalError ~code:Jsonrpc.Response.Error.Code.InternalError
~message:(Printexc.to_string e) ()) ~message ())
in in
send_response self r) send_response self r)
in in