This is a contribution challenge. The goal is to add trace debugging to Eclipse eCALβ’ using Open Telemetry.
Eclipse eCAL is a publish subscribe Middleware with the main focus on research and development of autonomous driving algorithms.
- A Publisher publishes data to a topic, identified by a name.
- A Subscriber subscribes to a topic, identified by a name. When it received data, it calls a callback function.
In a 1:1 connection, that looks like follows:
As you can think, with more nodes, it is getting complicated! Especially, when a callback is still running while new data is being published, that data has to be dropped.
Let's look at another example:
The PubSub2
node may now ask:
Why wasn't I informed about
msg A
? π€
Well, nobody knows, because the charts you are seeing above don't exist, yet. π£
Debugging this inter-process time-related behavior is hard. You cannot use traditional debuggers like gdb
, as that would modify the behavior That's why we want to add trace debugging to eCAL.
The goal is to know: What is happening when? And why?
- When was the data published?
- How long did it take to transmit the data?
- How long did the callback need to process the data?
- Who triggered the callback?
OpenTelemetry is a library that can be used to generate traces at runtime without actually debugging and/or stopping the process. These traces can be visualized using a tool like Jaeger:
- C++
- CMake
We recommend using Windows or Linux. MacOS may work too, but eCAL is poorly tested on that OS.
- Kerstin Keller
- Florian Reimold
- Kristof Hannemann
- Rex Schilasky
-
Checkout eCAL
git clone https://github.com/eclipse-ecal/ecal.git cd ecal git submodule init git submodule update
-
CMake and build a minimalistic eCAL configuration
mkdir _build cd _build cmake .. -DBUILD_APPS=OFF -DHAS_QT5=OFF -DHAS_HDF5=OFF -DECAL_THIRDPARTY_BUILD_FINEFTP=OFF -DECAL_THIRDPARTY_BUILD_CURL=OFF -DECAL_THIRDPARTY_BUILD_HDF5=OFF -DECAL_THIRDPARTY_BUILD_QWT=OFF -DCMAKE_BUILD_TYPE=Debug cmake --build . --config Debug
-
Start Samples
-
Add Open Telementry
- Well, you are on your own on this one, but we are here to help! π
Eclipse eCAL:
- π Homepage: http://ecal.io
- π¨βπ» GH Repository: https://github.com/eclipse-ecal/ecal
- π‘ How to compile eCAL: https://eclipse-ecal.github.io/ecal/development/building_ecal_from_source.html
Open Telemetry
- = Library for generating traces
- π Homepage: https://opentelemetry.io/
- π¨βπ» GH Repository: https://github.com/open-telemetry/opentelemetry-cpp
- π‘ Open Telemetry in C++: https://opentelemetry.io/docs/demo/services/currency/
Jaeger:
- = Viewer for OpenTelemetry data:
- π Homepage: https://www.jaegertracing.io/