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
Some exercise UUIDs are shared between tracks #6648
Comments
I'm for options 2 or 3. Feels like if we wait either for problems or for project-wide checks, we run the risk of forgetting about it. And then we'll just pile up more instances as time goes on. |
@iHiD @ErikSchierboom Some questions:
|
I'm not sure. It might not because of the way we're usually matching on either slug or via foreign keys (which use a different field)
Probably. I think it would mean a concerted effort where just before merging we update the guid in the database
Yeah, that would be a good idea |
OK. Note that the number of shared UUIDs has doubled in the time since I created this issue. All from Gleam. I've updated the table in the first post. |
Recall that
configlet lint
currently checks in track CI that every exercise UUID is:However, it does not produce an error if the UUID exists on another track. That can happen when somebody copy-pastes data from another track when adding an exercise, but forgets to change the UUID.
As of
2023-03-23T13:40:00Z
, there are 16 shared UUIDs. Each is shared by exactly two tracks.Ordering by track, then exercise:
config.json
beer-song
6573f168-d8fc-4ccf-a864-1a61f432fae1
hello-world
f458c48a-4a05-4809-9168-8edd55179349
darts
a68113f8-92be-40e0-a97f-eb4239303ef5
freelancer-rates
fee79e03-1496-476f-964f-e60632cb13dc
raindrops
4522b139-6f0c-4172-a4fa-6a6adef33a9e
series
4a084cb7-335d-41f1-8148-5d3abbce8ab0
pangram
a70503ba-f1f3-4583-9226-c3ada98e9500
circular-buffer
b62f8574-9bac-4b95-a76c-f13789ae2663
diamond
736a470f-412c-41fc-b92d-9bd59ef3bcce
protein-translation
612395a5-238e-4be0-8ce0-4ac66f57056e
rna-transcription
3a015501-58bf-427c-8c4c-2197321f4a34
word-count
0c7a2f06-1e53-4043-9e1a-386e90e945b4
sgf-parsing
0d6325d1-c0a3-456e-9a92-cea0559e82ed
binary-search
7c569e5d-bb00-44b8-8adc-34253790c19b
triangle
ed3ca73a-a0f0-46b8-8013-8b6d20758c8f
reverse-string
86d5a60a-fc44-443d-bc00-5c6265e736c4
Options:
A couple of years ago, we changed these duplicate UUIDs and these invalid UUIDs. When a UUID appeared on more than one track, we changed it on every track.
Note that even if
configlet lint
learns to check UUID uniqueness across all tracks, we cannot rely on it completely due to a possible race with our current repo architecture. We can still add a duplicate UUID if we, for example:foo
foo
That is,
configlet lint
will pass in each PR (and therefore not block merging) if its final run occurs before the other PR is merged. To address that, we'd need a cross-repo merge queue - not worth the complexity for this case alone. Hopefully at least oneconfiglet lint
check onmain
is guaranteed to fail, even if both PRs are merged at the same moment.The text was updated successfully, but these errors were encountered: