Skip to content

feat(py): add optional timeouts for waitUntil functions - #151

Open
lolito93 wants to merge 28 commits into
SEN-1680-optimize-sen-debug-experiencefrom
SEN-1792-optional-timeouts-for-wait-until-functions-on-python-component
Open

feat(py): add optional timeouts for waitUntil functions#151
lolito93 wants to merge 28 commits into
SEN-1680-optimize-sen-debug-experiencefrom
SEN-1792-optional-timeouts-for-wait-until-functions-on-python-component

Conversation

@lolito93

Copy link
Copy Markdown
Collaborator

Resolves SEN-1792

EnriqueParodi
EnriqueParodi previously approved these changes Aug 26, 2026
andressaumell and others added 19 commits August 27, 2026 12:25
This change prevents using reserved or unavailable multicast addresses and
ports.

Also allow defining an additional exclusion range using
`busConfig.multicastExclusions` and `portExclusions`.

resolves SEN-1714
Adds support for configuring the TCP acceptor, TCP source and UDP unicast
ports.

Each port can use a fixed value or be assigned automatically by the OS
(default behavior).

resolves SEN-1715
Pending callbacks outlived the dispatcher, giving a heap use-after-free.

resolves SEN-1613
Adds support for the ProbePortRange port binding mode in the ether component.

With this mode, users can configure an inclusive port range. It starts
probing from a random point within the range and binds to the first
available port.

resolves SEN-1723
Resolves SEN-1735.

### Issue

In Sen's bus subsystem, when a consuming component has **two or more
Interests that both match the same Object**, the code creates **multiple
independent proxy instances** for that single underlying Object, all owned
by the same consumer component.

The design invariant is: **at most one proxy per `(Object,
consuming-component)`**. When a consuming component has multiple overlapping
subscriptions matching the same source Object, they should share a single
proxy instance.

### Fix

Add a **`LocalParticipant`-level proxy cache** that allows multiple
`ProxyManager`s to share the same proxy instance for the same `(Object,
consuming-component)`.

`LocalParticipant::lookupProxyByObjectId(id)` upgrades the `weak_ptr`;
returns nullptr if expired (proxy was destroyed and no one else held it).

`LocalParticipant::registerProxy(id, proxy)` inserts into the cache.

When a proxy is destroyed (last refcount drop), the cache entry's `weak_ptr`
expires naturally. No proactive cleanup is needed beyond `try_emplace`
semantics overwriting expired entries on next registration. Alternatively, a
small cleanup pass during drain can compact expired entries.
The interests handler's members were read and written from more than one
thread without synchronisation.

Resolves SEN-1755
The random number generator was shared between threads without
synchronisation.

resolves SEN-1609
Subscriptions could outlive the component shutdown and reach a destroyed
local participant.

resolves SEN-1733
The io logger's output did not appear; it now writes to stdout.

resolves SEN-1769
Implements a config-time collision check for multicast addresses.

During the ether component startup, the system computes the multicast
addresses for all configured buses and fails closed with a diagnostic
message if any two different buses map to the same address.

Additionally, a warning based on the birthday paradox formula has been
integrated to alert if the collision probability exceeds 5% based on the
number of configured buses.

resolves SEN-1716
Adds the `stl` to represent a network footprint report and internal support
needed to build it.

The report describes the buses and their multicast addresses, multicast
exclusions, conflicts and the ports used.

A new reporter can now be installed through `PreloadApi` and invoked by the
kernel with a list of bus addresses.

resolves SEN-1717
Covers subscriptions created and destroyed while the interest is live.

resolves SEN-1730
Creating native types from map or list values is now rejected, so the local
shell behaves the same as the external one for commands with optionals.

resolves SEN-1749
Replaces the object provider's container with xenium's lock-free one to
reduce memory corruption under stress, ahead of the kernel refactoring.

Resolves SEN-1759
Pending timers outlived the io_context during session teardown, giving a
heap use-after-free.

