Open/close Retention properly

pull/10616/head
Edd Robinson 2018-10-10 11:42:37 +01:00
parent 031bb7f502
commit 1f2f03d93b
2 changed files with 17 additions and 8 deletions

View File

@ -132,10 +132,7 @@ func (e *Engine) WithLogger(log *zap.Logger) {
e.sfile.WithLogger(e.logger)
e.index.WithLogger(e.logger)
e.engine.WithLogger(e.logger)
if e.retentionService != nil {
e.retentionService.WithLogger(e.logger)
}
e.retentionService.WithLogger(e.logger)
}
// PrometheusCollectors returns all the prometheus collectors associated with
@ -171,6 +168,11 @@ func (e *Engine) Open() error {
return err
}
e.engine.SetCompactionsEnabled(true) // TODO(edd):is this needed?
if err := e.retentionService.Open(); err != nil {
return err
}
e.open = true
return nil
}
@ -186,6 +188,10 @@ func (e *Engine) Close() error {
}
e.open = false
if err := e.retentionService.Close(); err != nil {
return err
}
if err := e.sfile.Close(); err != nil {
return err
}

View File

@ -93,14 +93,17 @@ func (s *retentionService) metricLabels() prometheus.Labels {
// WithLogger sets the logger l on the service. It must be called before Open.
func (s *retentionService) WithLogger(l *zap.Logger) {
if s == nil {
return // Not initialised
}
s.logger = l.With(zap.String("service", serviceName))
}
// Open opens the service, which begins the process of removing expired data.
// Re-opening the service once it's open is a no-op.
func (s *retentionService) Open() error {
if s.closing() != nil {
return nil // Already open.
if s == nil || s.closing() != nil {
return nil // Not initialised or already open.
}
s.logger.Info("Service opening", zap.Duration("check_interval", s.interval))
@ -263,8 +266,8 @@ func (s *retentionService) closing() chan struct{} {
// If a delete of data is in-progress, then it will be allowed to complete before
// Close returns. Re-closing the service once it's closed is a no-op.
func (s *retentionService) Close() error {
if s.closing() == nil {
return nil // Already closed.
if s == nil || s.closing() == nil {
return nil // Not initialised or already closed.
}
now := time.Now()