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

Implement liveliness support #632

Merged
merged 1 commit into from
Nov 15, 2024
Merged

Conversation

sashacmc
Copy link
Member

@sashacmc sashacmc commented Sep 6, 2024

Implement liveliness support, can be enabled/disabled by means of Z_FEATURE_LIVELINESS

  • Token:

    • z_liveliness_declare_token
    • z_liveliness_undeclare_token
  • Subscriber: (require Z_FEATURE_SUBSCRIPTION enabled)

    • z_liveliness_declare_subscriber
  • Query: (require Z_FEATURE_QUERY enabled)

    • z_liveliness_get
  • Token interest query processing

Examples:

  • z_sub_liveliness
  • z_get_liveliness
  • z_liveliness

Additionally:

  • Implemented iterator for _z_int_void_map
  • Cleaned up (reused) stuff from pull subscribers ( _remote_subscriptions)

Closes: #621

Copy link

github-actions bot commented Sep 6, 2024

PR missing one of the required labels: {'bug', 'dependencies', 'new feature', 'internal', 'documentation', 'enhancement', 'breaking-change'}

@sashacmc sashacmc added the new feature Something new is needed label Sep 6, 2024
@sashacmc sashacmc force-pushed the liveliness branch 4 times, most recently from 2398a24 to 86d3455 Compare November 7, 2024 10:22
@sashacmc sashacmc changed the title Implement liveliness token support Implement liveliness support Nov 7, 2024
@sashacmc sashacmc force-pushed the liveliness branch 2 times, most recently from ed89516 to aff1ff4 Compare November 7, 2024 16:23
@sashacmc sashacmc marked this pull request as ready for review November 7, 2024 17:16
examples/unix/c11/z_liveliness.c Show resolved Hide resolved
include/zenoh-pico/api/liveliness.h Outdated Show resolved Hide resolved
src/api/liveliness.c Show resolved Hide resolved
src/api/liveliness.c Outdated Show resolved Hide resolved
src/session/liveliness.c Outdated Show resolved Hide resolved
@OlivierHecart
Copy link
Contributor

Another general comment:
As far as I understood, disconnection is not really managed yet run pico. But theoretically (and in Rust) when connectivity is lost, all remote tokens should be undeclared: an active liveliness subscriber should receive DEL messages for all alive remote tokens, and a liveliness get performed after the disconnection should get no replies.
Not sure if we want to handle that in this PR or another one.

@sashacmc
Copy link
Member Author

Another general comment: As far as I understood, disconnection is not really managed yet run pico. But theoretically (and in Rust) when connectivity is lost, all remote tokens should be undeclared: an active liveliness subscriber should receive DEL messages for all alive remote tokens, and a liveliness get performed after the disconnection should get no replies. Not sure if we want to handle that in this PR or another one.

Yes, make sense, I created an issue to don't forget do it after I rework disconnection handling in #767

