* Reworking node stats a bit.
- Introducing a rate shape that captures rate of different metrics in a
given interval. The interval is contained in that message.
- Stats can have multiple rates. This is akin to reporting different
window load avg in unix systems.
- Clean up a few things
o sys packets pct in rate (not sure what it was capturing)
o associated prom metric (this is in server code which will come in a
separate PR) (was not used anywhere internally, don't
think external projects would be using it either)
* Create tricky-ties-marry.md
* generated protobuf
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Per resource webhook queue.
With a worker based approach, an event on a resource (like a room) not
being handled could affect other resources (other rooms or ingress or
egress).
To prevent that, do a per resource queue with two kinds of limits
- age of event: when queuing, if the event at the front of the queue
exceeds a certain limit (default: 5 seconds), the event is dropped
- depth of queue: drop event if the number of queued events exceeds some
level (default: 200)
To reap the per resource queue, specific end events are tracked and the
resource is added to the reap queue and reaped after a configurable
timeout (default: 5 min). This is to ensure that events happening just
after end event (for example: participant_left happening after
room_finished) are handled without re-creating a new resource.
Also, deprecating `num_dropped` from proto.
Some other bits of notes/challenges:
- Keeping the old URL notifier also. Also, the default notifier is that.
Can change to the new one before merging this PR if this approach
looks good.
- Using string compares of event name to detect end. Not great.
- Needs a sweeper to reap the resource queue. I think 5 min default
timeout to reap should be okay, but maybe there are things that can
cause re-creation of a resource queue after reaping and those could
leak? Needs more analysis.
- Storing `context.Context` in resource queue so that it can be used
during posting to webhook from resource queue go routine. Storing that
is not great, but we need it for analytics key.
* generated protobuf
* missed files
* generated protobuf
* fix test in data race
* generate
* generated protobuf
* paul feedback
* fixes
* race
* more Paul feedback
* make resource notifier the default
* generated protobuf
* stop
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Webhook analytics event.
NOTE: Need a frostbyte73/core PR to merge and tag a release
PR pending: https://github.com/frostbyte73/core/pull/5
* sync submit
* generated protobuf
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* WiP
* Define EgressSourceType and record it in the EgressInfo for proper biling
* generated protobuf
* Create shy-planets-impress.md
* generated protobuf
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Add grant for canSubscribeMetrics.
* Move can subscribe metrics to video grant.
* generated protobuf
* set CanSubscribeMetrics from permissions
* generated protobuf
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Send non-error responses also.
Settling on the name `RequestResponse` (after not being able to find a
solid candidate) as it is response sent only when `request_id != 0`.
Renaming `UNKNOWN` reason to `OK` as it was unused. Will bump up
protocol and send `OK` only to client supporting that protocol version.
* generated protobuf
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Proto to store forwarder state.
* generated protobuf
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>