Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

core: remove internalization of affinity strings #10904

Merged
merged 1 commit into from
Jul 22, 2021
Merged

Conversation

shoenig
Copy link
Contributor

@shoenig shoenig commented Jul 15, 2021

Basically the same as #10896 but with the Affinity struct.
Since we use reflect.DeepEquals for job comparison, there is
risk of false positives for changes due to a job struct with
memoized vs non-memoized strings.

Closes #10897

Basically the same as #10896 but with the Affinity struct.
Since we use reflect.DeepEquals for job comparison, there is
risk of false positives for changes due to a job struct with
memoized vs non-memoized strings.

Closes #10897
@shoenig shoenig requested review from notnoop and isabeldepapel July 15, 2021 20:16
Copy link
Contributor

@notnoop notnoop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Good catch!

RTarget: a.RTarget,
Operand: a.Operand,
Weight: a.Weight,
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm conflicted about this transition in this PR and the constraints PR. The previous way copes with changes to the structs better and is more common approach in this file; but I like the explicitness here. Would like to know how you view it and whether we should change the rest of Copy functions?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it comes down to which kind of bug(s) do you want to track down in the future. The explicit assignment here implies you'll have a zero-value or a nil-value if you forget to add the new field.

OTOH using the de-reference copy trick creates a shallow copy - which if you add a pointer field and forget to deep copy it, it will now be shared and mutable by either owner.

I my experience NPE's and zero-values have been easier to track down than shared mutable state, which is why I kind of prefer these explicit copies.

Maybe the best thing would actually be to use something like https://pkg.go.dev/github.com/getlantern/deepcopy, or have Go add copy constructors to the language

@shoenig shoenig merged commit 992383a into main Jul 22, 2021
@shoenig shoenig deleted the b-no-affinity-intern branch July 22, 2021 14:09
@notnoop notnoop added this to the 1.1.3 milestone Jul 28, 2021
notnoop pushed a commit that referenced this pull request Jul 29, 2021
core: remove internalization of affinity strings
@github-actions
Copy link

I'm going to lock this pull request because it has been closed for 120 days ⏳. This helps our maintainers find and focus on the active contributions.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 20, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Affinity internalization may cause planning problems
4 participants