Comments (4)
Making report() async will take over control of the runtime from user. I think it'll be opposite to your need.
from minitrace-rust.
If you use LocalCollector
, the Reporter will not be enabled. Why you need it to work with threads/blocking stuff?
from minitrace-rust.
Making report() async will take over control of the runtime from user. I think it'll be opposite to your need.
Hmm, actually that's a good point 🤔
If I understand correctly, at the moment, I need to use a blocking mechanism to ship the collected traces in the Reporter. Any idea how can I eventually do something like the following?
let reporter = make_reporter();
let response = run_flow(req);
// This takes the async function and runs it in "background" (NOT in a thread), so it does not block returning the response
context.wait_until(async move {
// The function here needs to be async, because wasm-bindgen runtime will convert it to JS Promise and will await it
// Calling the reporter like that means that the reporter must be blocking, right?
// But even if I want to use `reqwest::blocking` here, it's not supported on WASM runtime.
// So ideally, I wanted to `.await` this report call.
reporter.report(spans)
});
response
I guess another way to handle it is to kinda do async(wait_until) -> sync (report) -> async (actual HTTP call to ship the traces)? 🤔 not sure how that would look like 🤔
from minitrace-rust.
If you use
LocalCollector
, the Reporter will not be enabled. Why do you need it to work with threads/blocking stuff?
I have an abstraction on top of the reporter creation. We are building for 2 targets: WASM (CF Worker) and a binary with actix-web HTTP server. This abstraction handles everything, including plugins like tracing/telemetry.
The only thing left for each runtime is to take care of the tracing lifecycle ( = when to report).
I guess I can wrap the Reporter somehow and have a different mechanism specifically for the WASM runtime, and then ship it as async.
Closing ✅
from minitrace-rust.
Related Issues (20)
- Request: panic instead of noop HOT 2
- Automatically create a root span if none is present. HOT 1
- is it possible to create multiple instances of the collector? HOT 10
- WASM (`wasm32-unknown-unknown`) support? HOT 12
- `minitrace-opentelemetry` doesn't work with `opentelemetry_zipkin` exporter HOT 3
- Feature request: Span property on #[trace] macro HOT 6
- Feature request: allow to use minitrace without global collector
- Panic on wasm: time not implemented on this platform HOT 5
- RFC: tokio-tracing compatible layer HOT 6
- Profile-Guided Optimization (PGO) benchmark results
- `LocalSpan::enter_with_parent` missing? HOT 9
- `futures::Stream` and `futures::Sink` instrumentation HOT 7
- Add span tags dynamically
- WASM target support improvements HOT 5
- [BUG] LocalSpan is broken in quick functions HOT 4
- loose strict dependency version for `opentelemetry` HOT 1
- Making `futures` an optional dependency HOT 1
- Why Reporter::report gets passed a reference instead of a Vec of owned objects? HOT 1
- Check synchronization when using rtrb::Consumer::is_abandoned() HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from minitrace-rust.