浏览代码

main: Improve logging for initial config loading (ref #4431)

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4436
Simon Frei 8 年之前
父节点
当前提交
20fac4bb80
共有 1 个文件被更改,包括 19 次插入17 次删除
  1. 19 17
      cmd/syncthing/main.go

+ 19 - 17
cmd/syncthing/main.go

@@ -449,7 +449,7 @@ func main() {
 }
 }
 
 
 func openGUI() {
 func openGUI() {
-	cfg, _ := loadConfig()
+	cfg, _ := loadOrDefaultConfig()
 	if cfg.GUI().Enabled {
 	if cfg.GUI().Enabled {
 		openURL(cfg.GUI().URL())
 		openURL(cfg.GUI().URL())
 	} else {
 	} else {
@@ -488,9 +488,7 @@ func generate(generateDir string) {
 		l.Warnln("Config exists; will not overwrite.")
 		l.Warnln("Config exists; will not overwrite.")
 		return
 		return
 	}
 	}
-	var myName, _ = os.Hostname()
-	var newCfg = defaultConfig(myName)
-	var cfg = config.Wrap(cfgFile, newCfg)
+	var cfg = defaultConfig(cfgFile)
 	err = cfg.Save()
 	err = cfg.Save()
 	if err != nil {
 	if err != nil {
 		l.Warnln("Failed to save config", err)
 		l.Warnln("Failed to save config", err)
@@ -520,7 +518,7 @@ func debugFacilities() string {
 }
 }
 
 
 func checkUpgrade() upgrade.Release {
 func checkUpgrade() upgrade.Release {
-	cfg, _ := loadConfig()
+	cfg, _ := loadOrDefaultConfig()
 	opts := cfg.Options()
 	opts := cfg.Options()
 	release, err := upgrade.LatestRelease(opts.ReleasesURL, Version, opts.UpgradeToPreReleases)
 	release, err := upgrade.LatestRelease(opts.ReleasesURL, Version, opts.UpgradeToPreReleases)
 	if err != nil {
 	if err != nil {
@@ -558,7 +556,7 @@ func performUpgrade(release upgrade.Release) {
 }
 }
 
 
 func upgradeViaRest() error {
 func upgradeViaRest() error {
-	cfg, _ := loadConfig()
+	cfg, _ := loadOrDefaultConfig()
 	u, err := url.Parse(cfg.GUI().URL())
 	u, err := url.Parse(cfg.GUI().URL())
 	if err != nil {
 	if err != nil {
 		return err
 		return err
@@ -663,7 +661,7 @@ func syncthingMain(runtimeOptions RuntimeOptions) {
 		"myID": myID.String(),
 		"myID": myID.String(),
 	})
 	})
 
 
-	cfg := loadOrCreateConfig()
+	cfg := loadConfigAtStartup()
 
 
 	if err := checkShortIDs(cfg); err != nil {
 	if err := checkShortIDs(cfg); err != nil {
 		l.Fatalln("Short device IDs are in conflict. Unlucky!\n  Regenerate the device ID of one of the following:\n  ", err)
 		l.Fatalln("Short device IDs are in conflict. Unlucky!\n  Regenerate the device ID of one of the following:\n  ", err)
@@ -965,26 +963,28 @@ func setupSignalHandling() {
 	}()
 	}()
 }
 }
 
 
-func loadConfig() (*config.Wrapper, error) {
+func loadOrDefaultConfig() (*config.Wrapper, error) {
 	cfgFile := locations[locConfigFile]
 	cfgFile := locations[locConfigFile]
 	cfg, err := config.Load(cfgFile, myID)
 	cfg, err := config.Load(cfgFile, myID)
 
 
 	if err != nil {
 	if err != nil {
-		myName, _ := os.Hostname()
-		newCfg := defaultConfig(myName)
-		cfg = config.Wrap(cfgFile, newCfg)
+		cfg = defaultConfig(cfgFile)
 	}
 	}
 
 
 	return cfg, err
 	return cfg, err
 }
 }
 
 
-func loadOrCreateConfig() *config.Wrapper {
-	cfg, err := loadConfig()
+func loadConfigAtStartup() *config.Wrapper {
+	cfgFile := locations[locConfigFile]
+	cfg, err := config.Load(cfgFile, myID)
 	if os.IsNotExist(err) {
 	if os.IsNotExist(err) {
+		cfg := defaultConfig(cfgFile)
 		cfg.Save()
 		cfg.Save()
-		l.Infof("Defaults saved. Edit %s to taste or use the GUI\n", cfg.ConfigPath())
+		l.Infof("Default config saved. Edit %s to taste or use the GUI\n", cfg.ConfigPath())
+	} else if err == io.EOF {
+		l.Fatalln("Failed to load config: unexpected end of file. Truncated or empty configuration?")
 	} else if err != nil {
 	} else if err != nil {
-		l.Fatalln("Config:", err)
+		l.Fatalln("Failed to load config:", err)
 	}
 	}
 
 
 	if cfg.RawCopy().OriginalVersion != config.CurrentVersion {
 	if cfg.RawCopy().OriginalVersion != config.CurrentVersion {
@@ -1087,7 +1087,9 @@ func setupGUI(mainService *suture.Supervisor, cfg *config.Wrapper, m *model.Mode
 	}
 	}
 }
 }
 
 
-func defaultConfig(myName string) config.Configuration {
+func defaultConfig(cfgFile string) *config.Wrapper {
+	myName, _ := os.Hostname()
+
 	var defaultFolder config.FolderConfiguration
 	var defaultFolder config.FolderConfiguration
 
 
 	if !noDefaultFolder {
 	if !noDefaultFolder {
@@ -1132,7 +1134,7 @@ func defaultConfig(myName string) config.Configuration {
 		}
 		}
 	}
 	}
 
 
-	return newCfg
+	return config.Wrap(cfgFile, newCfg)
 }
 }
 
 
 func resetDB() error {
 func resetDB() error {