{"record":{"id":"82617dfaf2ea80f9","repo":"remotion-dev/remotion","slug":"disk-size-must-be-a-positive-integer-received","errorCode":null,"errorMessage":"Disk size must be a positive integer. Received: ${diskSizeInMb}","messagePattern":"Disk size must be a positive integer\\. Received: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/lambda-client/src/speculate-function-name.ts","lineNumber":44,"sourceCode":" * @see [Documentation](https://remotion.dev/docs/lambda/speculatefunctionname)\n */\nexport const speculateFunctionName = ({\n\tmemorySizeInMb,\n\tdiskSizeInMb,\n\ttimeoutInSeconds,\n}: SpeculateFunctionNameInput) => {\n\tconst memorySize = Number(memorySizeInMb);\n\tconst diskSize = Number(diskSizeInMb);\n\tconst timeout = Number(timeoutInSeconds);\n\n\tif (!Number.isInteger(memorySize) || memorySize <= 0) {\n\t\tthrow new Error(\n\t\t\t`Memory size must be a positive integer. Received: ${memorySizeInMb}`,\n\t\t);\n\t}\n\n\tif (!Number.isInteger(diskSize) || diskSize <= 0) {\n\t\tthrow new Error(\n\t\t\t`Disk size must be a positive integer. Received: ${diskSizeInMb}`,\n\t\t);\n\t}\n\n\tif (!Number.isInteger(timeout) || timeout <= 0) {\n\t\tthrow new Error(\n\t\t\t`Timeout must be a positive integer. Received: ${timeoutInSeconds}`,\n\t\t);\n\t}\n\n\treturn innerSpeculateFunctionName({\n\t\tdiskSizeInMb,\n\t\tmemorySizeInMb,\n\t\ttimeoutInSeconds,\n\t});\n};\n","sourceCodeStart":26,"sourceCodeEnd":61,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/lambda-client/src/speculate-function-name.ts#L26-L61","documentation":"speculateFunctionName validates diskSizeInMb the same way as memory: Number()-coerced, must be a positive integer. Failures here usually mean a non-numeric or non-positive disk size was supplied to a function-name prediction.","triggerScenarios":"Calling speculateFunctionName with diskSizeInMb that Number() turns into a non-integer or a value <= 0 (e.g., 0, -512, 'big', undefined, 2048.7).","commonSituations":"Disk size passed as a string from config/env without coercion; accidentally passing a percentage or unit-bearing string; defaulting to 0 in a config factory.","solutions":["Pass a positive integer for diskSizeInMb (valid Lambda range is 512-10240 MB; Remotion requires a multiple of 1).","Validate diskSizeInMb with validateDiskSizeInMb() for full type/NaN/finite/range/integer checks.","Coerce string inputs with Number() and confirm Number.isInteger() before calling."],"exampleFix":"// before\nspeculateFunctionName({ memorySizeInMb: 2048, diskSizeInMb: 0, timeoutInSeconds: 120 });\n\n// after\nspeculateFunctionName({ memorySizeInMb: 2048, diskSizeInMb: 2048, timeoutInSeconds: 120 });","handlingStrategy":"validation","validationCode":"const disk = Number(diskSizeInMb);\nif (!Number.isInteger(disk) || disk <= 0) {\n  throw new Error(`diskSizeInMb must be a positive integer, got ${diskSizeInMb}`);\n}\nspeculateFunctionName({ memorySizeInMb, diskSizeInMb: disk, timeoutInSeconds });","typeGuard":"const isPositiveInteger = (v: unknown): v is number =>\n  typeof v === 'number' && Number.isInteger(v) && v > 0;","tryCatchPattern":null,"preventionTips":["Use validateDiskSizeInMb() for the complete check chain.","Coerce and validate string inputs before calling speculateFunctionName.","Treat disk size as a number in all config files."],"tags":["input-validation","lambda","disk","configuration"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}