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

fix(reset): Improve cycle detector #709

Merged
merged 2 commits into from
Nov 7, 2024
Merged

Conversation

idsulik
Copy link
Contributor

@idsulik idsulik commented Nov 6, 2024

Improved the cycle detector and added one more test case.

docker/compose#12247 (comment)

Signed-off-by: Suleiman Dibirov <idsulik@gmail.com>
@idsulik idsulik requested a review from ndeloof as a code owner November 6, 2024 15:07
Signed-off-by: Suleiman Dibirov <idsulik@gmail.com>
// areInDifferentServices checks if two paths are in different service definitions
func areInDifferentServices(path1, path2 string) bool {
// Split paths into components
parts1 := strings.Split(path1, ".")
Copy link
Collaborator

Choose a reason for hiding this comment

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

nit: could use path.Parts() if you don't convert it to a string

Copy link
Contributor Author

Choose a reason for hiding this comment

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

the function accepts strings and the field also has a list of strings visitedNodes map[*yaml.Node][]string, do you suggest to use path everywhere? or to convert the strings inside the func into paths and use Parts()? it looks like overhead, isn't it?

Copy link
Collaborator

Choose a reason for hiding this comment

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

some overhead indeed, but my point is that Path abstraction allows to ignore "implementation details" like the dot notation and [] or * patterns. I had in mind at some point we might want to use an alternate implementation vs string as we actually have to split this string many times during parsing.
From an encapsulation point of view, I'd prefer we add more utility func to Path to support required submatching.
ANYWAY I'm fine we merge this PR as a quick fix for this issue, and revisit this later

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ndeloof agree, that sounds reasonable.

Copy link
Collaborator

@glours glours left a comment

Choose a reason for hiding this comment

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

Let's do a follow up PR for the improvements

@glours glours merged commit b6ac6be into compose-spec:main Nov 7, 2024
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants