{"record":{"id":"6f83d5125118a9dc","repo":"pulumi/pulumi","slug":"package-name-is-empty","errorCode":null,"errorMessage":"package name is empty","messagePattern":"package name is empty","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/resource/deploy/source_eval.go","lineNumber":783,"sourceCode":"\tparsedVersion, err := semver.Parse(version)\n\tif err != nil {\n\t\tlogging.V(5).Infof(\"parseProviderRequest(%s, %s): semver version string is invalid: %v\", pkg, version, err)\n\t\treturn providers.ProviderRequest{}, err\n\t}\n\n\turl := strings.TrimSuffix(pluginDownloadURL, \"/\")\n\n\treturn providers.NewProviderRequest(pkg, &parsedVersion, url, pluginChecksums, parameterization), nil\n}\n\nfunc (rm *resmon) RegisterPackage(ctx context.Context,\n\treq *pulumirpc.RegisterPackageRequest,\n) (*pulumirpc.RegisterPackageResponse, error) {\n\tlogging.V(5).Infof(\"ResourceMonitor.RegisterPackage(%v)\", req)\n\n\tname := tokens.Package(req.Name)\n\tif name == \"\" {\n\t\treturn nil, errors.New(\"package name is empty\")\n\t}\n\n\t// First parse the request into a ProviderRequest\n\tvar version *semver.Version\n\tif req.Version != \"\" {\n\t\tv, err := semver.Parse(req.Version)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"parse package version %s: %w\", req.Version, err)\n\t\t}\n\t\tversion = &v\n\t}\n\t// Parse the parameterization\n\tvar parameterization *workspace.Parameterization\n\tif req.Parameterization != nil {\n\t\tparameterizationVersion, err := semver.Parse(req.Parameterization.Version)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"parse parameter version %s: %w\", req.Parameterization.Version, err)\n\t\t}","sourceCodeStart":765,"sourceCodeEnd":801,"githubUrl":"https://github.com/pulumi/pulumi/blob/793f7b2e160db4321fb7fb6b0607461e01cb251e/pkg/resource/deploy/source_eval.go#L765-L801","documentation":"The resource monitor's `RegisterPackage` gRPC handler requires a non-empty package name to construct a `ProviderRequest` for a (possibly parameterized) package. If `req.Name` is empty, it returns `errors.New(\"package name is empty\")`. This indicates a malformed RegisterPackage call from the language host/SDK.","triggerScenarios":"A language SDK sends RegisterPackage with an empty `Name` field — usually an SDK bug or a program constructing a provider/package registration with a blank package (e.g. empty string in provider construction or malformed parameterization).","commonSituations":"Language SDK/engine version mismatch after upgrade; program code passing an empty package name to a provider constructor helper; SDK serialization bug for parameterized packages.","solutions":["Check that provider/package constructor arguments in program code supply a non-empty package name","Upgrade the language SDK and CLI to matching versions (`pulumi about` to compare)","Re-run with `--logtostderr -v=9` to capture the offending RegisterPackage call and file a bug if the SDK sent an empty name","Simplify/review any dynamic provider or parameterization code in the program"],"exampleFix":"// before (TS)\nconst p = new Provider(\"\", {});\n// after\nconst p = new Provider(\"myprovider\", {});","handlingStrategy":"validation","validationCode":"// TS: guard package names passed to provider constructors\nfunction assertNonEmpty(name: string, what: string) {\n  if (!name) throw new Error(`${what} name must be non-empty`);\n}\nassertNonEmpty(pkgName, 'package');","typeGuard":"function isNonEmptyString(v: unknown): v is string {\n  return typeof v === 'string' && v.trim().length > 0;\n}","tryCatchPattern":"// TS automation API\ntry {\n  await stack.up();\n} catch (err) {\n  if (String(err).includes(\"package name is empty\")) {\n    console.error(\"A RegisterPackage call carried an empty name; check SDK version and provider construction code\");\n  }\n  throw err;\n}","preventionTips":["Keep language SDK versions aligned with the CLI (`pulumi about`)","Never pass empty strings as package names in dynamic provider code","Report persistent occurrences with verbose logs; usually an SDK/engine bug"],"tags":["provider","grpc","register-package","sdk"],"backgroundTag":"empty-package-name","analyzedSha":"793f7b2e160db4321fb7fb6b0607461e01cb251e","analyzedAt":"2026-08-31T09:36:43.099Z","schemaVersion":2},"datasetVersion":"2026-09-01T08:17:40.651Z"}