Commit Graph
71 Commits
Author SHA1 Message Date
David ColburnandGitHub faa870de3d Move callbacks out of messageRouter (#269)
* move callbacks out of messageRouter

* OCD

* more OCD

* fix forwarder test

* even more OCD

* maximum OCD

* package name collision, copy lock by value
2021-12-17 13:19:23 -08:00
Raja SubramanianandGitHub e54ce4f674 Stream Allocator Try 3 (#257)
* Stream Allocator Try 3

Making an intermediate PR to do
- Special treatment for screen share tracks
- When allocating all tracks,
  o try to stream all tracks by starting with the lowest layer
  o multi-pass across tracks to get a more even distribution

Not yet done:
-------------
In deficient state,
o Allocate a specific track on a change
o Steal from other tracks

* Correct sense of managed track

* have to range to copy

* generate

* fix VideoLayers compare

* Use t.simulcasted
2021-12-14 12:48:09 +05:30
Mathew KamkarandGitHub bd42a39117 Include node ID with Prometheus metrics (#251)
* include node id in prometheus metrics

* static prom init and nodeID

* update protocol dep
2021-12-10 15:49:14 -08:00
David ZhaoandGitHub 2d93ccd668 Updated protocol from protocol/proto -> protocol/livekit (#242)
* Updated protocol from protocol/proto -> protocol/livekit

* separate MediaTrack from PublishedTrack
2021-12-08 13:58:38 -08:00
David ColburnandGitHub c41384cd09 ActiveRecording (#234)
* ActiveRecording

* regenerate

* update to 0.10.3

* 1.17
2021-12-03 21:40:53 -08:00
Mathew KamkarandGitHub e3c91de594 Configurable limit for number of tracks (#197)
* configurable node track limit

* sample config

* todos

* end of file new line

* default max num tracks

* bandwidth limit

* client message for limit exceeded node

* 10 Gbps default network limit
2021-11-23 15:48:07 -08:00
David ColburnandGitHub 95e29d3766 Interface updates (#194)
* update interfaces, a bit of cleaning

* regenerate

* return interface for RoomService

* export packetBufferSize

* update router interface

* move participant key into router

* change locks back

* read only room store

* fix server rm locks

* update SendJoinResponse

* clean up imports

* update room messaging

* regenerate
2021-11-15 15:25:50 -06:00
David ZhaoandGitHub ffb2c50a70 Fixed room API breakage (#190) 2021-11-14 11:18:01 -08:00
Mathew KamkarandGitHub 9336a0dab5 health check depends on updated stats (#183) 2021-11-10 14:11:44 -08:00
Mathew KamkarandGitHub 94aec3b98d Node updates stats with KeepAlive message to self (#177)
* node sends KeepAlive message to self

* use WriteRTCNodeMessage instead of participants[0]
2021-11-09 17:19:46 -08:00
David ColburnandGitHub 289ebd32ff Telemetry refactor (#172)
* telemetry refactor

* fix imports

* update protocol
2021-11-08 20:00:34 -06:00
David ColburnandGitHub 0c8fe361b2 Small refactor (#148)
* small refactor

* extra line

* fix room allocator test

* selector fakes not used

* keep decisions out of router

* put nodeId logic back

* fix room allocator test
2021-10-18 21:49:16 -05:00
David Zhao 575b99840a Fixed handling of multiple nodes in region-aware routing 2021-10-10 22:25:29 -07:00
Brint E. KriebelandGitHub 822f8c3944 Region Aware node selection fixes and enhancements (#141)
* cli: Allow setting the current node region with flag or env variable

Also add region to "starting LiveKit server" log.

* routing: Add region to node registration

Register the node's region on the selected router so it can be used for
region aware node selection.

Also add the region to the list-nodes output.

* regionaware: Set minDist to zero for the current node

If you don't set the minDist when leaving the loop early for a node that
matches the current region, the minDist value with still be at max. This
causes the the wrong node to be selected if the current node is the
first one the loop passes through.

Add a test that validates this change. The new test fails if this new
change is not in place.
2021-10-10 22:21:37 -07:00
Mathew KamkarandGitHub b212fb9a9e Prometheus counter for Signal/RTC messages (#139) 2021-10-08 12:02:08 -07:00
David Zhao 52e10ea315 handle nil MessageChannel 2021-10-06 22:24:09 -07:00
David ZhaoandGitHub c745f0a318 Region aware routing (#135)
* Region aware routing

* update config, fix spacing on commented out lines
2021-10-06 21:40:04 -07:00
David Zhao cdb04248fb Fixed reconnection for single node
It does not yet support resuming the session.
2021-09-24 14:19:23 -07:00
David ZhaoandGitHub ff47301820 Implements protocol 3 speaker updates (#120)
* Disallow AddTrack from participants that don't have the permission

* Support protocol 3 speaker updates, client info

* update protocol

* Disallow AddTrack from participants that don't have the permission

* increase wait time for GH to pass
2021-09-17 11:47:13 -07:00
abde72a907 Remove room manager from room service (#119)
* start splitting

* room allocator

* remove room manager

* Update pkg/service/roomallocator.go

Co-authored-by: David Zhao <david@davidzhao.com>

Co-authored-by: David Zhao <david@davidzhao.com>
2021-09-17 01:29:29 -05:00
Mathew KamkarandGitHub 700a879c0b Redis Router graceful stop (#116)
* prestop and hasparticipants in interface

* add prestop function to existing routers

* fakerouter prestop

* update protocol version

* read lock

* redis router graceful stop

* test fix

* force stop
2021-09-15 13:07:44 -07:00
David ColburnandGitHub 2a3fb5f0e7 move logging to protocol (#109) 2021-09-09 00:45:42 -07:00
David ZhaoandGitHub e82d50d717 Send explicit message to clients for mute/unmute. (#107)
* Send explicit message to clients for mute/unmute.

* documentation in config
2021-09-01 21:50:02 -07:00
David ColburnandGitHub 4044c314b8 participant key (#106)
* participant key

* update fake router

* WriteRTCMessage

* move sink closing

* unused code
2021-08-31 16:14:06 -05:00
David ColburnandGitHub 1f1eea383f add ctx to interfaces (#105)
* add ctx to interfaces

* use existing context
2021-08-30 20:31:24 -05:00
David Colburn 1e10d440c8 export error 2021-08-30 17:03:39 -07:00
David ColburnandGitHub 8a44fad307 protocol 0.8 (#95)
* protocol 0.8

* merge new selector
2021-08-27 13:16:33 -05:00
c437152e2b NodeSelector using system load metric (#94)
* use load when selecting nodes

* Apply suggestions from code review

Co-authored-by: David Zhao <david@davidzhao.com>

* sysload selector test

* wire nodeSelectorFromConfig

* fix tests

* Update pkg/routing/selectorsystemload_test.go

Co-authored-by: David Zhao <david@davidzhao.com>

* dz review: nits

Co-authored-by: David Zhao <david@davidzhao.com>
2021-08-26 15:24:39 -07:00
Mathew KamkarandGitHub f9590afe1a include packet and system info with node stats (#92)
* include packet and system info with node stats

* add more packet and system stats

* revert magefile, clean up system stats error handling

* update procol version

* dz review: error return
2021-08-25 12:04:28 -07:00
Mathew KamkarandGitHub f5466c74e6 list-nodes command action (#87)
* list-nodes command action

* refactor stats into a package

* store existing stats in redis, more refactoring

* dz review: atomic load
2021-08-24 10:14:39 -07:00
David ZhaoandGitHub 834dce543b fix participant APIs when using LocalRouter (#67) 2021-07-22 11:06:23 -07:00
David Colburn d7be9096c6 persist hidden field to startSession 2021-07-20 17:23:06 -07:00
David ColburnandGitHub 4bab395ac9 Hidden participants (#65)
Enables hidden recording and/or forwarding participants
2021-07-19 18:33:28 -05:00
hn8andGitHub 87dfb2b117 log: consistent log key (#60) 2021-07-19 10:28:51 -07:00
David ZhaoandGitHub a80e8cf69f Enable passing in local IP, refactored IP detection (#48)
* Enable passing in local IP, refactored IP detection

* update docker server instructions
2021-07-11 08:42:11 -07:00
David Zhao 4e6eafa63c for test environments, allow use of internal IP if external IP isn't available 2021-06-30 15:14:58 -07:00
David Zhao bbf7f83784 Improve integration test reliability, wait for RedisRouter to start 2021-06-09 09:51:44 -07:00
David Zhao a3228c2ae9 resolve data race conditions, code quality 2021-06-04 14:57:55 -07:00
David Colburn 5baf97e99b imports/inspections 2021-06-04 14:30:10 -05:00
David Colburn 69b94e1142 error logging 2021-06-03 01:57:43 -05:00
David Zhao 0900054c24 ability to disable auto subscribe per participant 2021-05-22 22:54:47 -07:00
David Zhao 0dddc3c0be DeleteRoom now removes all participants in the room 2021-04-21 22:30:29 -07:00
David Zhao 93d10b2640 Manual negotiation and plan-b support 2021-04-16 00:56:25 -07:00
David Zhao e4238890ff Refactor/cleanup of negotiation path 2021-04-15 17:03:22 -07:00
David Zhao 144351a89a use RWMutex for router channel lookup 2021-04-06 17:16:55 -07:00
David Zhao f7ed2cee60 RoomService.updateParticipantMetadata, participant permissions 2021-03-16 01:22:21 -07:00
David Zhao 093d99b010 update dependencies, minor fixes 2021-03-15 11:42:57 -07:00
David Zhao 7d02c01fd8 refactor - moved common code to livekit/protocol 2021-03-13 22:01:51 -08:00
David Zhao ddfddfff53 fixed mismatched codec type in pion, increase message chan buffer to avoid overflow during message handling 2021-03-02 01:10:34 -08:00
David Zhao a010b618af re-assign node for room if existing node for room is no longer available 2021-02-20 21:09:04 -08:00