Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
24d29100
Commit
24d29100
authored
Jul 15, 2021
by
Michael Kozono
Committed by
Marcia Ramos
Jul 15, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clarify feature flags are only a tool for backwards compatibility
parent
2f3f8240
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
6 deletions
+18
-6
doc/development/multi_version_compatibility.md
doc/development/multi_version_compatibility.md
+18
-6
No files found.
doc/development/multi_version_compatibility.md
View file @
24d29100
...
...
@@ -115,12 +115,24 @@ For major or minor version updates of Rails or Puma:
### Feature flags
One way to handle this is to use a feature flag that is disabled by
default. The feature flag can be enabled when the deployment is in a
consistent state. However, this method of synchronization
**
does not
guarantee
**
that customers with on-premise instances can
[
update with
zero downtime
](
https://docs.gitlab.com/omnibus/update/#zero-downtime-updates
)
because point releases bundle many changes together.
[
Feature flags
](
feature_flags/index.md
)
are a tool, not a strategy, for handling backward compatibility problems.
For example, it is safe to add a new feature with frontend and API changes, if both
frontend and API changes are disabled by default. This can be done with multiple
merge requests, merged in any order. After all the changes are deployed to
GitLab.com, the feature can be enabled in ChatOps and validated on GitLab.com.
**However, it is not necessarily safe to enable the feature by default.**
If the
feature flag is removed, or the default is flipped to enabled, in the same release
where the code was merged, then customers performing
[
zero-downtime updates
](
https://docs.gitlab.com/omnibus/update/#zero-downtime-updates
)
will end up running the new frontend code against the previous release's API.
If you're not sure whether it's safe to enable all the changes at once, then one
option is to enable the API in the
**current**
release and enable the frontend
change in the
**next**
release. This is an example of the
[
Expand and contract pattern
](
#expand-and-contract-pattern
)
.
Or you may be able to avoid delaying by a release by modifying the frontend to
[
degrade gracefully
](
#graceful-degradation
)
against the previous release's API.
### Graceful degradation
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment