feat(py): add optional timeouts for waitUntil functions - #151
Open
lolito93 wants to merge 28 commits into
Open
Conversation
EnriqueParodi
previously approved these changes
Aug 26, 2026
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
dismissed
their stale review
August 27, 2026 10:33
The merge-base changed after approval.
EnriqueParodi
force-pushed
the
SEN-1680-optimize-sen-debug-experience
branch
from
August 27, 2026 10:33
046df95 to
1bdfbbf
Compare
EnriqueParodi
force-pushed
the
SEN-1792-optional-timeouts-for-wait-until-functions-on-python-component
branch
from
August 27, 2026 10:33
02b55b1 to
782eb2a
Compare
EnriqueParodi
marked this pull request as draft
August 27, 2026 14:29
EnriqueParodi
marked this pull request as ready for review
August 27, 2026 14:29
EnriqueParodi
marked this pull request as draft
August 27, 2026 15:15
EnriqueParodi
marked this pull request as ready for review
August 27, 2026 15:15
EnriqueParodi
force-pushed
the
SEN-1680-optimize-sen-debug-experience
branch
from
August 27, 2026 18:04
1bdfbbf to
db24cc7
Compare
EnriqueParodi
force-pushed
the
SEN-1792-optional-timeouts-for-wait-until-functions-on-python-component
branch
from
August 27, 2026 18:04
782eb2a to
3853f55
Compare
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
force-pushed
the
SEN-1680-optimize-sen-debug-experience
branch
from
August 27, 2026 18:25
db24cc7 to
ba16eb9
Compare
EnriqueParodi
force-pushed
the
SEN-1792-optional-timeouts-for-wait-until-functions-on-python-component
branch
from
August 27, 2026 18:25
3853f55 to
bbe79b3
Compare
4 tasks
lolito93
force-pushed
the
SEN-1680-optimize-sen-debug-experience
branch
from
September 1, 2026 11:07
ba16eb9 to
add4734
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves SEN-1792