eclipse-iceoryx / eclipse-iceoryx/iceoryx
Refactoring of introspection
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 492
- Avg merge
- 18h 57m
- Merged PRs (30d)
- 1
Description
## Brief feature description
The introspection needs a refactoring regarding:
- how is data internally stored and accessible for introspection
- how is this data sent to the client
- which information should be presented and how
- introspection overhead should be minimal when the introspection is not used
- [consider reserving](https://github.com/eclipse-iceoryx/iceoryx/pull/1162#discussion_r813858455) the service string `iceoryx` for internal publishers only
## ToDo:
- [ ] Fix/Design or refactor error handling in `ProcessIntrospection::run()`
## Detailed information
When the introspection was implemented multiple pub/sub scenarios have not been considered, e.g. when a subscriber is subscribed to multiple publishers only one connection is displayed. When one publisher stops sending data then the subscriber is shown as disconnected (while still receiving data from the other publisher). This has to be adapted.
Additionally, introspection tests are missing and the existing ones may have to be adapted once it is clear how data is internally stored and sent to the client.
Open questions:
- Can we replace std::map?
- Do we want to have a mechanism to turn off the data transfer to the introspection? Do we still need it after the refactoring?
- Do we want to stick to ncurses?
- Also consider #414 and #31 and #402
- Which features that have been removed shall be re-added? See this [PR](https://github.com/eclipse-iceoryx/iceoryx/pull/360/files)
- Throughput calculation?
- Decide on whether we want parsable introspection output
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading ProcessIntrospection::run() and the existing introspection tests, then map how data is stored and sent to the client across the listed pub/sub scenarios. Done means an agreed refactoring design, corrected multi-publisher behavior, minimal overhead when introspection is unused, and updated introspection tests; resolve the open questions before implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- distributed-systems
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100