{"id":"75950aaae54b46e1","repo":"gohugoio/hugo","slug":"multihost-change-detected-please-restart-server","errorCode":null,"errorMessage":"multihost change detected, please restart server","messagePattern":"multihost change detected, please restart server","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"commands/hugobuilder.go","lineNumber":1181,"sourceCode":"\n\treturn\n}\n\nfunc (c *hugoBuilder) reloadConfig() error {\n\tc.r.resetLogs()\n\tc.r.configVersionID.Add(1)\n\n\tif err := c.withConfOrOldConfE(func(conf *commonConfig) error {\n\t\toldConf := conf\n\t\tc.conf = nil\n\t\tnewConf, err := c.r.ConfigFromConfig(configKey{counter: c.r.configVersionID.Load()}, conf)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsameLen := len(oldConf.configs.Languages) == len(newConf.configs.Languages)\n\t\tif !sameLen {\n\t\t\tif oldConf.configs.IsMultihost || newConf.configs.IsMultihost {\n\t\t\t\treturn errors.New(\"multihost change detected, please restart server\")\n\t\t\t}\n\t\t}\n\t\tc.conf = newConf\n\t\treturn nil\n\t}); err != nil {\n\t\treturn err\n\t}\n\n\tif c.onConfigLoaded != nil {\n\t\tif err := c.onConfigLoaded(true); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n","sourceCodeStart":1163,"sourceCodeEnd":1198,"githubUrl":"https://github.com/gohugoio/hugo/blob/8a468df065a75c1c7cf9f6850f32148746590ea5/commands/hugobuilder.go#L1163-L1198","documentation":"Returned by reloadConfig during a live config reload in `hugo server` when the number of configured languages changed and either the old or new configuration is multihost (per-language baseURLs). The multihost server wires one HTTP server per language at startup, so adding/removing a language can't be applied via hot reload and Hugo asks for a restart instead of serving an inconsistent state.","triggerScenarios":"Editing the site config while `hugo server` is running such that len(languages) changes (adding or removing a [languages.xx] block) while multihost mode is active before or after the change — i.e. languages have distinct baseURL values.","commonSituations":"Iterating on a multilingual site in server mode and adding a new language section, or adding a per-language baseURL (switching into multihost) together with a language count change.","solutions":["Stop and restart `hugo server` — the new language set will be picked up on startup.","If you want hot reloads while iterating, avoid per-language baseURLs (non-multihost) during development."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// avoid editing multihost-related config (languages' baseURL entries)\n// while the dev server is running; plan such changes for a restart","typeGuard":null,"tryCatchPattern":"if err := server.Run(); err != nil {\n    if strings.Contains(err.Error(), \"multihost change detected\") {\n        // config edit toggled multihost mode; restart the server process\n        return restartServer()\n    }\n    return err\n}","preventionTips":["Treat changes to per-language baseURL (which toggle multihost mode) as restart-requiring","In wrappers/supervisors, detect this message and automatically restart the hugo server process","Don't attempt to continue the live-reload session after this error — state is stale; a clean restart is the fix"],"tags":["hugo","server","multihost","multilingual","live-reload","config-reload"],"analyzedSha":"8a468df065a75c1c7cf9f6850f32148746590ea5","analyzedAt":"2026-07-31T21:23:07.045Z","schemaVersion":2}