Skip to content

Commit c83ff99

Browse files
authored
CR-16899-send-heartbeat (#200)
* send heartbeat
1 parent f70e462 commit c83ff99

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

server/application/application.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,19 +1050,35 @@ func (s *Server) StartEventSource(es *events.EventSource, stream events.Eventing
10501050
}
10511051
}
10521052

1053-
events := make(chan *appv1.ApplicationWatchEvent, watchAPIBufferSize)
1054-
1055-
unsubscribe := s.appBroadcaster.Subscribe(events)
1053+
eventsChannel := make(chan *appv1.ApplicationWatchEvent, watchAPIBufferSize)
1054+
unsubscribe := s.appBroadcaster.Subscribe(eventsChannel)
1055+
ticker := time.NewTicker(5 * time.Second)
10561056
defer unsubscribe()
1057+
defer ticker.Stop()
10571058
for {
10581059
select {
1059-
case event := <-events:
1060+
case event := <-eventsChannel:
10601061
shouldProcess, ignoreResourceCache := s.applicationEventReporter.shouldSendApplicationEvent(event)
10611062
if !shouldProcess {
10621063
continue
10631064
}
10641065
ts := time.Now().Format("2006-01-02T15:04:05.000Z")
10651066
sendIfPermitted(event.Application, event.Type, ts, ignoreResourceCache)
1067+
case <-ticker.C:
1068+
var err error
1069+
ts := time.Now().Format("2006-01-02T15:04:05.000Z")
1070+
payload := events.EventPayload{Timestamp: ts}
1071+
payloadBytes, err := json.Marshal(&payload)
1072+
if err != nil {
1073+
log.Errorf("failed to marshal payload for heartbeat: %s", err.Error())
1074+
break
1075+
}
1076+
1077+
ev := &events.Event{Payload: payloadBytes, Name: es.Name}
1078+
if err = stream.Send(ev); err != nil {
1079+
log.Errorf("failed to send heartbeat: %s", err.Error())
1080+
break
1081+
}
10661082
case <-stream.Context().Done():
10671083
return nil
10681084
}

0 commit comments

Comments
 (0)