Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/topo map enhancements #77

Merged
merged 2 commits into from
Sep 19, 2024
Merged

Conversation

Cahb
Copy link
Contributor

@Cahb Cahb commented Sep 17, 2024

No description provided.

Currently, schema validator panics because sync func is called
within async context.

Temporary W/A to at least overcome issue at least temporarily,
up untill refactoring enforced.

Also add RUST_BACKTRACE=1 to the run_cgw to enable tracing
by default (if launched through helper script).

Signed-off-by: Oleksandr Mazur <[email protected]>
topo_map.process_state_message(&device_type, evt).await;
topo_map.debug_dump_map().await;

// TODO: remove this Arc clone:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this comment still relevant or should be removed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not really. it states that #306 should be removed, and some other way of accessing NB API should be made further on;
Currently, a copy of Arc is being passed around and copied, and we potentially have to come up with a new approach;

.process_device_topology_event(&device_type, evt)
.await;
topo_map.debug_dump_map().await;
// TODO: remove this Arc clone:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above

Current approach aims to fight for best performance we can get
from topo map by utilizing the following key concepts:
  - Event notification (notify NB about topo change) is handled
    by async task;
  - Events received from devices are pushed into queue for processing;
    These events then processed asynchronously, without blocking the
    underlying connections, to prevent websocket connections from
    staggerring completely, and also to serialize the processing
    of connections in a semi-synchronous manner
    (events pushed asynchronously, but the processing of them
     boils down to one-by-one FIFO-mannered processing synchronously)

Also added extended support for RT events: RT events now also generate
join/leave/migrate events to the NB services, so they can act
accordingly.
Current implementation also adds barebone support essentials
for graph-like presentation of topology, but doesn't implement
the graph generation itself (e.g. data is being collected / stored
in a way, in which future impl could just simply use it and focus
on the graph-generation algorith itself, rather then implementing
code that gathers data / tweaks parsers etc; Graph gen was postponed
due to lower priority).

Signed-off-by: Oleksandr Mazur <[email protected]>
Co-developed-by: Sviatoslav Boichuk <[email protected]>
Signed-off-by: Sviatoslav Boichuk <[email protected]>
@SviatoslavBoichuk SviatoslavBoichuk merged commit 99241ad into next Sep 19, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants