mirror of https://github.com/grafana/grafana
parent
1a32ab64b6
commit
dbb7852f21
@ -0,0 +1,7 @@ |
||||
package models |
||||
|
||||
import "time" |
||||
|
||||
type HourCommand struct { |
||||
Time time.Time |
||||
} |
@ -0,0 +1,39 @@ |
||||
//"I want to be a cleaner, just like you," said Mathilda
|
||||
//"Okay," replied Leon
|
||||
|
||||
package backgroundtasks |
||||
|
||||
import ( |
||||
"time" |
||||
|
||||
"github.com/grafana/grafana/pkg/bus" |
||||
"github.com/grafana/grafana/pkg/log" |
||||
"github.com/grafana/grafana/pkg/models" |
||||
) |
||||
|
||||
var ( |
||||
tlog log.Logger = log.New("ticker") |
||||
) |
||||
|
||||
func Init() { |
||||
go start() |
||||
} |
||||
|
||||
func start() { |
||||
go cleanup(time.Now()) |
||||
|
||||
ticker := time.NewTicker(time.Hour * 1) |
||||
for { |
||||
select { |
||||
case tick := <-ticker.C: |
||||
go cleanup(tick) |
||||
} |
||||
} |
||||
} |
||||
|
||||
func cleanup(now time.Time) { |
||||
err := bus.Publish(&models.HourCommand{Time: now}) |
||||
if err != nil { |
||||
tlog.Error("Cleanup job failed", "error", err) |
||||
} |
||||
} |
@ -0,0 +1,38 @@ |
||||
package backgroundtasks |
||||
|
||||
import ( |
||||
"io/ioutil" |
||||
"os" |
||||
"path" |
||||
|
||||
"github.com/grafana/grafana/pkg/bus" |
||||
"github.com/grafana/grafana/pkg/models" |
||||
"github.com/grafana/grafana/pkg/setting" |
||||
) |
||||
|
||||
func init() { |
||||
bus.AddEventListener(CleanTmpFiles) |
||||
} |
||||
|
||||
func CleanTmpFiles(cmd *models.HourCommand) error { |
||||
files, err := ioutil.ReadDir(setting.ImagesDir) |
||||
|
||||
var toDelete []os.FileInfo |
||||
for _, file := range files { |
||||
if file.ModTime().AddDate(0, 0, setting.RenderedImageTTLDays).Before(cmd.Time) { |
||||
toDelete = append(toDelete, file) |
||||
} |
||||
} |
||||
|
||||
for _, file := range toDelete { |
||||
fullPath := path.Join(setting.ImagesDir, file.Name()) |
||||
err := os.Remove(fullPath) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
} |
||||
|
||||
tlog.Debug("Found old rendered image to delete", "deleted", len(toDelete), "keept", len(files)) |
||||
|
||||
return err |
||||
} |
Loading…
Reference in new issue