@@ -105,9 +105,6 @@ type Server struct {
105
105
connCountVSCode atomic.Int64
106
106
connCountJetBrains atomic.Int64
107
107
connCountSSHSession atomic.Int64
108
- seenVSCode atomic.Bool
109
- seenJetBrains atomic.Bool
110
- seenSSHSession atomic.Bool
111
108
112
109
metrics * sshServerMetrics
113
110
}
@@ -170,7 +167,7 @@ func NewServer(ctx context.Context, logger slog.Logger, prometheusRegistry *prom
170
167
ChannelHandlers : map [string ]ssh.ChannelHandler {
171
168
"direct-tcpip" : func (srv * ssh.Server , conn * gossh.ServerConn , newChan gossh.NewChannel , ctx ssh.Context ) {
172
169
// Wrapper is designed to find and track JetBrains Gateway connections.
173
- wrapped := NewJetbrainsChannelWatcher (ctx , s .logger , newChan , & s .connCountJetBrains , & s . seenJetBrains )
170
+ wrapped := NewJetbrainsChannelWatcher (ctx , s .logger , newChan , & s .connCountJetBrains )
174
171
ssh .DirectTCPIPHandler (srv , conn , wrapped , ctx )
175
172
},
176
173
"direct-streamlocal@openssh.com" : directStreamLocalHandler ,
@@ -248,31 +245,10 @@ type ConnStats struct {
248
245
}
249
246
250
247
func (s * Server ) ConnStats () ConnStats {
251
- // if we have 0 active connections, but we have seen a connection
252
- // since the last time we collected, count it as 1 so that workspace
253
- // activity is properly counted.
254
- sshCount := s .connCountSSHSession .Load ()
255
- if sshCount == 0 && s .seenSSHSession .Load () {
256
- sshCount = 1
257
- }
258
- vscode := s .connCountVSCode .Load ()
259
- if vscode == 0 && s .seenVSCode .Load () {
260
- vscode = 1
261
- }
262
- jetbrains := s .connCountJetBrains .Load ()
263
- if jetbrains == 0 && s .seenJetBrains .Load () {
264
- jetbrains = 1
265
- }
266
-
267
- // Reset the seen trackers for the next collection.
268
- s .seenSSHSession .Store (false )
269
- s .seenVSCode .Store (false )
270
- s .seenJetBrains .Store (false )
271
-
272
248
return ConnStats {
273
- Sessions : sshCount ,
274
- VSCode : vscode ,
275
- JetBrains : jetbrains ,
249
+ Sessions : s . connCountSSHSession . Load () ,
250
+ VSCode : s . connCountVSCode . Load () ,
251
+ JetBrains : s . connCountJetBrains . Load () ,
276
252
}
277
253
}
278
254
@@ -416,14 +392,12 @@ func (s *Server) sessionStart(logger slog.Logger, session ssh.Session, extraEnv
416
392
switch magicType {
417
393
case MagicSessionTypeVSCode :
418
394
s .connCountVSCode .Add (1 )
419
- s .seenVSCode .Store (true )
420
395
defer s .connCountVSCode .Add (- 1 )
421
396
case MagicSessionTypeJetBrains :
422
397
// Do nothing here because JetBrains launches hundreds of ssh sessions.
423
398
// We instead track JetBrains in the single persistent tcp forwarding channel.
424
399
case "" :
425
400
s .connCountSSHSession .Add (1 )
426
- s .seenSSHSession .Store (true )
427
401
defer s .connCountSSHSession .Add (- 1 )
428
402
default :
429
403
logger .Warn (ctx , "invalid magic ssh session type specified" , slog .F ("type" , magicType ))
0 commit comments