src/net/liveliness.c Show resolved Hide resolved
src/net/liveliness.c Show resolved Hide resolved
include/zenoh-pico/api/liveliness.h Outdated Show resolved Hide resolved
include/zenoh-pico/api/liveliness.h Outdated Show resolved Hide resolved
src/net/liveliness.c Outdated Show resolved Hide resolved
@milyin milyin merged commit 1901e44 into eclipse-zenoh:main Nov 15, 2024
54 checks passed
gabrik pushed a commit that referenced this pull request Nov 18, 2024
* Update closure handlers documentaion (#736)

* Rename closure callback/dropper types (#739)

* Remove legacy z_zint_t from public API (#741)

* Add `export "C"` for all header files (#740)

* Add `export "C"` for proper closures callbacks export

* Add `export "C"` for all headers

* add serialize from substr functions (#742)

* Rename z_loaned_hello_handler_t to z_closure_hello_callback_t (#743)

* Mark z_reply_replier_id as unstable (#745)

* Add documentation about logging (#744)

* Update README.md (#746)

* hardcode clang-format runner to Ubuntu24.04 (#748)

* fix build granularity (#747)

* fix: badly named constant (#750)

* fix packages

* fix: update debian packaging

- include libzenohpico.so in debian package
- change the package name to libzenohpico in line with libzenohc
- set correct debian version for pre releases
- fix wrong version used in Release mode

* fix: debian dev package name

* fix: package version for releases (#753)

* fix: debian_version for official releases

otherwise they would be undefined

* fix: align cpack version with zenoh-c

* chore: review comments

move cpack version closer to where it's used

* build shared lib for packages instead of static one (#757)

* Fix z_task cleanup for platforms with pthread support (#759)

* Fix read/lease task cleanup (#760)

* Align ID string representation with zenoh (lowercase) (#761)

* Remove default parameters from z_closure (#755)

* build both libraries:shared and static when packaging; (#766)

add static library to dev package;

* Publish debian packages (#769)

* fix: add workflow to release debian packages

* fix: align with zenoh-c

- update package names
- set version string in the same way
- set DEBARCH/RPMARCH
- set CPACK_PACKAGE_FILE_NAME
- add -j to zip archive to not include parent folder

* fix: use CPACK_PACKAGE_NAME

* fix: pass package name to all build targets

* fix: Don't tag release branch during dry-run

* Replace exit with return in zephyr examples (#774)

* Add platform_common.c to zephyr CMakeLists.txt file

* Rework Zenoh ID conversion

* chore: Update org secrets (#782)

As per eclipse-zenoh/.eclipsefdn#18, secrets were updated to follow eclipse foundation naming convention.

* Implement liveliness support (#632)

* fix: merge shenanigans

* fix: integration test issues

* fix: missing send reply final

* fix: liveliness double free

---------

Co-authored-by: Alexander Bushnev <Alexander@Bushnev.pro>
Co-authored-by: DenisBiryukov91 <155981813+DenisBiryukov91@users.noreply.github.com>
Co-authored-by: Denis Biryukov <denis.biryukov@zettascale.tech>
Co-authored-by: Diogo Mendes Matsubara <diogo.matsubara@zettascale.tech>
Co-authored-by: Luca Cominardi <luca.cominardi@gmail.com>
gabrik pushed a commit that referenced this pull request Nov 19, 2024
* Update closure handlers documentaion (#736)

* Rename closure callback/dropper types (#739)

* Remove legacy z_zint_t from public API (#741)

* Add `export "C"` for all header files (#740)

* Add `export "C"` for proper closures callbacks export

* Add `export "C"` for all headers

* add serialize from substr functions (#742)

* Rename z_loaned_hello_handler_t to z_closure_hello_callback_t (#743)

* Mark z_reply_replier_id as unstable (#745)

* Add documentation about logging (#744)

* Update README.md (#746)

* hardcode clang-format runner to Ubuntu24.04 (#748)

* fix build granularity (#747)

* fix: badly named constant (#750)

* fix packages

* fix: update debian packaging

- include libzenohpico.so in debian package
- change the package name to libzenohpico in line with libzenohc
- set correct debian version for pre releases
- fix wrong version used in Release mode

* fix: debian dev package name

* fix: package version for releases (#753)

* fix: debian_version for official releases

otherwise they would be undefined

* fix: align cpack version with zenoh-c

* chore: review comments

move cpack version closer to where it's used

* build shared lib for packages instead of static one (#757)

* Fix z_task cleanup for platforms with pthread support (#759)

* Fix read/lease task cleanup (#760)

* Align ID string representation with zenoh (lowercase) (#761)

* Remove default parameters from z_closure (#755)

* build both libraries:shared and static when packaging; (#766)

add static library to dev package;

* Publish debian packages (#769)

* fix: add workflow to release debian packages

* fix: align with zenoh-c

- update package names
- set version string in the same way
- set DEBARCH/RPMARCH
- set CPACK_PACKAGE_FILE_NAME
- add -j to zip archive to not include parent folder

* fix: use CPACK_PACKAGE_NAME

* fix: pass package name to all build targets

* fix: Don't tag release branch during dry-run

* Replace exit with return in zephyr examples (#774)

* Add platform_common.c to zephyr CMakeLists.txt file

* Rework Zenoh ID conversion

* chore: Update org secrets (#782)

As per eclipse-zenoh/.eclipsefdn#18, secrets were updated to follow eclipse foundation naming convention.

* Implement liveliness support (#632)

* Mark liveliness API as unstable and disable by default

* Fix typo (#787)

* fix: correct 1.1 issues

* feat: add zp_batch_flush

* fix: switch to #if 0 to deactivate tcp function

---------

Co-authored-by: Alexander Bushnev <Alexander@Bushnev.pro>
Co-authored-by: DenisBiryukov91 <155981813+DenisBiryukov91@users.noreply.github.com>
Co-authored-by: Denis Biryukov <denis.biryukov@zettascale.tech>
Co-authored-by: Diogo Mendes Matsubara <diogo.matsubara@zettascale.tech>
Co-authored-by: Luca Cominardi <luca.cominardi@gmail.com>
gabrik pushed a commit that referenced this pull request Nov 20, 2024
* Update closure handlers documentaion (#736)

* Rename closure callback/dropper types (#739)

* Remove legacy z_zint_t from public API (#741)

* Add `export "C"` for all header files (#740)

* Add `export "C"` for proper closures callbacks export

* Add `export "C"` for all headers

* add serialize from substr functions (#742)

* Rename z_loaned_hello_handler_t to z_closure_hello_callback_t (#743)

* Mark z_reply_replier_id as unstable (#745)

* Add documentation about logging (#744)

* Update README.md (#746)

* hardcode clang-format runner to Ubuntu24.04 (#748)

* fix build granularity (#747)

* fix: badly named constant (#750)

* fix packages

* fix: update debian packaging

- include libzenohpico.so in debian package
- change the package name to libzenohpico in line with libzenohc
- set correct debian version for pre releases
- fix wrong version used in Release mode

* fix: debian dev package name

* fix: package version for releases (#753)

* fix: debian_version for official releases

otherwise they would be undefined

* fix: align cpack version with zenoh-c

* chore: review comments

move cpack version closer to where it's used

* build shared lib for packages instead of static one (#757)

* Fix z_task cleanup for platforms with pthread support (#759)

* Fix read/lease task cleanup (#760)

* Align ID string representation with zenoh (lowercase) (#761)

* Remove default parameters from z_closure (#755)

* build both libraries:shared and static when packaging; (#766)

add static library to dev package;

* Publish debian packages (#769)

* fix: add workflow to release debian packages

* fix: align with zenoh-c

- update package names
- set version string in the same way
- set DEBARCH/RPMARCH
- set CPACK_PACKAGE_FILE_NAME
- add -j to zip archive to not include parent folder

* fix: use CPACK_PACKAGE_NAME

* fix: pass package name to all build targets

* fix: Don't tag release branch during dry-run

* Replace exit with return in zephyr examples (#774)

* Add platform_common.c to zephyr CMakeLists.txt file

* Rework Zenoh ID conversion

* chore: Update org secrets (#782)

As per eclipse-zenoh/.eclipsefdn#18, secrets were updated to follow eclipse foundation naming convention.

* Implement liveliness support (#632)

* Mark liveliness API as unstable and disable by default

* Fix typo (#787)

* fix: prevent code duplication during merge

---------

Co-authored-by: Alexander Bushnev <Alexander@Bushnev.pro>
Co-authored-by: DenisBiryukov91 <155981813+DenisBiryukov91@users.noreply.github.com>
Co-authored-by: Denis Biryukov <denis.biryukov@zettascale.tech>
Co-authored-by: Diogo Mendes Matsubara <diogo.matsubara@zettascale.tech>
Co-authored-by: Luca Cominardi <luca.cominardi@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new feature Something new is needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement liveliness token support
4 participants