Skip to content

subscription_thread_dispatcher: guard against duplicate room events #256

subscription_thread_dispatcher: guard against duplicate room events

subscription_thread_dispatcher: guard against duplicate room events #256

Triggered via pull request July 6, 2026 22:05
Status Failure
Total duration 17m 26s
Artifacts 10

ci.yml

on: pull_request
Detect Changes
7s
Detect Changes
License Check  /  License Check
6s
License Check / License Check
Link Check  /  Link Check
5s
Link Check / Link Check
Docker Images  /  Detect Docker input changes
Docker Images / Detect Docker input changes
Matrix: Builds / build
Matrix: Tests / test
Tests  /  Code Coverage
17m 6s
Tests / Code Coverage
C++ Checks  /  clang-format
19s
C++ Checks / clang-format
C++ Checks  /  clang-tidy
9m 18s
C++ Checks / clang-tidy
Generate Docs  /  Generate and verify docs
27s
Generate Docs / Generate and verify docs
Rust Release Check  /  Rust Release Check
Rust Release Check / Rust Release Check
Docker Images  /  Build (docker-linux-arm64)
Docker Images / Build (docker-linux-arm64)
Docker Images  /  Build (docker-linux-x64)
Docker Images / Build (docker-linux-x64)
Docker Images  /  Build (cpp-example-collection-linux-arm64)
Docker Images / Build (cpp-example-collection-linux-arm64)
Docker Images  /  Publish SDK manifest
Docker Images / Publish SDK manifest
Docker Images  /  Publish base manifest
Docker Images / Publish base manifest
Docker Images  /  Build (cpp-example-collection-x64)
Docker Images / Build (cpp-example-collection-x64)
Fit to window
Zoom out
Zoom in

Annotations

