Skip to content

Commit 929dd2d

Browse files
(DOCSP-28364): 7.0 downgrade policy changes (#3120)
* WIP * WIP * re-add 4.2 fcv for 4.4 deployments * update setFCV page * re-org * minimalism * formatting * minimalism * typos * typo * add backward-incompatible features * add more context to release notes * formatting fix * wording * fix link location * fix backwards-incompatible feature lead-in * formatting
1 parent a722e4d commit 929dd2d

File tree

5 files changed

+203
-38
lines changed

5 files changed

+203
-38
lines changed

snooty.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ windows-sha256 = "C777DF7816BB8C9A760FDEA782113949408B6F39D72BE29A2551FA51E2FE04
247247
source-available = ":github:`source available and free to use <mongodb/mongo>`"
248248
pcre-abbr = ":abbr:`PCRE (Perl Compatible Regular Expressions)`"
249249
pcre = "Perl Compatible Regular Expressions"
250+
fcv = ":abbr:`fCV (feature compatibility version)`"
250251
fts = "Atlas Search"
251252
# In Use Encryption Constants
252253
csfle = "Client-Side Field Level Encryption"

source/includes/list-table-featureCompatibilityVersion-defaults.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55
* - Deployments
66
- ``featureCompatibilityVersion``
77

8+
* - For new 7.0 deployments
9+
- ``"7.0"``
10+
11+
* - For 7.0 deployments :ref:`upgraded from 6.0 <7.0-upgrade>`
12+
13+
- ``"6.0"`` until you :dbcommand:`setFeatureCompatibilityVersion` to ``"7.0"``.
14+
815
* - For new 6.0 deployments
916
- ``"6.0"``
1017

source/reference/command/setFeatureCompatibilityVersion.txt

Lines changed: 139 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,31 @@ Definition
3434
Syntax
3535
------
3636

37+
.. versionchanged:: 7.0
38+
3739
The command has the following syntax:
3840

3941
.. code-block:: javascript
4042

4143
db.adminCommand(
4244
{
4345
setFeatureCompatibilityVersion: <version>,
46+
confirm: true
4447
writeConcern: { wtimeout: <timeout> }
4548
}
4649
)
4750

4851
Command Fields
4952
--------------
5053

54+
The ``setFeatureCompatibilityVersion`` command takes the following
55+
fields:
56+
57+
setFeatureCompatibilityVersion
58+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59+
60+
*Required*
61+
5162
The possible values for ``version`` are:
5263

5364
.. list-table::
@@ -57,8 +68,14 @@ The possible values for ``version`` are:
5768
* - Version
5869
- Description
5970

71+
* - ``"7.0"``
72+
- *Available on MongoDB 7.0 Deployments*
73+
74+
Enables the :ref:`7.0 features that persist data incompatible
75+
with MongoDB 6.0 <7.0-downgrade-considerations>`.
76+
6077
* - ``"6.0"``
61-
- *Available on MongoDB 6.0 Deployments*
78+
- *Available on MongoDB 6.0 and 7.0 Deployments*
6279

6380
Enables the :ref:`6.0 features that persist data incompatible
6481
with MongoDB 5.0 <6.0-downgrade-considerations>`.
@@ -76,17 +93,33 @@ The possible values for ``version`` are:
7693
with MongoDB 4.2 <4.4-compatibility-enabled>`.
7794

7895
* - ``"4.2"``
79-
- *Available on MongoDB 4.2 and 4.4 Deployments*
96+
- *Available on MongoDB 4.4 Deployments*
97+
98+
Disables the :ref:`4.4 features that persist data incompatible
99+
with MongoDB 4.2 <4.4-compatibility-enabled>`.
100+
101+
confirm
102+
~~~~~~~
80103

81-
Enables the :ref:`4.2 features that persist data incompatible
82-
with MongoDB 4.0 <4.2-compatibility-enabled>`.
104+
*Required*
83105

84-
- If set on MongoDB 4.4 deployments,
85-
Disables the :ref:`4.4 features that persist data
86-
incompatible with MongoDB 4.2
87-
<4.4-compatibility-enabled>`.
106+
.. versionadded:: 7.0
88107

89-
The optional ``writeConcern`` specifies the write concern
108+
Set to ``true`` to confirm the feature compatibility change and allow
109+
the operation to proceed.
110+
111+
If you omit the ``confirm`` parameter or set ``confirm`` to a value
112+
other than ``true``, the command fails and returns a warning about
113+
modifying the feature compatibility version. The warning states that
114+
after you upgrade or downgrade your cluster's {+fcv+}, you cannot
115+
downgrade the binary version without support assistance.
116+
117+
writeConcern
118+
~~~~~~~~~~~~
119+
120+
*Optional*
121+
122+
The ``writeConcern`` specifies the write concern
90123
:ref:`wc-wtimeout` value in milliseconds:
91124

92125
- The time period that the :term:`primary` waits for
@@ -105,6 +138,40 @@ The optional ``writeConcern`` specifies the write concern
105138
Behavior
106139
--------
107140

141+
Downgrade with Backward-Incompatible Data
142+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
143+
144+
If you try to downgrade the {+fcv+} of a cluster that contains
145+
incompatible data in the downloaded version, you receive a
146+
``CannotDowngrade`` error. When this error occurs, the cluster remains
147+
in the transitionary ``downgrading`` state.
148+
149+
To move the cluster out of the ``downgrading`` state, either:
150+
151+
- Modify your cluster data to remove backwards-incompatible features,
152+
then re-run the ``setFeatureCompatibilityVersion`` command with the
153+
downgraded version to set the {+fcv+} to the downgraded version.
154+
155+
- Run the ``setFeatureCompatibilityVersion`` command with the original
156+
upgraded version to set the {+fcv+} back to the original version.
157+
158+
.. important::
159+
160+
Setting the {+fcv+} to the original version stops the downgrade
161+
procedure and changes the {+fcv+} back to the upgraded version.
162+
This procedure does not reset the cluster back to the state before
163+
the {+fcv+} downgrade began.
164+
165+
Downgrade Policy Changes in MongoDB 7.0
166+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167+
168+
Starting in MongoDB 7.0, you cannot downgrade your deployment's {+fcv+}
169+
to or from a :ref:`rapid release <rapid-releases>` version of MongoDB.
170+
171+
If you upgrade or downgrade your deployment's {+fcv+}, you cannot
172+
downgrade your deployment's binary version without assistance from
173+
support.
174+
108175
Conflicts with Background Operations
109176
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
110177

@@ -167,11 +234,12 @@ instance, run the :dbcommand:`getParameter` command on a
167234

168235
.. code-block:: javascript
169236

170-
db.adminCommand( {
171-
getParameter: 1,
172-
featureCompatibilityVersion: 1
173-
}
174-
)
237+
db.adminCommand(
238+
{
239+
getParameter: 1,
240+
featureCompatibilityVersion: 1
241+
}
242+
)
175243

176244
The output resembles:
177245

@@ -200,6 +268,63 @@ The output resembles:
200268

201269
.. _set-fcv:
202270

271+
Set Feature Compatibility Version on MongoDB 7.0 Deployments
272+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
273+
274+
Enable 7.0 Backwards Incompatible Features
275+
``````````````````````````````````````````
276+
277+
To enable the :ref:`7.0 features that persist data incompatible with
278+
MongoDB 6.0 <7.0-downgrade-incompatible>`, set the feature compatibility
279+
to ``"7.0"`` on the MongoDB 7.0 deployment:
280+
281+
.. note::
282+
283+
Run the :dbcommand:`setFeatureCompatibilityVersion` command against
284+
the ``admin`` database.
285+
286+
.. include:: /includes/list-run-command-targets.rst
287+
288+
.. code-block:: javascript
289+
290+
db.adminCommand(
291+
{
292+
setFeatureCompatibilityVersion: "7.0",
293+
confirm: true
294+
}
295+
)
296+
297+
Disable 7.0 Backwards Incompatible Features
298+
```````````````````````````````````````````
299+
300+
To disable the :ref:`7.0 features that persist data incompatible with
301+
MongoDB 6.0 <7.0-downgrade-incompatible>`, set the feature compatibility
302+
to ``"6.0"`` on the MongoDB 7.0 deployment:
303+
304+
.. note::
305+
306+
Run the :dbcommand:`setFeatureCompatibilityVersion` command against
307+
the ``admin`` database.
308+
309+
.. include:: /includes/list-run-command-targets.rst
310+
311+
- ``"6.0"`` featureCompatibilityVersion is supported on MongoDB
312+
6.0 and MongoDB 7.0 deployments only.
313+
314+
.. code-block:: javascript
315+
316+
db.adminCommand(
317+
{
318+
setFeatureCompatibilityVersion: "6.0",
319+
confirm: true
320+
}
321+
)
322+
323+
If run as part of the downgrade process from MongoDB 7.0 to MongoDB
324+
6.0, you must also remove all persisted features that are
325+
:ref:`incompatible <7.0-downgrade-incompatible>` with 6.0. See the
326+
appropriate downgrade procedures.
327+
203328
Set Feature Compatibility Version on MongoDB 6.0 Deployments
204329
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
205330

@@ -329,9 +454,6 @@ to ``"4.2"`` on the MongoDB 4.4 deployment:
329454

330455
.. include:: /includes/list-run-command-targets.rst
331456

332-
- ``"4.2"`` featureCompatibilityVersion is supported on MongoDB
333-
4.2 and MongoDB 4.4 deployments only.
334-
335457
.. code-block:: javascript
336458

337459
db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )
@@ -341,27 +463,6 @@ If run as part of the downgrade process from MongoDB 4.4 to MongoDB
341463
:ref:`incompatible <4.4-compatibility-enabled>` with 4.2. See the
342464
appropriate downgrade procedures.
343465

