{"record":{"id":"895e35d761e86379","repo":"kubernetes/kubernetes","slug":"medium-s-doesn-t-have-size-information","errorCode":null,"errorMessage":"medium: %s doesn't have size information","messagePattern":"medium: (.+?) doesn't have size information","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"pkg/apis/core/v1/helper/helpers.go","lineNumber":122,"sourceCode":"\treturn fmt.Sprintf(\"%d%s\", size, hugePageSizeUnitList[idx]), nil\n}\n\n// IsHugePageMedium returns true if the volume medium is in 'HugePages[-size]' format\nfunc IsHugePageMedium(medium v1.StorageMedium) bool {\n\tif medium == v1.StorageMediumHugePages {\n\t\treturn true\n\t}\n\treturn strings.HasPrefix(string(medium), string(v1.StorageMediumHugePagesPrefix))\n}\n\n// HugePageSizeFromMedium returns the page size for the specified huge page medium.\n// If the specified input is not a valid huge page medium an error is returned.\nfunc HugePageSizeFromMedium(medium v1.StorageMedium) (resource.Quantity, error) {\n\tif !IsHugePageMedium(medium) {\n\t\treturn resource.Quantity{}, fmt.Errorf(\"medium: %s is not a hugepage medium\", medium)\n\t}\n\tif medium == v1.StorageMediumHugePages {\n\t\treturn resource.Quantity{}, fmt.Errorf(\"medium: %s doesn't have size information\", medium)\n\t}\n\tpageSize := strings.TrimPrefix(string(medium), string(v1.StorageMediumHugePagesPrefix))\n\treturn resource.ParseQuantity(pageSize)\n}\n\n// IsOvercommitAllowed returns true if the resource is in the default\n// namespace and is not hugepages.\nfunc IsOvercommitAllowed(name v1.ResourceName) bool {\n\treturn IsNativeResource(name) &&\n\t\t!IsHugePageResourceName(name)\n}\n\n// IsAttachableVolumeResourceName returns true when the resource name is prefixed in attachable volume\nfunc IsAttachableVolumeResourceName(name v1.ResourceName) bool {\n\treturn strings.HasPrefix(string(name), v1.ResourceAttachableVolumesPrefix)\n}\n\n// IsServiceIPSet aims to check if the service's ClusterIP is set or not","sourceCodeStart":104,"sourceCodeEnd":140,"githubUrl":"https://github.com/kubernetes/kubernetes/blob/b882c60b4023bdf09264c2d5d30a2cadebc240fb/pkg/apis/core/v1/helper/helpers.go#L104-L140","documentation":"Thrown by HugePageSizeFromMedium() when the medium is exactly v1.StorageMediumHugePages ('HugePages') with no size suffix. The bare 'HugePages' medium requests hugepages without specifying a page size, so there is no size to extract; callers must request a sized medium ('HugePages-<size>') to get a quantity.","triggerScenarios":"An emptyDir volume with medium: HugePages (no size); HugePageSizeFromMedium is called and IsHugePageMedium returns true but the medium lacks the '-<size>' suffix.","commonSituations":"Volume spec using the bare HugePages medium without the page-size suffix; kubelet code assuming all hugepage media carry size info; legacy manifests predating sized hugepage volumes.","solutions":["Specify the page size in the medium, e.g. 'HugePages-2Mi' or use the resource-based hugepage request on the volume.","If the medium is intentionally bare HugePages, do not call HugePageSizeFromMedium - handle it as size-unspecified.","Update the manifest to the modern hugepage volume source that uses the resource name."],"exampleFix":"# before\nvolumes:\n- name: hp\n  emptyDir:\n    medium: HugePages\n\n# after\nvolumes:\n- name: hp\n  emptyDir:\n    medium: HugePages\n    sizeLimit: 2Gi","handlingStrategy":"validation","validationCode":"func mediumHasSize(medium v1.StorageMedium) bool {\n    return v1helper.IsHugePageMedium(medium) && medium != v1.StorageMediumHugePages\n}","typeGuard":"func mediumHasSize(medium v1.StorageMedium) bool {\n    return v1helper.IsHugePageMedium(medium) && medium != v1.StorageMediumHugePages\n}","tryCatchPattern":null,"preventionTips":["Specify the page size in the medium ('HugePages-2Mi') or use the sizeLimit field.","Do not call HugePageSizeFromMedium on a bare 'HugePages' medium.","Update legacy manifests to the modern sized hugepage volume source."],"tags":["kubernetes","hugepages","emptydir","medium","validation"],"analyzedSha":"b882c60b4023bdf09264c2d5d30a2cadebc240fb","analyzedAt":"2026-08-07T04:07:48.144Z","schemaVersion":2},"datasetVersion":"2026-08-07T07:17:06.508Z"}