We have a few columns in the ci_builds table with type varchar 255, but we don't have any model validations for them. We should add validations to match, but this is a breaking change for self-managed because there is no limit at the column level for new installs: #321685
status
stage
ref
type
target_url
description
This validation must be implemented under a feature flag called ci_builds_columns_size_validation.
@mbobin we should be able to release this behind a feature flag toggled off by default sooner and remove it in 16.0 as a breaking change what I don't know is if we can ship it a few milestones before that toggled on by default for new installs only vs. upgrades. @grzesiek may have some insights.
We can probably release this on GitLab.com sooner (as on GitLab.com it would not be a breaking change, since you can't store longer data anyways today), and then enable by default in 16.0, right?
@mbobin@shampton@carolinesimpson is this still something we think we can deliver with 16.0 for Self Managed users? If so we need to create a deprecation notice this week. Thanks!
@jheimbuck_gl I will defer to @mbobin as he has the most knowledge about an issues that we could run into with this. If he thinks it is fine to go forward with this, then I think we should do it.
thanks @mbobin yeah we would break even more of those than we do already today. Can we remove that from the validation for now? what tradeoffs in performance would we make if we do that?
@jheimbuck_gl we're not doing this for performance reasons since we can't have fields with length greater than 255 on .com. We're doing it for consistency, to have the same sizes everywhere so that we don't develop future features/optimizations with wrong assumptions.
We should remove name from the validation/deprecation notice because it will likely break new pipelines that use parallel:matrix with a a lot of variables since it's easy to go over the limit in that case and we don't have a good alternative for it: #362262 (closed)
This will allow us to decouple feature deployment from feature activation on GitLab.com and thus announce a more accurate time period when breaking changes go live.
We currently don't have the information if this feature can be deployed behind a feature flag. Please add that information (if there is a feature flag and how is it called) here.
@mbobin reading #321685, it sounds like ci_pipelines also has three divergent columns (ref, sha, and before_sha). Do those need ActiveRecord validations as well?
@hfyngvason for consistency, they should have, but the sha columns will not use more than 40 characters and the ref will be validated on ci_builds model. So for now we only need to validate the ref on ci_builds and after making sure that it doesn't cause any problems we can add it on the pipelines too.