{"record":{"id":"21950500444b92d1","repo":"hashicorp/nomad","slug":"dequeue-disallowed-calling-scheduler-version-is","errorCode":null,"errorMessage":"dequeue disallowed: calling scheduler version is %d; leader version is %d","messagePattern":"dequeue disallowed: calling scheduler version is (.+?); leader version is (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nomad/eval_endpoint.go","lineNumber":141,"sourceCode":"\taclObj, err := e.srv.AuthenticateServerOnly(e.ctx, args)\n\te.srv.MeasureRPCRate(\"eval\", structs.RateMetricWrite, args)\n\tif err != nil || !aclObj.AllowServerOp() {\n\t\treturn structs.ErrPermissionDenied\n\t}\n\n\tif done, err := e.srv.forward(\"Eval.Dequeue\", args, args, reply); done {\n\t\treturn err\n\t}\n\tdefer metrics.MeasureSince([]string{\"nomad\", \"eval\", \"dequeue\"}, time.Now())\n\n\t// Ensure there is at least one scheduler\n\tif len(args.Schedulers) == 0 {\n\t\treturn fmt.Errorf(\"dequeue requires at least one scheduler type\")\n\t}\n\n\t// Check that there isn't a scheduler version mismatch\n\tif args.SchedulerVersion != scheduler.SchedulerVersion {\n\t\treturn fmt.Errorf(\"dequeue disallowed: calling scheduler version is %d; leader version is %d\",\n\t\t\targs.SchedulerVersion, scheduler.SchedulerVersion)\n\t}\n\n\t// Ensure there is a default timeout\n\tif args.Timeout <= 0 {\n\t\targs.Timeout = DefaultDequeueTimeout\n\t}\n\n\t// If the eval broker is paused, attempt to block and wait for a state\n\t// change before returning. This avoids a tight loop and mimics the\n\t// behaviour where there are no evals to process.\n\t//\n\t// The call can return because either the timeout is reached or the broker\n\t// SetEnabled function was called to modify its state. It is possible this\n\t// is because of leadership transition, therefore the RPC should exit to\n\t// allow all safety checks and RPC forwarding to occur again.\n\t//\n\t// The log line is trace, because the default worker timeout is 500ms which","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/nomad/eval_endpoint.go#L123-L159","documentation":"Fires in Eval.Dequeue when the calling server's scheduler version is older than the leader's: the leader refuses to hand evaluations to a server that may schedule them with outdated semantics.","triggerScenarios":"Thrown at nomad/eval_endpoint.go:141 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Upgrade the lagging server to at least the leader's Nomad version","Wait for the upgraded leader to hand off or for the old leader to step down"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}