{"record":{"id":"7363ffa7fc952d67","repo":"nats-io/nats-server","slug":"too-many-slashes-s","errorCode":null,"errorMessage":"too many slashes: %s","messagePattern":"too many slashes: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/cron.go","lineNumber":218,"sourceCode":"\t}\n\n\tswitch len(rangeAndStep) {\n\tcase 1:\n\t\tstep = 1\n\tcase 2:\n\t\tstep, err = mustParseInt(rangeAndStep[1])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\t// Special handling: \"N/step\" means \"N-max/step\".\n\t\tif singleDigit {\n\t\t\tend = r.max\n\t\t}\n\t\tif step > 1 {\n\t\t\textra = 0\n\t\t}\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"too many slashes: %s\", expr)\n\t}\n\n\tif start < r.min {\n\t\treturn 0, fmt.Errorf(\"beginning of range (%d) below minimum (%d): %s\", start, r.min, expr)\n\t}\n\tif end > r.max {\n\t\treturn 0, fmt.Errorf(\"end of range (%d) above maximum (%d): %s\", end, r.max, expr)\n\t}\n\tif start > end {\n\t\treturn 0, fmt.Errorf(\"beginning of range (%d) beyond end of range (%d): %s\", start, end, expr)\n\t}\n\tif step == 0 {\n\t\treturn 0, fmt.Errorf(\"step of range should be a positive number: %s\", expr)\n\t}\n\treturn getBits(start, end, step) | extra, nil\n}\n\n// parseIntOrName returns the (possibly-named) integer contained in expr.","sourceCodeStart":200,"sourceCodeEnd":236,"githubUrl":"https://github.com/nats-io/nats-server/blob/3a66a489d262bf89b71a71c955c94920394532f3/server/cron.go#L200-L236","documentation":"getRange supports at most one '/' step modifier per cron field segment; a segment containing multiple slashes is rejected. The step syntax is 'range/step' where range may be '*', a number, or a 'low-high' range.","triggerScenarios":"A cron field containing more than one '/', e.g. minutes \"*/2/3\" or \"1-10/2/2\", parsed via parseCron -> getField -> getRange.","commonSituations":"Trying to compose 'every 2 starting at X' and 'every 3' in one segment instead of a comma list.","solutions":["Use a single '/' per segment: \"*/2\"","Combine distinct stepped values with commas: \"0-10/2,20-30/3\"","Put the start into the range part instead of a second slash: \"5-59/10\""],"exampleFix":"// before\n expr := \"*/2/3\"\n// after\n expr := \"*/2\"","handlingStrategy":"validation","validationCode":"if strings.Count(seg, \"/\") > 1 {\n    return fmt.Errorf(\"at most one '/' step allowed in %q\", seg)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use a single '/' per cron field segment","Combine stepped ranges with commas instead of nested steps"],"tags":["cron","parsing"],"backgroundTag":"invalid-cron-expression","analyzedSha":"3a66a489d262bf89b71a71c955c94920394532f3","analyzedAt":"2026-09-02T04:41:54.247Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}