pkg/infra: Check errors (#19705)

* pkg/infra: Check errors

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* pkg/infra: Handle errors

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* Update pkg/infra/usagestats/usage_stats.go

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
This commit is contained in:
Arve Knudsen
2019-10-10 16:42:11 +02:00
committed by GitHub
parent f971b808b8
commit 7349a6b96c
7 changed files with 42 additions and 19 deletions

View File

@@ -209,20 +209,23 @@ func (w *FileLogWriter) DoRotate() error {
func (w *FileLogWriter) deleteOldLog() { func (w *FileLogWriter) deleteOldLog() {
dir := filepath.Dir(w.Filename) dir := filepath.Dir(w.Filename)
filepath.Walk(dir, func(path string, info os.FileInfo, err error) (returnErr error) { err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) (returnErr error) {
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
returnErr = fmt.Errorf("Unable to delete old log '%s', error: %+v", path, r) returnErr = fmt.Errorf("Unable to delete old log '%s', error: %+v", path, r)
} }
}() }()
if !info.IsDir() && info.ModTime().Unix() < (time.Now().Unix()-60*60*24*w.Maxdays) { if !info.IsDir() && info.ModTime().Unix() < (time.Now().Unix()-60*60*24*w.Maxdays) &&
if strings.HasPrefix(filepath.Base(path), filepath.Base(w.Filename)) { strings.HasPrefix(filepath.Base(path), filepath.Base(w.Filename)) {
os.Remove(path) returnErr = os.Remove(path)
} return
} }
return returnErr return
}) })
if err != nil {
fmt.Fprintf(os.Stderr, "FileLogWriter(%q): %s\n", w.Filename, err)
}
} }
// destroy file logger, close file writer. // destroy file logger, close file writer.
@@ -234,7 +237,9 @@ func (w *FileLogWriter) Close() {
// there are no buffering messages in file logger in memory. // there are no buffering messages in file logger in memory.
// flush file means sync file from disk. // flush file means sync file from disk.
func (w *FileLogWriter) Flush() { func (w *FileLogWriter) Flush() {
w.mw.fd.Sync() if err := w.mw.fd.Sync(); err != nil {
fmt.Fprintf(os.Stderr, "FileLogWriter(%q): %s\n", w.Filename, err)
}
} }
// Reload file logger // Reload file logger

View File

@@ -209,7 +209,11 @@ func ReadLoggingConfig(modes []string, logsPath string, cfg *ini.File) {
handler = log15.StreamHandler(os.Stdout, format) handler = log15.StreamHandler(os.Stdout, format)
case "file": case "file":
fileName := sec.Key("file_name").MustString(filepath.Join(logsPath, "grafana.log")) fileName := sec.Key("file_name").MustString(filepath.Join(logsPath, "grafana.log"))
os.MkdirAll(filepath.Dir(fileName), os.ModePerm) dpath := filepath.Dir(fileName)
if err := os.MkdirAll(dpath, os.ModePerm); err != nil {
Root.Error("Failed to create directory", "dpath", dpath, "err", err)
break
}
fileHandler := NewFileWriter() fileHandler := NewFileWriter()
fileHandler.Filename = fileName fileHandler.Filename = fileName
fileHandler.Format = format fileHandler.Format = format
@@ -218,7 +222,10 @@ func ReadLoggingConfig(modes []string, logsPath string, cfg *ini.File) {
fileHandler.Maxsize = 1 << uint(sec.Key("max_size_shift").MustInt(28)) fileHandler.Maxsize = 1 << uint(sec.Key("max_size_shift").MustInt(28))
fileHandler.Daily = sec.Key("daily_rotate").MustBool(true) fileHandler.Daily = sec.Key("daily_rotate").MustBool(true)
fileHandler.Maxdays = sec.Key("max_days").MustInt64(7) fileHandler.Maxdays = sec.Key("max_days").MustInt64(7)
fileHandler.Init() if err := fileHandler.Init(); err != nil {
Root.Error("Failed to create directory", "dpath", dpath, "err", err)
break
}
loggersToClose = append(loggersToClose, fileHandler) loggersToClose = append(loggersToClose, fileHandler)
loggersToReload = append(loggersToReload, fileHandler) loggersToReload = append(loggersToReload, fileHandler)

View File

@@ -547,9 +547,15 @@ func newMockGraphite(port string) (*mockGraphite, error) {
conn, err := ln.Accept() conn, err := ln.Accept()
if err != nil { if err != nil {
errc <- err errc <- err
return
} }
var b bytes.Buffer var b bytes.Buffer
io.Copy(&b, conn) if _, err := io.Copy(&b, conn); err != nil {
errc <- err
return
}
readc <- b.String() readc <- b.String()
}() }()

View File

@@ -32,10 +32,12 @@ func TestDatabaseStorageGarbageCollection(t *testing.T) {
assert.Equal(t, err, nil) assert.Equal(t, err, nil)
// insert object that should never expire // insert object that should never expire
db.Set("key4", obj, 0) err = db.Set("key4", obj, 0)
assert.Equal(t, err, nil)
getTime = time.Now getTime = time.Now
db.Set("key5", obj, 1000*time.Second) err = db.Set("key5", obj, 1000*time.Second)
assert.Equal(t, err, nil)
//run GC //run GC
db.internalRunGC() db.internalRunGC()

View File

@@ -7,6 +7,7 @@ import (
"github.com/grafana/grafana/pkg/services/sqlstore" "github.com/grafana/grafana/pkg/services/sqlstore"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
) )
type CacheableStruct struct { type CacheableStruct struct {
@@ -29,19 +30,17 @@ func createTestClient(t *testing.T, opts *setting.RemoteCacheOptions, sqlstore *
} }
err := dc.Init() err := dc.Init()
if err != nil { require.Nil(t, err, "Failed to init client for test")
t.Fatalf("failed to init client for test. error: %v", err)
}
return dc return dc
} }
func TestCachedBasedOnConfig(t *testing.T) { func TestCachedBasedOnConfig(t *testing.T) {
cfg := setting.NewCfg() cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{ err := cfg.Load(&setting.CommandLineArgs{
HomePath: "../../../", HomePath: "../../../",
}) })
require.Nil(t, err, "Failed to load config")
client := createTestClient(t, cfg.RemoteCacheOptions, sqlstore.InitTestDB(t)) client := createTestClient(t, cfg.RemoteCacheOptions, sqlstore.InitTestDB(t))
runTestsForClient(t, client) runTestsForClient(t, client)

View File

@@ -38,7 +38,7 @@ func (ts *TracingService) Init() error {
ts.parseSettings() ts.parseSettings()
if ts.enabled { if ts.enabled {
ts.initGlobalTracer() return ts.initGlobalTracer()
} }
return nil return nil

View File

@@ -151,7 +151,11 @@ func (uss *UsageStatsService) sendUsageStats(oauthProviders map[string]bool) {
data := bytes.NewBuffer(out) data := bytes.NewBuffer(out)
client := http.Client{Timeout: 5 * time.Second} client := http.Client{Timeout: 5 * time.Second}
go client.Post(usageStatsURL, "application/json", data) go func() {
if _, err := client.Post(usageStatsURL, "application/json", data); err != nil {
metricsLogger.Error("Failed to send usage stats", "err", err)
}
}()
} }
func (uss *UsageStatsService) updateTotalStats() { func (uss *UsageStatsService) updateTotalStats() {