diff --git a/src/modules/index/cache/indexdb.go b/src/modules/index/cache/indexdb.go index 51a28a22..cd000a31 100644 --- a/src/modules/index/cache/indexdb.go +++ b/src/modules/index/cache/indexdb.go @@ -248,24 +248,35 @@ func getIndexFromRemote(instances []*model.Instance) error { filepath := fmt.Sprintf("db.tar.gz") var err error // Get the data - perm := rand.Perm(len(instances)) for i := range perm { url := fmt.Sprintf("http://%s:%s/api/index/idxfile", instances[perm[i]].Identity, instances[perm[i]].HTTPPort) - resp, err := http.Get(url) - if err != nil { - return err + resp, e := http.Get(url) + if e != nil { + err = fmt.Errorf("get index from:%s err:%v", url, e) + logger.Warning(err) + continue } defer resp.Body.Close() // Create the file - out, err := os.Create(filepath) - if err != nil { - return err + out, e := os.Create(filepath) + if e != nil { + err = fmt.Errorf("create file:%s err:%v", filepath, e) + logger.Warning(err) + continue } defer out.Close() // Write the body to file _, err = io.Copy(out, resp.Body) + if err != nil { + logger.Warning(err) + continue + } + break + } + if err != nil { + return err } compress.UnTarGz(filepath, ".") @@ -273,9 +284,7 @@ func getIndexFromRemote(instances []*model.Instance) error { return err } //清空db目录 - if err = os.Remove(filepath); err != nil { - return err - } + err = os.Remove(filepath) return err } diff --git a/src/modules/transfer/cron/stra.go b/src/modules/transfer/cron/stra.go index 1c3e61e3..b210447e 100644 --- a/src/modules/transfer/cron/stra.go +++ b/src/modules/transfer/cron/stra.go @@ -53,7 +53,11 @@ func getStrategy() { logger.Warningf("get strategy from remote failed, error:%v", stras.Err) continue } + if len(stras.Data) > 0 { + break + } } + if err != nil { logger.Error("get stra err:", err) stats.Counter.Set("stra.err", 1) diff --git a/src/modules/tsdb/migrate/worker.go b/src/modules/tsdb/migrate/worker.go index e1034ef4..23c3d822 100644 --- a/src/modules/tsdb/migrate/worker.go +++ b/src/modules/tsdb/migrate/worker.go @@ -48,6 +48,7 @@ func pullRRD(node string, addr string, concurrent int) { time.Sleep(10 * time.Millisecond) continue } + stats.Counter.Set("pull.rrd", count) filenames := make([]dataobj.RRDFile, count) for i := 0; i < count; i++ { @@ -78,11 +79,13 @@ func pullRRD(node string, addr string, concurrent int) { paths := strings.Split(f.Filename, "/") if len(paths) != 2 { logger.Errorf("write rrd file err %v filename:%s", err, f.Filename) + stats.Counter.Set("pull.rrd.err", count) continue } file.EnsureDir(rrdtool.Config.Storage + "/" + paths[0]) err = utils.WriteFile(filePath, f.Body, 0644) if err != nil { + stats.Counter.Set("pull.rrd.err", count) logger.Errorf("write rrd file err %v filename:%s", err, f.Filename) }