···4646 }
47474848 resetTimer := make(chan struct{})
4949+ segmentTimestamps := make([]time.Time, 0, 10)
49505051 go func() {
5152 for {
···5354 case <-ctx.Done():
5455 return
5556 case <-resetTimer:
5656- continue
5757+ now := time.Now()
5858+ segmentTimestamps = append(segmentTimestamps, now)
5959+6060+ // Only keep events from the last 3 seconds
6161+ cutoff := now.Add(-3 * time.Second)
6262+ filtered := segmentTimestamps[:0]
6363+ for _, t := range segmentTimestamps {
6464+ if t.After(cutoff) {
6565+ filtered = append(filtered, t)
6666+ }
6767+ }
6868+ segmentTimestamps = filtered
6969+7070+ if len(segmentTimestamps) > 6 {
7171+ log.Error(ctx, "too many segments in 3 seconds", "count", len(segmentTimestamps))
7272+ elem.ErrorMessage(gst.DomainCore, gst.CoreErrorFailed, "Too many segments in 3 seconds", "More than 6 segments in 3 seconds")
7373+ return
7474+ }
5775 case <-time.After(time.Second * 30):
5876 log.Warn(ctx, "no new segment for 30 seconds")
5977 elem.ErrorMessage(gst.DomainCore, gst.CoreErrorFailed, "No new segment for 30 seconds", "No new segment for 30 seconds (debug)")