in apis/flinkcluster/v1beta1/flinkcluster_validate.go [162:190]
func (v *Validator) checkCancelRequested(
old *FlinkCluster, new *FlinkCluster) (bool, error) {
if old.Spec.Job == nil || new.Spec.Job == nil {
return false, nil
}
var restartJob = (old.Spec.Job.CancelRequested != nil && *old.Spec.Job.CancelRequested) &&
(new.Spec.Job.CancelRequested == nil || !*new.Spec.Job.CancelRequested)
if restartJob {
return false, fmt.Errorf(
"updating cancelRequested from true to false is not allowed")
}
var stopJob = (old.Spec.Job.CancelRequested == nil || !*old.Spec.Job.CancelRequested) &&
(new.Spec.Job.CancelRequested != nil && *new.Spec.Job.CancelRequested)
if stopJob {
// Check if only `cancelRequested` changed, no other changes.
var oldCopy = old.DeepCopy()
oldCopy.Spec.Job.CancelRequested = new.Spec.Job.CancelRequested
if reflect.DeepEqual(new.Spec, oldCopy.Spec) {
return true, nil
}
return false, fmt.Errorf(
"you cannot update cancelRequested with others at the same time")
}
return false, nil
}