25 errors and 30 warnings
Tests / Test (macos-arm64)
Process completed with exit code 139.
Tests / Test (linux-arm64)
Process completed with exit code 134.
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L243
'activeDataReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/subscription_thread_dispatcher.h#L239
'activeReaderCount': member of dll interface class may not be declared with dll interface [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (linux-x64)
Process completed with exit code 134.
Tests / Test (macos-x64)
Process completed with exit code 134.
CI
Jobs (builds, tests) failed
Builds / Build (macos-arm64)
The following taps are not trusted: aws/tap Homebrew is currently ignoring formulae, casks and commands from these taps because tap trust is required. Untap them with: brew untap aws/tap Trust specific formulae, casks and commands with: brew trust --formula <user>/<tap>/<formula> brew trust --cask <user>/<tap>/<cask> brew trust --command <user>/<tap>/<command> Whole-tap trust is broader and includes all current and future formulae, casks and commands from the listed taps. Trust whole taps with: brew trust aws/tap To disable trust checks: export HOMEBREW_NO_REQUIRE_TAP_TRUST=1 This is not recommended and will be removed in a later release. For more information, see: https://docs.brew.sh/Tap-Trust
Tests / Test (macos-arm64)
The following taps are not trusted: aws/tap Homebrew is currently ignoring formulae, casks and commands from these taps because tap trust is required. Untap them with: brew untap aws/tap Trust specific formulae, casks and commands with: brew trust --formula <user>/<tap>/<formula> brew trust --cask <user>/<tap>/<cask> brew trust --command <user>/<tap>/<command> Whole-tap trust is broader and includes all current and future formulae, casks and commands from the listed taps. Trust whole taps with: brew trust aws/tap To disable trust checks: export HOMEBREW_NO_REQUIRE_TAP_TRUST=1 This is not recommended and will be removed in a later release. For more information, see: https://docs.brew.sh/Tap-Trust
Tests / Test (macos-arm64)
The following taps are not trusted: aws/tap Homebrew is currently ignoring formulae, casks and commands from these taps because tap trust is required. Untap them with: brew untap aws/tap Trust specific formulae, casks and commands with: brew trust --formula <user>/<tap>/<formula> brew trust --cask <user>/<tap>/<cask> brew trust --command <user>/<tap>/<command> Whole-tap trust is broader and includes all current and future formulae, casks and commands from the listed taps. Trust whole taps with: brew trust aws/tap For more information, see: https://docs.brew.sh/Tap-Trust
Tests / Test (macos-arm64)
The following taps are not trusted: aws/tap Homebrew is currently ignoring formulae, casks and commands from these taps because tap trust is required. Untap them with: brew untap aws/tap Trust specific formulae, casks and commands with: brew trust --formula <user>/<tap>/<formula> brew trust --cask <user>/<tap>/<cask> brew trust --command <user>/<tap>/<command> Whole-tap trust is broader and includes all current and future formulae, casks and commands from the listed taps. Trust whole taps with: brew trust aws/tap To disable trust checks: export HOMEBREW_NO_REQUIRE_TAP_TRUST=1 This is not recommended and will be removed in a later release. For more information, see: https://docs.brew.sh/Tap-Trust
Builds / Build (windows-x64): src/ffi_client.h#L222
'livekit::FfiClient::listeners_': 'std::unordered_map<livekit::FfiClient::ListenerId,std::shared_ptr<livekit::FfiClient::ListenerSlot>,std::hash<int>,std::equal_to<livekit::FfiClient::ListenerId>,std::allocator<std::pair<const livekit::FfiClient::ListenerId,std::shared_ptr<livekit::FfiClient::ListenerSlot>>>>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/audio_frame.h#L88
'livekit::AudioFrame::data_': 'std::vector<int16_t,std::allocator<int16_t>>' needs to have dll-interface to be used by clients of 'livekit::AudioFrame' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): src/ffi_client.h#L233
'livekit::FfiClient::lifecycle_state_': 'std::atomic<livekit::FfiClient::LifecycleState>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): src/ffi_client.h#L229
'livekit::FfiClient::next_async_id_': 'std::atomic<unsigned __int64>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): src/ffi_client.h#L227
'livekit::FfiClient::pending_by_id_': 'std::unordered_map<livekit::FfiClient::AsyncId,std::unique_ptr<livekit::FfiClient::PendingBase,std::default_delete<livekit::FfiClient::PendingBase>>,std::hash<livekit::FfiClient::AsyncId>,std::equal_to<livekit::FfiClient::AsyncId>,std::allocator<std::pair<const livekit::FfiClient::AsyncId,std::unique_ptr<livekit::FfiClient::PendingBase,std::default_delete<livekit::FfiClient::PendingBase>>>>>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): src/ffi_client.h#L224
'livekit::FfiClient::next_listener_id': 'std::atomic<int>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): src/ffi_client.h#L222
'livekit::FfiClient::listeners_': 'std::unordered_map<livekit::FfiClient::ListenerId,std::shared_ptr<livekit::FfiClient::ListenerSlot>,std::hash<int>,std::equal_to<livekit::FfiClient::ListenerId>,std::allocator<std::pair<const livekit::FfiClient::ListenerId,std::shared_ptr<livekit::FfiClient::ListenerSlot>>>>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/audio_frame.h#L88
'livekit::AudioFrame::data_': 'std::vector<int16_t,std::allocator<int16_t>>' needs to have dll-interface to be used by clients of 'livekit::AudioFrame' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64): include/livekit/audio_frame.h#L88
'livekit::AudioFrame::data_': 'std::vector<int16_t,std::allocator<int16_t>>' needs to have dll-interface to be used by clients of 'livekit::AudioFrame' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Builds / Build (windows-x64)
Custom build for item "D:\a\client-sdk-cpp\client-sdk-cpp\build-release\CMakeFiles\da7240c96278d463ff60cb3c2ab9931d\livekit_ffi.dll.lib.rule" succeeded, but specified output "d:\a\client-sdk-cpp\client-sdk-cpp\client-sdk-rust\target\debug\livekit_ffi.dll.lib" has not been created. This may cause incremental build to work incorrectly. [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\build_rust_ffi.vcxproj]
Tests / Test (windows-x64): src/ffi_client.h#L222
'livekit::FfiClient::listeners_': 'std::unordered_map<livekit::FfiClient::ListenerId,std::shared_ptr<livekit::FfiClient::ListenerSlot>,std::hash<int>,std::equal_to<livekit::FfiClient::ListenerId>,std::allocator<std::pair<const livekit::FfiClient::ListenerId,std::shared_ptr<livekit::FfiClient::ListenerSlot>>>>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/audio_frame.h#L88
'livekit::AudioFrame::data_': 'std::vector<int16_t,std::allocator<int16_t>>' needs to have dll-interface to be used by clients of 'livekit::AudioFrame' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): src/ffi_client.h#L233
'livekit::FfiClient::lifecycle_state_': 'std::atomic<livekit::FfiClient::LifecycleState>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): src/ffi_client.h#L229
'livekit::FfiClient::next_async_id_': 'std::atomic<unsigned __int64>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): src/ffi_client.h#L227
'livekit::FfiClient::pending_by_id_': 'std::unordered_map<livekit::FfiClient::AsyncId,std::unique_ptr<livekit::FfiClient::PendingBase,std::default_delete<livekit::FfiClient::PendingBase>>,std::hash<livekit::FfiClient::AsyncId>,std::equal_to<livekit::FfiClient::AsyncId>,std::allocator<std::pair<const livekit::FfiClient::AsyncId,std::unique_ptr<livekit::FfiClient::PendingBase,std::default_delete<livekit::FfiClient::PendingBase>>>>>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): src/ffi_client.h#L224
'livekit::FfiClient::next_listener_id': 'std::atomic<int>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): src/ffi_client.h#L222
'livekit::FfiClient::listeners_': 'std::unordered_map<livekit::FfiClient::ListenerId,std::shared_ptr<livekit::FfiClient::ListenerSlot>,std::hash<int>,std::equal_to<livekit::FfiClient::ListenerId>,std::allocator<std::pair<const livekit::FfiClient::ListenerId,std::shared_ptr<livekit::FfiClient::ListenerSlot>>>>' needs to have dll-interface to be used by clients of 'livekit::FfiClient' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/audio_frame.h#L88
'livekit::AudioFrame::data_': 'std::vector<int16_t,std::allocator<int16_t>>' needs to have dll-interface to be used by clients of 'livekit::AudioFrame' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64): include/livekit/audio_frame.h#L88
'livekit::AudioFrame::data_': 'std::vector<int16_t,std::allocator<int16_t>>' needs to have dll-interface to be used by clients of 'livekit::AudioFrame' [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\livekit.vcxproj]
Tests / Test (windows-x64)
Custom build for item "D:\a\client-sdk-cpp\client-sdk-cpp\build-release\CMakeFiles\da7240c96278d463ff60cb3c2ab9931d\livekit_ffi.dll.lib.rule" succeeded, but specified output "d:\a\client-sdk-cpp\client-sdk-cpp\client-sdk-rust\target\debug\livekit_ffi.dll.lib" has not been created. This may cause incremental build to work incorrectly. [D:\a\client-sdk-cpp\client-sdk-cpp\build-release\build_rust_ffi.vcxproj]
Builds / Build (macos-x64)
The following taps are not trusted: aws/tap Homebrew is currently ignoring formulae, casks and commands from these taps because tap trust is required. Untap them with: brew untap aws/tap Trust specific formulae, casks and commands with: brew trust --formula <user>/<tap>/<formula> brew trust --cask <user>/<tap>/<cask> brew trust --command <user>/<tap>/<command> Whole-tap trust is broader and includes all current and future formulae, casks and commands from the listed taps. Trust whole taps with: brew trust aws/tap To disable trust checks: export HOMEBREW_NO_REQUIRE_TAP_TRUST=1 This is not recommended and will be removed in a later release. For more information, see: https://docs.brew.sh/Tap-Trust
Tests / Test (macos-x64)
The following taps are not trusted: aws/tap Homebrew is currently ignoring formulae, casks and commands from these taps because tap trust is required. Untap them with: brew untap aws/tap Trust specific formulae, casks and commands with: brew trust --formula <user>/<tap>/<formula> brew trust --cask <user>/<tap>/<cask> brew trust --command <user>/<tap>/<command> Whole-tap trust is broader and includes all current and future formulae, casks and commands from the listed taps. Trust whole taps with: brew trust aws/tap To disable trust checks: export HOMEBREW_NO_REQUIRE_TAP_TRUST=1 This is not recommended and will be removed in a later release. For more information, see: https://docs.brew.sh/Tap-Trust
Tests / Test (macos-x64)
The following taps are not trusted: aws/tap Homebrew is currently ignoring formulae, casks and commands from these taps because tap trust is required. Untap them with: brew untap aws/tap Trust specific formulae, casks and commands with: brew trust --formula <user>/<tap>/<formula> brew trust --cask <user>/<tap>/<cask> brew trust --command <user>/<tap>/<command> Whole-tap trust is broader and includes all current and future formulae, casks and commands from the listed taps. Trust whole taps with: brew trust aws/tap For more information, see: https://docs.brew.sh/Tap-Trust
Tests / Test (macos-x64)
The following taps are not trusted: aws/tap Homebrew is currently ignoring formulae, casks and commands from these taps because tap trust is required. Untap them with: brew untap aws/tap Trust specific formulae, casks and commands with: brew trust --formula <user>/<tap>/<formula> brew trust --cask <user>/<tap>/<cask> brew trust --command <user>/<tap>/<command> Whole-tap trust is broader and includes all current and future formulae, casks and commands from the listed taps. Trust whole taps with: brew trust aws/tap To disable trust checks: export HOMEBREW_NO_REQUIRE_TAP_TRUST=1 This is not recommended and will be removed in a later release. For more information, see: https://docs.brew.sh/Tap-Trust
Tests / Code Coverage
(WARNING) /home/runner/work/client-sdk-cpp/client-sdk-cpp/src/logging.cpp:33: Ignoring negative hits in: branch 7 taken -13.
CI
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: suzuki-shunsuke/required-status-check-action@2b5a46064846b09381852c2c4217e898f639e768. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/

