@@ -37,19 +37,24 @@ func NewHeartbeatService(config *WorkspaceServerConfig, tsServer *tsnet.Server,
3737
3838// Start begins the heartbeat loop.
3939func (s * HeartbeatService ) Start (ctx context.Context ) {
40+ s .log .Info ("HeartbeatService: Start" )
4041 transport := & http.Transport {DialContext : s .tsServer .Dial }
4142 client := & http.Client {Transport : transport , Timeout : 10 * time .Second }
4243 ticker := time .NewTicker (10 * time .Second )
4344 defer ticker .Stop ()
4445 for {
4546 select {
4647 case <- ctx .Done ():
48+ s .log .Info ("HeartbeatService: Exit" )
4749 return
4850 case <- ticker .C :
49- if s .tracker .Count () > 0 {
51+ s .log .Debugf ("HeartbeatService: checking connection count" )
52+ if s .tracker .Count ("HeartbeatService" ) > 0 {
5053 if err := s .sendHeartbeat (ctx , client ); err != nil {
5154 s .log .Errorf ("HeartbeatService: failed to send heartbeat: %v" , err )
5255 }
56+ } else {
57+ s .log .Debugf ("HeartbeatService: No active connections, skipping heartbeat." )
5358 }
5459 }
5560 }
@@ -58,25 +63,33 @@ func (s *HeartbeatService) Start(ctx context.Context) {
5863func (s * HeartbeatService ) sendHeartbeat (ctx context.Context , client * http.Client ) error {
5964 hbCtx , cancel := context .WithTimeout (ctx , 10 * time .Second )
6065 defer cancel ()
66+
6167 discoveredRunner , err := discoverRunner (hbCtx , s .lc , s .log )
6268 if err != nil {
69+ s .log .Errorf ("HeartbeatService: failed to discover runner: %v" , err )
6370 return fmt .Errorf ("failed to discover runner: %w" , err )
6471 }
72+
6573 heartbeatURL := fmt .Sprintf ("http://%s.ts.loft/devpod/%s/%s/heartbeat" , discoveredRunner , s .projectName , s .workspaceName )
66- s .log .Infof ("HeartbeatService: sending heartbeat to %s, active connections: %d" , heartbeatURL , s .tracker .Count ())
74+ s .log .Infof ("HeartbeatService: sending heartbeat to %s, active connections: %d" , heartbeatURL , s .tracker .Count ("HeartbeatService" ))
6775 req , err := http .NewRequestWithContext (hbCtx , "GET" , heartbeatURL , nil )
6876 if err != nil {
77+ s .log .Errorf ("HeartbeatService: failed to create request for %s: %v" , heartbeatURL , err )
6978 return fmt .Errorf ("failed to create request for %s: %w" , heartbeatURL , err )
7079 }
7180 req .Header .Set ("Authorization" , "Bearer " + s .config .AccessKey )
7281 resp , err := client .Do (req )
7382 if err != nil {
83+ s .log .Errorf ("HeartbeatService: request to %s failed: %v" , heartbeatURL , err )
7484 return fmt .Errorf ("request to %s failed: %w" , heartbeatURL , err )
7585 }
7686 defer resp .Body .Close ()
87+
7788 if resp .StatusCode != http .StatusOK {
89+ s .log .Errorf ("HeartbeatService: received non-OK response from %s - Status: %d" , heartbeatURL , resp .StatusCode )
7890 return fmt .Errorf ("received response from %s - Status: %d" , heartbeatURL , resp .StatusCode )
7991 }
80- s .log .Infof ("HeartbeatService: received response from %s - Status: %d" , heartbeatURL , resp .StatusCode )
92+
93+ s .log .Debugf ("HeartbeatService: received response from %s - Status: %d" , heartbeatURL , resp .StatusCode )
8194 return nil
8295}
0 commit comments