This commit adds the ability to use the `opentelemetry` feature flag at
runtime by using the env variable `DORA_TELEMETRY`. Using environment
variable reduce the need to do some argument drilling between our
different process as well as making configurable in the YAML at no cost.
Usage:
```bash
docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest
DORA_TELEMETRY=true dora-daemon --run-dataflow dataflow.yml
```
Current limitation:
- The telemetry currently only work with Jaeger on the local network with
default port: 6831 and 6832.
As we are not currently using zenoh communication, it would be preferable
to not mention it in the datalflow graph as some people might:
- A. confuse it with our shared memory.
- B. Question why it is there.
- C. Question what is zenoh.
I think that we can support dora-rs without external communication config,
as I can see many use-case in simulation.
After adding #236 , error of initialization is shadowed by bailing on
the sender channel.
Bailing used to happen here: ccec196234/binaries/runtime/src/lib.rs (L136)
This makes it hard to debug.
This PR will push the error into the sender channel, and report any error
of initialization making it easier to debug.
Now the channel is used without error, but any error of initialization
will bail the runtime here: ccec196234/binaries/runtime/src/lib.rs (L137)
Before we only received the events from the queue when the next message arrived from the node. This could result in very large queue lengths when nodes call dora functions infrequently (e.g. when they do a lot of processing). By waiting for both new events and new messages at the same time, we can drop old events directly and avoid this queue buildup.