Commit Graph

56 Commits

Author SHA1 Message Date
Paulo Lanzarin
327c2c4624
fix: run full RTC stats collection only when necessary (#21073)
In BBB 3.0, a change was made to collect full WebRTC stats continuously.
This method gathers stats from *all* peers and *all* senders and receivers
every 2 seconds. Originally, it was intended to run only when the user opened
the connection status dialog, providing in-depth info in the UI and making it
available for copying.

This new behavior is not ideal. Running full stats collection every 2 seconds
in meetings with 20+ peers/transceivers wastes client resources since the
collected data is unused 99% of the time.

This commit reverts to the pre-3.0 behavior (≤2.7), where full stats collection
(`startNetworkMonitoring`) runs only when the connection status modal is open.
As a bonus, it fixes the packet loss status transition log to use the packet
loss percentage, which is the actual trigger metric.
2024-09-13 09:15:35 -04:00
Paulo Lanzarin
3fbe4be441
refactor: adjust inline comment for packet loss metric usage
Adjust an inline comment in connection status' service about packet loss metric
usage.

Now it correctly states that the absolute counter SHOULD NOT be used for
alert triggers.
2024-08-29 15:53:03 -03:00
Paulo Lanzarin
dca9b87190
fix(connection-status): packet loss causes false positive critical alerts (#21049)
In 3.0, the packet loss metric used to trigger connection status alerts was
changed to the one generated by the `startMonitoringNetwork` method used by the
connection status modal. Since packet loss thresholds were not adjusted (0.5,
0.1, 0.2), a single lost packet causes the status alert to be permanently
stuck on "critical". This is explained by how different those metrics
are:
  - **Before (2.7):** A 5-probe wide calculation of inbound packet loss
  fraction based on `packetsLost` and `packetsReceived` metrics.
  - **Now (3.0):** An absolute counter of inbound lost packets.

This commit restores the previous packet loss metric used to trigger
connection status alerts, reverting to the original collection method via
`/utils/stats.js`. This resolves the issue, but further work is needed in
subsequent PRs:
  - Unify the collection done in `/utils/stats.js` with the
  `startMonitoringNetwork` method.
  - Incorporate the remote-inbound `fractionsLost` metric to account for packet
  loss on both legs of the network (in/out).
  - Update the packet loss metric displayed in the connection status modal to
 show a more meaningful value (e.g., packet loss percentage over a specific
  probe interval). An absolute counter of lost packets isn't useful for end
  users.
  - Update the alert log to use the fraction or percentage above
2024-08-28 16:55:57 -04:00
Gustavo Trott
af06562e02 Introduce flag currentlyInMeeting (replacing isOnline) 2024-08-28 11:08:30 -03:00
Tainan Felipe
6789b69f62 Fix: error undefined in the cosole error 2024-08-14 16:37:37 -03:00
Tainan Felipe
4d6f4b3ded
Refactor: Make bundle using webpack (#20811)
* Refactor: Make bundle using webpack

* Fix: restore after install codes and a few settings

* Fix: build script folder permission

* Refactor: Remove support to async import on audio bridges

* Upgrade npm using nvm

* Avoid questions on npm ci execution

* Let npm ci install dev dependencies (as we need the build tools here)

* Fix: enconding

* Fix: old lock files

* Remove: bbb-config dependency to bbb-html5 service, bbb-html5 isn't a service anymore

* Fix: TS errors

* Fix: eslint

* Fix: chat styles

* npm install with "lockfileVersion": 3 (newer npm)

* build: allow nodejs 22

* node 22; drop meteor from CI and bbb-conf

* TEMP: use bbb-install without mongo but with node 22 and newer image

* build: relax nodejs condition to not trip 22.6

* build: ensure dir /usr/share/bigbluebutton/nginx exists

* init sites-available/bbb; drop disable-transparent-

* nginx complaining of missing file and ;

* TMP: print status of services

* WIP: tweak nginx location to debug

* Fix: webcam widgets alignments

* akka-apps -- update location of settings.yml

* build: add locales path for nginx

* docs and config changes for removal of meteor

* Fix: build encoding and locales enpoint folder path

* build: set wss url for media

* Add: Enable minimizer and modify to Terser

* Fix: TS errors

---------

Co-authored-by: Tiago Jacobs <tiago.jacobs@gmail.com>
Co-authored-by: Anton Georgiev <anto.georgiev@gmail.com>
Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-08-09 13:58:44 -04:00
João Victor
a660672ff8 Merge branch 'v3.0.x-release' into webcam-patch-0724 2024-08-01 16:21:19 -03:00
prlanzarin
24ae746a88 fix(connection-status): jitter causes false positive critical alerts
Jitter evaluation, as an alert trigger, was changed in 3.0 to get the internal
average jitter used in the conn-status component data (which is total jitter
delay divided by jitterbuffer emit events). This was done accidentally and that
metric is _very_ different from the one used in 2.7 (point-in-time jitter from
remote-inbound-rtp/inbound-rtp, highest on the interval, gathered on
/utils/stats.js).  The alert thresholds were preserved, which makes it overly
sensitive in regards to jitter (and thus causes it to be critical whenever the
user is in audio).

Remove jitter as a connection status alert trigger, which fixes the
false positive. The implementation on <= 2.7 is also not ideal - if
anything, it generates false negatives. That's why I'm removing jitter for
the time being since it's ill-suited (at least in the way it's used)
for what we want to achieve.
2024-07-30 18:59:49 +00:00
João Victor
8b4a2f39e0 fix(webcam): turn useGetStats hook into a service method to avoid function re-instantiation 2024-07-30 10:20:18 -03:00
João Victor
8e265de443 fix(html5): connection status picking wrong status 2024-07-24 13:36:01 -03:00
João Victor
054bab8a3e fix(connection-status): user report sorting 2024-07-10 12:25:05 -03:00
Tainan Felipe
0e7fe3c688
Change: improve client connection status (#20630) 2024-07-04 17:26:09 -03:00
João Victor Nunes
06500be757
refactor(storage): replace Tracker.Dependency with observer hook (#20322)
* refactor(storage): replace Tracker.Dependency with observer hook

* fix(storage): set initial value

* refactor(storage): stop using Meteor's Session singleton
2024-06-06 10:50:03 -03:00
João Victor Nunes
33ebbde924
refactor: remove Meteor trackers (#20351)
* Replace Auth tracker with makeVar

* Replace connection status tracker with makeVar

* Replace notification bar tracker with makeVar
2024-06-04 14:09:48 -03:00
Ramón Souza
7514066fc3
fix: Client can't load in certain cases (#20336)
* move settings

* remove meteor cache files
2024-05-29 09:26:11 -04:00
João Victor
fb1947dc8f Remove console.log's 2024-05-03 15:11:30 -03:00
João Victor
7297778746 fix: tweak video-streams typings (Part 1)
- Tweak high-level components.
2024-05-01 16:48:12 -03:00
João Victor
1f8a95a3ff Remove video-streams subscription 2024-04-24 17:09:00 -03:00
João Victor
0bbe7da96d fix(connection status): restore session logs tab 2024-04-04 10:41:01 -03:00
Anton Georgiev
ef300cf28e
chore: Fix typo (found by typos) (port) #19834
Co-authored-by: Stefan Weil <sw@weilnetz.de>
2024-03-18 09:58:53 -04:00
André Castro
58a0efe708
Migrate auth and settings to graphQL (#19507) 2024-03-06 14:28:18 -03:00
Ramón Souza
d9c9b00904 remove unused code 2023-12-06 10:33:36 -03:00
Ramón Souza
7e8eb923de migrate connection status to use graphql 2023-12-05 11:18:45 -03:00
Ramón Souza
981909fe6c remove unused code in connection-status modal 2023-02-17 10:00:04 -03:00
GuiLeme
64e81a89bf [fix-timestamp-incorrect] - fix incorrect timestamp display and wrongly key setting 2023-02-15 12:43:24 -03:00
Gustavo Trott
ff7c161f07 In ConnectionStatus publish only flag clientNotResponding instead of timestamp connectionAliveAt 2023-02-14 14:51:31 -03:00
Gustavo Trott
faa1c93edf Improve readability 2022-09-14 22:28:06 -03:00
Gustavo Trott
0adab1c9c4 Improve readability 2022-09-14 22:24:14 -03:00
Gustavo Trott
14453a43f9 Include alerts when client lose connection with server 2022-09-14 22:16:27 -03:00
germanocaumo
cacba3c7e7 feat(html5): add meteor rtt as prometheus metric 2022-04-08 14:27:35 +00:00
Joao Victor
aa926d27e3 Fix audio data access 2022-02-04 11:09:43 -03:00
Joao Victor
e84cfab5fa refactor: connection status modal UX 2021-11-22 08:25:07 -03:00
Tainan Felipe
f5eef03f3f Improve data structure to not break on reconnections 2021-11-03 14:37:54 -03:00
Tainan Felipe
1de8e0779d Add server side reactivity to publications 2021-10-13 15:00:52 -03:00
Mario Jr
8997b68a3c Support firefox and other browser in network stats monitor
For browsers that don't support headerBytesSent in RTCOutboundRtpStreamStats
neither headerBytesReceived in RTCInboundRtpStreamStats, we are now able
to calculate upload and download rates.
We are also able to get transportStats information for browsers that
don't support iceTransport attribute of RTCDtlsTransport.
2021-08-25 16:27:46 -03:00
Mario Jr
00e01c1872 add screenshare's peer information to video stats in connection status modal
Added support for getStats in screenshare's service. This works similar
to the getStats for video provider, and the information retrieved from
screenshare is added to the video information for cameras.
2021-08-23 12:36:01 -03:00
Mario Jr
f280c0a6cb add information about jitter and packets lost in network data monitor
We also adds this information when copying data to clipboard
2021-08-17 16:51:50 -03:00
Mario Jr
1c593dfbb5 Update doc reference for RTCInboundRtpStreamStats and RTCOutboundRtpStreamStats
The specification has more details about each field returned in stats
dictionaries.
2021-08-16 11:04:28 -03:00
Mario Jr
631e8fce4b Get stats for video connection
We now retrieve update information about active video peers, and calculates
download and upload rates. These rates are the sum of data transfered in
all video peers.
Screenshare stats is not being added to the sum, yet.
2021-08-13 17:24:44 -03:00
Mario Jr
cf366e5090 Get user and audio data, shows it and allows it to be copied to clipboard
Using getStats api and peer information to retrieve upload/download rates
and transport information
2021-08-12 16:39:04 -03:00
Mario Jr
b78841f04e add basic functionality for copy network data button 2021-08-11 11:10:49 -03:00
Ramon Souza
3678348fdf remove unused code 2021-04-29 13:52:22 -03:00
Pedro Beschorner Marin
83c813ac6f refactor(connection status): interval and log configuration
Simplify how connection status inteval is configured and make server
log the solo logging option.
2021-04-23 19:15:32 -03:00
Pedro Beschorner Marin
19d6e32229 chore(connection status): log status change at the server
Includes a log at Meteor's addConnectionStatus method to log danger,
critical and recoveries triggers on user's connection status change.
2021-04-23 18:47:56 -03:00
Pedro Beschorner Marin
3672a909f1 style(connection status): replace icons
Replace previous icon with a flexible version to fit inside other
nodes (e.g: buttons).
2021-04-23 06:32:11 -03:00
Pedro Beschorner Marin
99690b55ec Extra connection's status sorting
Push offline users to the bottom of the list.
2021-04-05 13:19:24 -03:00
Pedro Beschorner Marin
082cdba78d Add offline property to user's own status 2021-04-05 13:18:45 -03:00
Ramon Souza
3be14632de adding meetingId to usersPersistentData 2021-04-01 15:53:03 -03:00
Ramon Souza
9e35bb09be reinclude offline users do connection modal 2021-04-01 15:10:15 -03:00
Pedro Beschorner Marin
280b32d21d Move connection-status to nav-bar
- Removed the connection-status history from the user list's gear
icon and now is opened by the connection-status button. Moderators will
render the same modal as before and viewers will only have access to their
own data.

 - Added data-savings shortcut at the connection-status modal.

 - Added websocket round-trip time.
2021-03-26 10:12:09 -03:00