b656981cf0
Plan rejections occur when the scheduler work and the leader plan applier disagree on the feasibility of a plan. This may happen for valid reasons: since Nomad does parallel scheduling, it is expected that different workers will have a different state when computing placements. As the final plan reaches the leader plan applier, it may no longer be valid due to a concurrent scheduling taking up intended resources. In these situations the plan applier will notify the worker that the plan was rejected and that they should refresh their state before trying again. In some rare and unexpected circumstances it has been observed that workers will repeatedly submit the same plan, even if they are always rejected. While the root cause is still unknown this mitigation has been put in place. The plan applier will now track the history of plan rejections per client and include in the plan result a list of node IDs that should be set as ineligible if the number of rejections in a given time window crosses a certain threshold. The window size and threshold value can be adjusted in the server configuration. To avoid marking several nodes as ineligible at one, the operation is rate limited to 5 nodes every 30min, with an initial burst of 10 operations. |
||
---|---|---|
.. | ||
config | ||
alloc.go | ||
alloc_test.go | ||
batch_future.go | ||
batch_future_test.go | ||
bitmap.go | ||
bitmap_test.go | ||
connect.go | ||
connect_test.go | ||
consul.go | ||
consul_oss.go | ||
consul_oss_test.go | ||
consul_test.go | ||
csi.go | ||
csi_test.go | ||
devices.go | ||
devices_test.go | ||
diff.go | ||
diff_test.go | ||
encoding.go | ||
errors.go | ||
errors_test.go | ||
eval.go | ||
event.go | ||
extensions.go | ||
funcs.go | ||
funcs_test.go | ||
generate.sh | ||
handlers.go | ||
job.go | ||
job_test.go | ||
network.go | ||
network_test.go | ||
node.go | ||
node_class.go | ||
node_class_test.go | ||
node_test.go | ||
operator.go | ||
search.go | ||
secure_variables.go | ||
secure_variables_test.go | ||
service_identities.go | ||
service_registration.go | ||
service_registration_test.go | ||
services.go | ||
services_test.go | ||
streaming_rpc.go | ||
structs.go | ||
structs_codegen.go | ||
structs_oss.go | ||
structs_periodic_test.go | ||
structs_test.go | ||
testing.go | ||
uuid.go | ||
vault.go | ||
volume_test.go | ||
volumes.go |