eclipse-iceoryx / eclipse-iceoryx/iceoryx

Refactoring of introspection

Open
#518 7 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

good first issue refactoring
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.