resolves SEN-1774
The smoothing loop aimed at the update's state at its own timestamp, so over
a large gap it converged on a target that had already moved. Each step now
extrapolates the update to the time the smoothed solution has reached.

Resolves SEN-1768
Fix ls command to correctly display tags and styles for opened sessions and
buses, even when they don't contain any objects

resolves SEN-1777
Coverage reporting covered the libraries only; component targets are now
included in the generated report.

Resolves SEN-1744
@EnriqueParodi
EnriqueParodi dismissed their stale review August 27, 2026 10:33

The merge-base changed after approval.

@EnriqueParodi
EnriqueParodi force-pushed the SEN-1680-optimize-sen-debug-experience branch from 046df95 to 1bdfbbf Compare August 27, 2026 10:33
@EnriqueParodi
EnriqueParodi force-pushed the SEN-1792-optional-timeouts-for-wait-until-functions-on-python-component branch from 02b55b1 to 782eb2a Compare August 27, 2026 10:33
@EnriqueParodi
EnriqueParodi marked this pull request as draft August 27, 2026 14:29
@EnriqueParodi
EnriqueParodi marked this pull request as ready for review August 27, 2026 14:29
@EnriqueParodi
EnriqueParodi marked this pull request as draft August 27, 2026 15:15
@EnriqueParodi
EnriqueParodi marked this pull request as ready for review August 27, 2026 15:15
@EnriqueParodi
EnriqueParodi force-pushed the SEN-1680-optimize-sen-debug-experience branch from 1bdfbbf to db24cc7 Compare August 27, 2026 18:04
@EnriqueParodi
EnriqueParodi force-pushed the SEN-1792-optional-timeouts-for-wait-until-functions-on-python-component branch from 782eb2a to 3853f55 Compare August 27, 2026 18:04
andressaumell and others added 9 commits August 27, 2026 20:09
Adds new options to `cli_run` to generate a network footprint report after
preload, without starting the application.

Reports can include externally supplied buses and the output can be
"human-readable" or JSON.

`--print-network-footprint`: generate the report.
    `--bus <session.bus>`: includes an additional bus.
    `--bus-file <path>`: reads additional buses from a file, one per line.
    `--format text|json`: selects the output format.

Resolves SEN-1753
The counter was incremented and then read back separately, so concurrent
calls could send a header carrying a different id from the one returned to
the caller. Make it atomic and use the value the increment produced.

Resolves SEN-1784
Integration tests covering that the interactive prompt is redrawn correctly
once log output has been written.

resolves SEN-1779
finished listener state not received due to process finishing before state
gets reported

Resolves SEN-1793
Fix duplicates object name detection across different local participants on
the same bus.

The existing validation only rejected duplicates with a single participant,
allowing different pipelines to publish objects with the same name.

resolves SEN-1785
This PR provides additional tests to increase the test coverage in `libs/util`.

Resolves SEN-1746
With the `SEN_USER_SIZE_OPTIMIZED_DEBUG` users can now control whether they
want a smaller and better optimized debug build that is fast and has
reliable debug information.

Resolves SEN-1680
Renames SEN_USER_SIZE_OPTIMIZED_DEBUG to SEN_OPTIMIZED_DEBUG, with the
matching Conan option, and collects the debug compiler flags into one
variable.

Resolves SEN-1680
waitUntilEmpty, waitUntilNotEmpty and waitUntilSizeIs now take an optional
timeout, passed through to waitUntilCpp. They also move from inline lambdas
to member functions.

Resolves SEN-1792
@EnriqueParodi
EnriqueParodi force-pushed the SEN-1680-optimize-sen-debug-experience branch from db24cc7 to ba16eb9 Compare August 27, 2026 18:25
@EnriqueParodi
EnriqueParodi force-pushed the SEN-1792-optional-timeouts-for-wait-until-functions-on-python-component branch from 3853f55 to bbe79b3 Compare August 27, 2026 18:25
@lolito93
lolito93 force-pushed the SEN-1680-optimize-sen-debug-experience branch from ba16eb9 to add4734 Compare September 1, 2026 11:07
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.

6 participants