定时更新历史记录
(ctx context.Context)
| 258 | |
| 259 | // 定时更新历史记录 |
| 260 | func (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{ |
no test coverage detected