344-
Set Feature Compatibility Version on MongoDB 4.2 Deployments
345-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
346-
347-
Enable 4.2 Backwards Incompatible Features
348-
``````````````````````````````````````````
349-
350-
To enable the :ref:`4.2 features that persist data incompatible with
351-
MongoDB 4.0 <4.2-compatibility-enabled>`, set the feature compatibility
352-
to ``"4.2"`` on the MongoDB 4.2 deployment:
353-
354-
.. note::
355-
356-
Run the :dbcommand:`setFeatureCompatibilityVersion` command against
357-
the ``admin`` database.
358-
359-
.. include:: /includes/list-run-command-targets.rst
360-
361-
.. code-block:: javascript
362-
363-
db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )
364-
365466
Set Write Concern Timeout
366467
~~~~~~~~~~~~~~~~~~~~~~~~~
367468

source/reference/versioning.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ for MongoDB Atlas and on-premises deployments.
4040
- ``5.0``
4141
- ``6.0``
4242

43+
.. _rapid-releases:
44+
4345
Rapid Releases
4446
--------------
4547

source/release-notes/7.0.txt

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,57 @@ OpenSSL and FIPS Support
9191
.. include:: /includes/ssl-and-fips-support.rst
9292

9393
For details, see :ref:`transport-encryption`.
94+
95+
.. _7.0-upgrade:
96+
97+
Upgrade Procedures
98+
------------------
99+
100+
.. _7.0-downgrade-considerations:
101+
102+
Downgrade Considerations
103+
------------------------
104+
105+
Downgrade Policy Changes
106+
~~~~~~~~~~~~~~~~~~~~~~~~
107+
108+
Starting in MongoDB 7.0:
109+
110+
- You cannot downgrade your deployment's {+fcv+} to or from a
111+
:ref:`rapid release <rapid-releases>` version of MongoDB.
112+
113+
- The :dbcommand:`setFeatureCompatibilityVersion` command requires an
114+
additional parameter, ``confirm``, which must be set to ``true`` to
115+
upgrade or downgrade {+fcv+}.
116+
117+
- If you upgrade or downgrade your deployment's {+fcv+}, you cannot
118+
downgrade your deployment's binary version without assistance from
119+
support.
120+
121+
.. |version| replace:: 7.0
122+
123+
.. _7.0-downgrade-incompatible:
124+
125+
Backward-Incompatible Features
126+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127+
128+
The following 7.0 features are not compatible with earlier versions of
129+
MongoDB. To downgrade from MongoDB 7.0 to an earlier version, you must
130+
remove data that uses any of the following features:
131+
132+
- Config shards
133+
134+
- Secondary :ref:`TTL indexes <index-feature-ttl>` with :ref:`partial
135+
filters <index-type-partial>` on :ref:`time-series collections
136+
<manual-timeseries-collection>`
137+
138+
- Time series collections with custom bucketing parameters
139+
140+
- Collections with ``encryptedFields`` with :ref:`range indexes
141+
<sharding-ranged>`
142+
143+
- :ref:`Capped collections <manual-capped-collection>` with a size that
144+
is not a multiple of 256 bytes
145+
146+
- Config servers that have collections with
147+
``changeStreamPreAndPostImages`` enabled

0 commit comments

Comments
 (0)