Artifacts

Produced during runtime
Name Size Digest
coverage-report
598 KB
sha256:74a8d68f3f14e30eee80f5e23dba8ef9a6ce785a0b847d3ac86cb3eedc71d0c6
livekit-cpp-docs Expired
2.89 MB
sha256:b4adfef11a411da43304c2dc73898924eec7bb8aa12b4c1f0e85766114beb3f8
livekit-sdk-linux-arm64 Expired
23.2 MB
sha256:ef2d2b77c7ac82f89566840c56e93a840b96246ca2934ab9485355645e6d6c51
livekit-sdk-linux-x64 Expired
24.9 MB
sha256:ea8d130a572a04f9728baea060d2bfc62c4c4c5b8d981b5dbd922ea3297c6fb6
livekit-sdk-macos-arm64 Expired
19 MB
sha256:dd0b0e8ec4cee4610883d0c155a9af0ed14936be226edbd70d0e2beb066497cb
livekit-sdk-macos-x64 Expired
19.9 MB
sha256:ef1ac1c8d7abf8ca3df317b1e2646624c5a5ff571ee06292845f1a110ef0dd12
test-results-linux-arm64 Expired
73.1 KB
sha256:129a86b469b9b6d636fd2c49c0855bcce28b893b812f509ebe6a1d4a84a420cb
test-results-linux-x64 Expired
2.07 MB
sha256:cf19572f7999ff359ec216218f7a6f5e7879bad0c5eb394355d7f1ffe526c89c
test-results-macos-arm64 Expired
1.27 MB
sha256:9166caf0d474bcfb580cdf43de1e565ffdc6d7bb84e6e7ec170daeceeb062001
test-results-macos-x64 Expired
2.3 MB
sha256:5d96b46fbd52b61cf1b312742997860f965c31ca679c32415dc25f80af62264e