{"record":{"id":"49e04544890d294b","repo":"temporalio/temporal","slug":"invalid-duration-q","errorCode":null,"errorMessage":"invalid duration: %q","messagePattern":"invalid duration: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"common/nexus/nexusrpc/api.go","lineNumber":259,"sourceCode":"\nfunc validateLinkType(value string) error {\n\tif len(value) == 0 {\n\t\treturn errors.New(\"link type is empty\")\n\t}\n\tfor _, c := range value {\n\t\tif (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && (c < '0' || c > '9') && c != '_' && c != '.' && c != '/' {\n\t\t\treturn errors.New(\"link type contains invalid char (valid chars: alphanumeric, '_', '.', '/')\")\n\t\t}\n\t}\n\treturn nil\n}\n\nvar durationRegexp = regexp.MustCompile(`^(\\d+(?:\\.\\d+)?)(ms|s|m)$`)\n\nfunc ParseDuration(value string) (time.Duration, error) {\n\tm := durationRegexp.FindStringSubmatch(value)\n\tif len(m) == 0 {\n\t\treturn 0, fmt.Errorf(\"invalid duration: %q\", value)\n\t}\n\tv, err := strconv.ParseFloat(m[1], 64)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tswitch m[2] {\n\tcase \"ms\":\n\t\treturn time.Millisecond * time.Duration(v), nil\n\tcase \"s\":\n\t\treturn time.Millisecond * time.Duration(v*1e3), nil\n\tcase \"m\":\n\t\treturn time.Millisecond * time.Duration(v*1e3*60), nil\n\t}\n\t// nolint:forbidigo // code is unreachable due to regex validation\n\tpanic(\"unreachable\")\n}\n","sourceCodeStart":241,"sourceCodeEnd":277,"githubUrl":"https://github.com/temporalio/temporal/blob/bde624efd13fbd3843654058db6d9c716166318b/common/nexus/nexusrpc/api.go#L241-L277","documentation":"Error \"invalid duration: %q\" thrown in temporalio/temporal.","triggerScenarios":"Thrown at common/nexus/nexusrpc/api.go:259 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bde624efd13fbd3843654058db6d9c716166318b","analyzedAt":"2026-09-01T07:18:39.080Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}