{"record":{"id":"d911943e18a87553","repo":"Billionmail/BillionMail","slug":"mountpoint-not-exists","errorCode":null,"errorMessage":"mountpoint not exists","messagePattern":"mountpoint not exists","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/internal/service/public/common.go","lineNumber":1389,"sourceCode":"\t\treturn\n\t}\n\n\t// Get home directory\n\thomepath := userInfo.HomeDir\n\tif !strings.Contains(homepath, \"/home/\") {\n\t\terr = errors.New(\"specified user not valid\")\n\t\treturn\n\t}\n\n\t// Use /home/ to split home directory, take the first part as mountpoint\n\tmountpoint = strings.Split(homepath, \"/home/\")[0]\n\n\tif mountpoint == \"\" {\n\t\tmountpoint = \"/\"\n\t}\n\n\tif !FileExists(mountpoint) {\n\t\terr = errors.New(\"mountpoint not exists\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// Get current username\nfunc GetUserName(ctx context.Context) string {\n\tval := GetSession(ctx, \"username\", \"www\")\n\tif val == nil {\n\t\treturn \"www\"\n\t}\n\treturn val.(string)\n}\n\n// Get UID and GID of a specified user\nfunc GetUidAndGid(username string) (int, int) {\n\tuserInfo, err := user.Lookup(username)","sourceCodeStart":1371,"sourceCodeEnd":1407,"githubUrl":"https://github.com/Billionmail/BillionMail/blob/fc36c76c050c3775c5e899faf7403cf0262d2744/core/internal/service/public/common.go#L1371-L1407","documentation":"Guard in RetrieveMountpointByUser: a mountpoint was derived from the user's home directory (prefix before '/home/', defaulting to '/'), but FileExists reports that path does not exist on disk. The computed storage root is therefore invalid and the function returns an error instead of a bogus path.","triggerScenarios":"Thrown at core/internal/service/public/common.go:1389 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check whether the derived mountpoint path was unmounted or deleted on the host","Verify filesystem mounting at boot (fstab entries) for the volume in question","Handle the '/' default case explicitly if the storage root is legitimately elsewhere","Retry after restoring the mount, since the path may reappear once mounted"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fc36c76c050c3775c5e899faf7403cf0262d2744","analyzedAt":"2026-09-05T21:28:54.019Z","contentChangedAt":"2026-09-05T21:28:54.019Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}