{"record":{"id":"b2be22fc8454e098","repo":"plandex-ai/plandex","slug":"error-getting-org-default-settings-v","errorCode":null,"errorMessage":"error getting org default settings: %v","messagePattern":"error getting org default settings: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/server/db/settings_helpers.go","lineNumber":40,"sourceCode":"\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting custom models: %v\", err)\n\t}\n\n\tdefer func() {\n\t\tif settings != nil {\n\t\t\tsettings.Configure(result.CustomModelPacks, result.CustomModels, result.CustomProviders, os.Getenv(\"PLANDEX_CLOUD\") != \"\")\n\t\t}\n\t}()\n\n\tbytes, err := os.ReadFile(settingsPath)\n\n\tif os.IsNotExist(err) || len(bytes) == 0 {\n\t\tlog.Printf(\"GetPlanSettings - no settings file found for plan %s - checking org defaults\", plan.Id)\n\t\t// see if org has default settings\n\t\tdefaultSettings, err := GetOrgDefaultSettings(plan.OrgId)\n\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error getting org default settings: %v\", err)\n\t\t}\n\n\t\tif defaultSettings != nil {\n\t\t\tlog.Printf(\"GetPlanSettings - found org default settings for plan %s\", plan.Id)\n\t\t\treturn defaultSettings, nil\n\t\t} else {\n\t\t\tlog.Printf(\"GetPlanSettings - no org default settings found for plan %s\", plan.Id)\n\t\t}\n\n\t\tlog.Println(\"GetPlanSettings - no default settings found, returning default settings object\")\n\t\t// if it doesn't exist, return default settings object\n\t\tsettings = &shared.PlanSettings{\n\t\t\tUpdatedAt:     plan.CreatedAt,\n\t\t\tModelPackName: shared.DefaultModelPack.Name,\n\t\t}\n\t\treturn settings, nil\n\t} else if err != nil {\n\t\treturn nil, fmt.Errorf(\"error reading settings file: %v\", err)","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/plandex-ai/plandex/blob/e2d772072efadbe41d2946d97d79be55532dbab5/app/server/db/settings_helpers.go#L22-L58","documentation":"When a plan has no (or empty) settings.json, GetPlanSettings falls back to GetOrgDefaultSettings(plan.OrgId). If that org-defaults lookup errors, it is wrapped here. It is a fallback-path failure: the plan's own settings were absent and reading org defaults also failed.","triggerScenarios":"Calling GetPlanSettings when the plan's settings.json is missing or zero-length AND GetOrgDefaultSettings fails — e.g. org settings store missing/corrupt, or a database (sqlx) error during the lookup.","commonSituations":"Fresh plans with no per-plan settings combined with DB connectivity issues; corrupt org default settings data; wrong org id on the plan.","solutions":["Unwrap the inner error and fix the underlying GetOrgDefaultSettings failure.","Check database connectivity if org defaults are DB-backed.","Verify plan.OrgId is correct and its org exists.","As a workaround, create the plan's settings.json explicitly so the fallback path isn't taken."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"settings, err := GetPlanSettings(plan)\nif err != nil && strings.Contains(err.Error(), \"error getting org default settings\") {\n    log.Printf(\"org defaults unavailable for %s: %v\", plan.OrgId, err)\n    settings = &shared.PlanSettings{ModelPackName: shared.DefaultModelPack.Name}\n}","preventionTips":["Store explicit per-plan settings.json for plans that must not depend on org defaults.","Ensure org default settings exist and are readable before creating plans under that org.","Check DB health if the org-defaults store is database-backed."],"tags":["go","settings","fallback"],"backgroundTag":"settings-load-failed","analyzedSha":"e2d772072efadbe41d2946d97d79be55532dbab5","analyzedAt":"2026-09-05T20:56:53.631Z","contentChangedAt":"2026-09-05T20:56:53.631Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}