Add trace information to errors of WebClient
Closed this issue · 1 comments
Problem to solve
Добавить к ошибкам трассировку возникновения ошибки.
Proposal
Использовать Traced
враппер для добавления трассировки к ошибкам.
На текущий момент chaining erros выглядит примерно так:
JsValue -> WasmErr -> media::manager::Error(WasmErr) |
serde_json::Error -> rpc::websocket::Error | -> anyhow::Error -> js_sys::Error
peer::media::Error |
в каждом модуле определен свой тип ошибки (media::manager::Error, rpc::websocket::Error) а из mod возвращается anyhow::Error
(если будет нужно больше контекста можно определить здесь свой тип или использовать anyhow::Context
)
будет так:
JsValue -> WasmErr -> Traced<media::manager:Error(WasmErr)> |
serde_json::Error -> Traced<rpc::heartbeat::Error> | -> Traced<anyhow::Error> -> js_sys::Error
Traced<peer::conn::Error> |
вместо Traced<anyhow::Error>
можно просто anyhow::Error
, т.к. Traced реализует Error trait.
Или опять же определить свой тип в каждом mod type media::Error(Traced<anyhow::Error>)
.
Все зависит от того что именно будет возвращаться клиенту. Пока не реализован реэкспорт snippets можем возвращать либо js_sys::Error:
Error: get user media failed: NotAllowedError: Permission denied
error trace:
medea_jason::media::manager
at :8081/jason\src\media\manager.rs:179
at Module.__wbg_new_b523d83e932ae6ee (medea_jason.js?2453:1418)
at __wbg_new_b523d83e932ae6ee (bundle.js:257)
at js_sys::Error::new::h08f97390ec11f6d9 (:8081/wasm-function[4462]:0x22002a)
at medea_jason::media::manager::MediaManagerHandle::init_local_stream::{{closure}}::{{closure}}::h7ff1d21b763c0d46 (:8081/wasm-function[1481]:0x165fe9)
at core::result::Result<T,E>::map_err::h5a39b2ad37da36b6 (:8081/wasm-function[702]:0xfe214)
at medea_jason::media::manager::MediaManagerHandle::init_local_stream::{{closure}}::hd4b8b38be44a8241 (:8081/wasm-function[504]:0xd3465)
at <std::future::GenFuture<T> as core::future::future::Future>::poll::{{closure}}::h87cb4978ae999dcc (:8081/wasm-function[1308]:0x1543fd)
at std::future::set_task_context::h941ddf85dc574c91 (:8081/wasm-function[3535]:0x1f86e0)
at <std::future::GenFuture<T> as core::future::future::Future>::poll::h0f666d6b4619ddea (:8081/wasm-function[4829]:0x22ccde)
at std::future::poll_with_tls_context::{{closure}}::h06ff69f1f9e86284 (:8081/wasm-function[6262]:0x25597f)
или просто JsValue::from_str
:
get user media failed: NotAllowedError: Permission denied
error trace:
medea_jason::media::manager
at jason\src\media\manager.rs:179