Skip to content

Commit b63fe03

Browse files
authored
[MM-61786] Reduce number of open file descriptors (#908) (#911)
* Reduce number of open file descriptors * Update test * Update rtcd
1 parent dbd50f9 commit b63fe03

File tree

4 files changed

+39
-39
lines changed

4 files changed

+39
-39
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ require (
2424
github.com/mattermost/mattermost-plugin-calls/server/public v0.0.3
2525
github.com/mattermost/mattermost/server/public v0.1.5-0.20240613070149-4b0ae20ef7b4
2626
github.com/mattermost/morph v1.1.0
27-
github.com/mattermost/rtcd v0.18.0
27+
github.com/mattermost/rtcd v0.18.1-0.20241122194949-fc76bf6a2f16
2828
github.com/mattermost/squirrel v0.2.0
2929
github.com/pkg/errors v0.9.1
3030
github.com/rudderlabs/analytics-go v3.3.3+incompatible

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -375,8 +375,8 @@ github.com/mattermost/mattermost/server/public v0.1.5-0.20240613070149-4b0ae20ef
375375
github.com/mattermost/mattermost/server/public v0.1.5-0.20240613070149-4b0ae20ef7b4/go.mod h1:PDPb/iqzJJ5ZvK/m70oDF55AXN/cOvVFj96Yu4e6j+Q=
376376
github.com/mattermost/morph v1.1.0 h1:Q9vrJbeM3s2jfweGheq12EFIzdNp9a/6IovcbvOQ6Cw=
377377
github.com/mattermost/morph v1.1.0/go.mod h1:gD+EaqX2UMyyuzmF4PFh4r33XneQ8Nzi+0E8nXjMa3A=
378-
github.com/mattermost/rtcd v0.18.0 h1:Wxbl8r8cq8hD4ufg0XUGXM8lHPzxNW73fw4SngCuJ+A=
379-
github.com/mattermost/rtcd v0.18.0/go.mod h1:FVyFLa+7dWImCZ+0g9xoc/1fMRKMuXs6yAZP1mDKBIg=
378+
github.com/mattermost/rtcd v0.18.1-0.20241122194949-fc76bf6a2f16 h1:3LonE6UDF+GT4LjC1hqPL1xLBORoHdxeid1VNmmZkIE=
379+
github.com/mattermost/rtcd v0.18.1-0.20241122194949-fc76bf6a2f16/go.mod h1:FVyFLa+7dWImCZ+0g9xoc/1fMRKMuXs6yAZP1mDKBIg=
380380
github.com/mattermost/squirrel v0.2.0 h1:8ZWeyf+MWQ2cL7hu9REZgLtz2IJi51qqZEovI3T3TT8=
381381
github.com/mattermost/squirrel v0.2.0/go.mod h1:NPPtk+CdpWre4GxMGoOpzEVFVc0ZoEFyJBZGCtn9nSU=
382382
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=

server/activate.go

+32-34
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"fmt"
99
"os"
1010
"path/filepath"
11+
"runtime"
1112

1213
"github.com/mattermost/mattermost-plugin-calls/server/cluster"
1314
"github.com/mattermost/mattermost-plugin-calls/server/enterprise"
@@ -157,50 +158,47 @@ func (p *Plugin) OnActivate() (retErr error) {
157158
p.LogDebug("rtcd client manager initialized successfully")
158159

159160
p.rtcdManager = rtcdManager
161+
} else {
162+
rtcServerConfig := rtc.ServerConfig{
163+
ICEAddressUDP: cfg.UDPServerAddress,
164+
ICEAddressTCP: cfg.TCPServerAddress,
165+
ICEPortUDP: *cfg.UDPServerPort,
166+
ICEPortTCP: *cfg.TCPServerPort,
167+
ICEHostOverride: cfg.ICEHostOverride,
168+
ICEServers: rtc.ICEServers(cfg.getICEServers(false)),
169+
TURNConfig: rtc.TURNConfig{
170+
CredentialsExpirationMinutes: *cfg.TURNCredentialsExpirationMinutes,
171+
},
172+
EnableIPv6: *cfg.EnableIPv6,
173+
UDPSocketsCount: runtime.NumCPU(),
174+
}
175+
if *cfg.ServerSideTURN {
176+
rtcServerConfig.TURNConfig.StaticAuthSecret = cfg.TURNStaticAuthSecret
177+
}
178+
if cfg.ICEHostPortOverride != nil {
179+
rtcServerConfig.ICEHostPortOverride = rtc.ICEHostPortOverride(fmt.Sprintf("%d", *cfg.ICEHostPortOverride))
180+
}
181+
rtcServer, err := rtc.NewServer(rtcServerConfig, newLogger(p), p.metrics.RTCMetrics())
182+
if err != nil {
183+
p.LogError(err.Error())
184+
return err
185+
}
160186

161-
go p.clusterEventsHandler()
162-
163-
p.LogDebug("activated", "ClusterID", status.ClusterId)
164-
165-
return nil
166-
}
187+
if err := rtcServer.Start(); err != nil {
188+
p.LogError(err.Error())
189+
return err
190+
}
167191

168-
rtcServerConfig := rtc.ServerConfig{
169-
ICEAddressUDP: cfg.UDPServerAddress,
170-
ICEAddressTCP: cfg.TCPServerAddress,
171-
ICEPortUDP: *cfg.UDPServerPort,
172-
ICEPortTCP: *cfg.TCPServerPort,
173-
ICEHostOverride: cfg.ICEHostOverride,
174-
ICEServers: rtc.ICEServers(cfg.getICEServers(false)),
175-
TURNConfig: rtc.TURNConfig{
176-
CredentialsExpirationMinutes: *cfg.TURNCredentialsExpirationMinutes,
177-
},
178-
EnableIPv6: *cfg.EnableIPv6,
179-
}
180-
if *cfg.ServerSideTURN {
181-
rtcServerConfig.TURNConfig.StaticAuthSecret = cfg.TURNStaticAuthSecret
182-
}
183-
if cfg.ICEHostPortOverride != nil {
184-
rtcServerConfig.ICEHostPortOverride = rtc.ICEHostPortOverride(fmt.Sprintf("%d", *cfg.ICEHostPortOverride))
185-
}
186-
rtcServer, err := rtc.NewServer(rtcServerConfig, newLogger(p), p.metrics.RTCMetrics())
187-
if err != nil {
188-
p.LogError(err.Error())
189-
return err
190-
}
192+
p.rtcServer = rtcServer
191193

192-
if err := rtcServer.Start(); err != nil {
193-
p.LogError(err.Error())
194-
return err
194+
go p.wsWriter()
195195
}
196196

197197
p.mut.Lock()
198198
p.nodeID = status.ClusterId
199-
p.rtcServer = rtcServer
200199
p.mut.Unlock()
201200

202201
go p.clusterEventsHandler()
203-
go p.wsWriter()
204202

205203
p.LogDebug("activated", "ClusterID", status.ClusterId)
206204

server/websocket_test.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"net/http"
99
"os"
10+
"runtime"
1011
"sync"
1112
"testing"
1213
"time"
@@ -678,8 +679,9 @@ func TestHandleJoin(t *testing.T) {
678679
mock.Anything, mock.Anything, mock.Anything, mock.Anything)
679680

680681
rtcServer, err := rtc.NewServer(rtc.ServerConfig{
681-
ICEPortUDP: 33443,
682-
ICEPortTCP: 33443,
682+
ICEPortUDP: 33443,
683+
ICEPortTCP: 33443,
684+
UDPSocketsCount: runtime.NumCPU(),
683685
}, newLogger(&p), p.metrics.RTCMetrics())
684686
require.NoError(t, err)
685687

0 commit comments

Comments
 (0)