MCPcopy Index your code
hub / github.com/APIParkLab/APIPark / scheduleUpdateLogRecord

Method scheduleUpdateLogRecord

module/log/iml.go:260–359  ·  view source on GitHub ↗

定时更新历史记录

(ctx context.Context)

Source from the content-addressed store, hash-verified

258
259// 定时更新历史记录
260func (i *imlLogModule) scheduleUpdateLogRecord(ctx context.Context) {
261 driver, has := log_driver.GetDriver("loki")
262 if !has {
263 eosc_log.Error("driver loki not found")
264 return
265 }
266 info, err := i.service.GetLogSource(ctx, "loki")
267 if err != nil {
268 if !errors.Is(err, gorm.ErrRecordNotFound) {
269 eosc_log.Errorf("get log source loki error: %s", err)
270 return
271 }
272 return
273 }
274 now := time.Now()
275 before90Days := now.Add(-7 * 24 * time.Hour)
276 beginTime := before90Days
277 if info.LastPullTime.After(before90Days) {
278 before90Days = info.LastPullTime
279 }
280 pauseTime := now
281 historyFinish := false
282 go func() {
283 eosc_log.Infof("start update history log record,start time: %s", beginTime.Format("2006-01-02 15:04:05"))
284 ticket := time.NewTicker(1 * time.Minute)
285 defer ticket.Stop()
286 for {
287 now = time.Now()
288 select {
289 case <-ctx.Done():
290 return
291 case <-ticket.C:
292 switch {
293 case now.Sub(beginTime) > oneDay:
294 endTime := beginTime.Add(oneDay)
295 err = i.updateLogRecord(ctx, driver, beginTime, endTime)
296 if err != nil {
297 eosc_log.Errorf("update log record error: %s", err)
298 continue
299 }
300 err = i.service.UpdateLogSource(ctx, "loki", &log.Save{
301 LastPullTime: &endTime,
302 })
303 if err != nil {
304 eosc_log.Errorf("update log source error: %s", err)
305 continue
306 }
307 beginTime = endTime
308 case now.Sub(pauseTime) <= oneDay:
309 endTime := pauseTime
310 err = i.updateLogRecord(ctx, driver, beginTime, endTime)
311 if err != nil {
312 eosc_log.Errorf("update log record error: %s", err)
313 historyFinish = true
314 return
315 }
316 historyFinish = true
317 err = i.service.UpdateLogSource(ctx, "loki", &log.Save{

Callers 2

SaveMethod · 0.95
OnInitMethod · 0.95

Calls 5

updateLogRecordMethod · 0.95
GetDriverMethod · 0.80
GetLogSourceMethod · 0.65
StopMethod · 0.65
UpdateLogSourceMethod · 0.65

Tested by

no test coverage detected