From 5cb8c3ec412afa5b9ca2e51d1eb3acc8fc66c556 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Tue, 17 Feb 2026 12:58:55 -0700 Subject: [PATCH 01/10] Add rapid to the matrix of database versions to test --- .evergreen/config.yml | 26 +++++++++++++++----------- .evergreen/config/axes.yml.erb | 4 ++++ .evergreen/config/standard.yml.erb | 19 +++++++++++-------- .mod/drivers-evergreen-tools | 2 +- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 6ec839c605..9097e3702f 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -777,6 +777,10 @@ axes: - id: "mongodb-version" display_name: MongoDB Version values: + - id: "rapid" + display_name: "Rapid" + variables: + MONGODB_VERSION: "rapid" - id: "8.0" display_name: "8.0" variables: @@ -1245,7 +1249,7 @@ buildvariants: - matrix_name: "single-lb" matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: load-balanced single-mongos: single-mongos os: ubuntu2204 @@ -1269,7 +1273,7 @@ buildvariants: - matrix_name: "single-mongos" matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: "sharded-cluster" single-mongos: single-mongos os: ubuntu2204 @@ -1281,7 +1285,7 @@ buildvariants: - matrix_name: CSOT matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: replica-set-single-node os: ubuntu2204 display_name: "CSOT - ${mongodb-version}" @@ -1304,7 +1308,7 @@ buildvariants: matrix_spec: retry-reads: no-retry-reads ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: ["standalone", "replica-set", "sharded-cluster"] os: ubuntu2204 display_name: "${mongodb-version} ${topology} ${retry-reads} ${ruby}" @@ -1316,7 +1320,7 @@ buildvariants: matrix_spec: retry-writes: no-retry-writes ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: [replica-set, sharded-cluster] os: ubuntu2204 display_name: "${mongodb-version} ${topology} ${retry-writes} ${ruby}" @@ -1406,7 +1410,7 @@ buildvariants: matrix_spec: auth-and-ssl: [ "auth-and-ssl", "noauth-and-nossl" ] ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: "replica-set" compressor: 'zlib' os: ubuntu2204 @@ -1419,7 +1423,7 @@ buildvariants: matrix_spec: auth-and-ssl: [ "auth-and-ssl", "noauth-and-nossl" ] ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: "replica-set" compressor: 'snappy' os: ubuntu2204 @@ -1436,7 +1440,7 @@ buildvariants: matrix_spec: auth-and-ssl: [ "auth-and-ssl", "noauth-and-nossl" ] ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: "replica-set" compressor: 'zstd' os: ubuntu2204 @@ -1448,7 +1452,7 @@ buildvariants: - matrix_name: activesupport-"ruby-4.0" matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: replica-set as: as os: ubuntu2204 @@ -1460,7 +1464,7 @@ buildvariants: - matrix_name: bson-"ruby-4.0" matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: replica-set bson: "*" os: ubuntu2204 @@ -1592,7 +1596,7 @@ buildvariants: auth-and-ssl: [ aws-regular, aws-assume-role, aws-web-identity ] ruby: "ruby-4.0" topology: standalone - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] os: ubuntu2204 display_name: "AWS ${auth-and-ssl} ${mongodb-version} ${ruby}" tags: ["pr"] diff --git a/.evergreen/config/axes.yml.erb b/.evergreen/config/axes.yml.erb index 66f1ec5f9b..5219f22e87 100644 --- a/.evergreen/config/axes.yml.erb +++ b/.evergreen/config/axes.yml.erb @@ -2,6 +2,10 @@ axes: - id: "mongodb-version" display_name: MongoDB Version values: + - id: "rapid" + display_name: "Rapid" + variables: + MONGODB_VERSION: "rapid" - id: "8.0" display_name: "8.0" variables: diff --git a/.evergreen/config/standard.yml.erb b/.evergreen/config/standard.yml.erb index 83c0d404e1..10041345c3 100644 --- a/.evergreen/config/standard.yml.erb +++ b/.evergreen/config/standard.yml.erb @@ -27,7 +27,10 @@ jrubies # The latest stable version of MongoDB - latest_stable_mdb = "8.0".inspect # so it gets quoted as a string + latest_stable_mdb_raw = "8.0" + latest_stable_mdb = latest_stable_mdb_raw.inspect # so it gets quoted as a string + + stable_and_rapid = [ latest_stable_mdb_raw, "rapid" ] recent_mdb = %w( 8.0 7.0 ) %> @@ -112,7 +115,7 @@ buildvariants: - matrix_name: "single-lb" matrix_spec: ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: load-balanced single-mongos: single-mongos os: ubuntu2204 @@ -136,7 +139,7 @@ buildvariants: - matrix_name: "single-mongos" matrix_spec: ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: "sharded-cluster" single-mongos: single-mongos os: ubuntu2204 @@ -148,7 +151,7 @@ buildvariants: - matrix_name: CSOT matrix_spec: ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: replica-set-single-node os: ubuntu2204 display_name: "CSOT - ${mongodb-version}" @@ -171,7 +174,7 @@ buildvariants: matrix_spec: retry-reads: no-retry-reads ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: <%= topologies %> os: ubuntu2204 display_name: "${mongodb-version} ${topology} ${retry-reads} ${ruby}" @@ -183,7 +186,7 @@ buildvariants: matrix_spec: retry-writes: no-retry-writes ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: [replica-set, sharded-cluster] os: ubuntu2204 display_name: "${mongodb-version} ${topology} ${retry-writes} ${ruby}" @@ -270,7 +273,7 @@ buildvariants: - name: "run-main-test-suite" <% [ - [latest_ruby, latest_stable_mdb, 'ubuntu2204'], + [latest_ruby, stable_and_rapid, 'ubuntu2204'], [supported_mri_ruby_2, '"6.0"', 'ubuntu2004'] ].each do |rubies, mdb, distro| %> @@ -399,7 +402,7 @@ buildvariants: auth-and-ssl: [ aws-regular, aws-assume-role, aws-web-identity ] ruby: <%= latest_ruby %> topology: standalone - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> os: ubuntu2204 display_name: "AWS ${auth-and-ssl} ${mongodb-version} ${ruby}" tags: ["pr"] diff --git a/.mod/drivers-evergreen-tools b/.mod/drivers-evergreen-tools index 9142b7055e..f3720c0b98 160000 --- a/.mod/drivers-evergreen-tools +++ b/.mod/drivers-evergreen-tools @@ -1 +1 @@ -Subproject commit 9142b7055ea5940e59ad41c4b069376f867031da +Subproject commit f3720c0b98fb14a8b452670f7cda5ef8080e7eaf From d91e130d8e3d21dfe8fe50a7d2ff7b45224348f9 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Tue, 17 Feb 2026 13:23:51 -0700 Subject: [PATCH 02/10] hard code the rapid version drivers-evergreen-tools is (for some reason) pulling 8.3.0-alpha when I ask for rapid... --- .evergreen/config.yml | 2 +- .evergreen/config/axes.yml.erb | 2 +- .mod/drivers-evergreen-tools | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 9097e3702f..a6dbfd6bf3 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -780,7 +780,7 @@ axes: - id: "rapid" display_name: "Rapid" variables: - MONGODB_VERSION: "rapid" + MONGODB_VERSION: "8.2" - id: "8.0" display_name: "8.0" variables: diff --git a/.evergreen/config/axes.yml.erb b/.evergreen/config/axes.yml.erb index 5219f22e87..c12c36677e 100644 --- a/.evergreen/config/axes.yml.erb +++ b/.evergreen/config/axes.yml.erb @@ -5,7 +5,7 @@ axes: - id: "rapid" display_name: "Rapid" variables: - MONGODB_VERSION: "rapid" + MONGODB_VERSION: "8.2" - id: "8.0" display_name: "8.0" variables: diff --git a/.mod/drivers-evergreen-tools b/.mod/drivers-evergreen-tools index f3720c0b98..9142b7055e 160000 --- a/.mod/drivers-evergreen-tools +++ b/.mod/drivers-evergreen-tools @@ -1 +1 @@ -Subproject commit f3720c0b98fb14a8b452670f7cda5ef8080e7eaf +Subproject commit 9142b7055ea5940e59ad41c4b069376f867031da From 12f60930f7fb3fb3e3ab86f121921566a9789015 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Tue, 17 Feb 2026 13:44:58 -0700 Subject: [PATCH 03/10] we need the newer drivers-evergreen-tools, after all --- .mod/drivers-evergreen-tools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mod/drivers-evergreen-tools b/.mod/drivers-evergreen-tools index 9142b7055e..f3720c0b98 160000 --- a/.mod/drivers-evergreen-tools +++ b/.mod/drivers-evergreen-tools @@ -1 +1 @@ -Subproject commit 9142b7055ea5940e59ad41c4b069376f867031da +Subproject commit f3720c0b98fb14a8b452670f7cda5ef8080e7eaf From f15de3b99b873bece8e9a3322c1f43c9cccb9eae Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Tue, 17 Feb 2026 15:09:47 -0700 Subject: [PATCH 04/10] make sure waitress is installed (for ocsp mocking) --- .evergreen/run-tests.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 27e02c3302..da94291800 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -61,6 +61,7 @@ prepare_server if test "$DOCKER_PRELOAD" != 1; then install_mlaunch_venv + pip3 install waitress fi # Make sure cmake is installed (in case we need to install the libmongocrypt From eb6611f54859673f466f4833370abe9c803fe485 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Thu, 19 Feb 2026 10:23:27 -0700 Subject: [PATCH 05/10] disable mongocryptd specs per SERVER-118428 --- .evergreen/config.yml | 6 ++++-- .evergreen/config/standard.yml.erb | 6 ++++-- spec/support/crypt.rb | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index a6dbfd6bf3..dc49f558c4 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -1539,12 +1539,12 @@ buildvariants: tasks: - name: "test-mlaunch" - - matrix_name: "fle above 4.4" + - matrix_name: "fle" matrix_spec: auth-and-ssl: "noauth-and-nossl" ruby: ["ruby-4.0", "ruby-3.4", "ruby-3.3", "ruby-3.2", "ruby-3.1"] topology: [replica-set, sharded-cluster] - mongodb-version: [ '6.0', '7.0', '8.0' ] + mongodb-version: [ '6.0', '7.0', '8.0', 'rapid' ] os: ubuntu2204 fle: helper display_name: "FLE: ${mongodb-version} ${topology} ${ruby}" @@ -1575,6 +1575,8 @@ buildvariants: # tasks: # - name: "test-fle" + # Runs specs against the latest server. This is not automatically run on PR's + # because we don't want to block PR's when the latest DB breaks something. - name: 'latest-server' activate: false display_name: 'Latest MongoDB Server' diff --git a/.evergreen/config/standard.yml.erb b/.evergreen/config/standard.yml.erb index 10041345c3..db844c82bd 100644 --- a/.evergreen/config/standard.yml.erb +++ b/.evergreen/config/standard.yml.erb @@ -345,12 +345,12 @@ buildvariants: - name: "test-mlaunch" <% end %> - - matrix_name: "fle above 4.4" + - matrix_name: "fle" matrix_spec: auth-and-ssl: "noauth-and-nossl" ruby: <%= supported_mri_rubies_3_ubuntu %> topology: [replica-set, sharded-cluster] - mongodb-version: [ '6.0', '7.0', '8.0' ] + mongodb-version: [ '6.0', '7.0', '8.0', 'rapid' ] os: ubuntu2204 fle: helper display_name: "FLE: ${mongodb-version} ${topology} ${ruby}" @@ -381,6 +381,8 @@ buildvariants: # tasks: # - name: "test-fle" + # Runs specs against the latest server. This is not automatically run on PR's + # because we don't want to block PR's when the latest DB breaks something. - name: 'latest-server' activate: false display_name: 'Latest MongoDB Server' diff --git a/spec/support/crypt.rb b/spec/support/crypt.rb index f6337eeb63..14b65720a1 100644 --- a/spec/support/crypt.rb +++ b/spec/support/crypt.rb @@ -23,6 +23,21 @@ module Crypt # For all FLE-related tests shared_context 'define shared FLE helpers' do + # SERVER-118428 -- mongocryptd rejects large messages + # DRIVERS-3382 -- once SERVER-118428 is fixed, remove these checks + before do + if extra_options[:mongocryptd_uri] + version = ClusterConfig.instance.server_version + bad_mongocryptd = case version + when /^8\.2/ then version >= '8.2.4' + when /^8\.0/ then version >= '8.0.18' + when /^7\.0/ then version >= '7.0.29' + else false + end + skip 'Bad mongocryptd version -- see DRIVERS-3382' if bad_mongocryptd + end + end + # 96-byte binary string, base64-encoded local master key let(:local_master_key_b64) do Crypt::LOCAL_MASTER_KEY_B64 From b7cdfa56c35f1761b106214142624c1cdd0e7242 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Thu, 19 Feb 2026 14:56:23 -0700 Subject: [PATCH 06/10] some 6.0 specs are broken by changes to mock kms server --- .../client_side_encryption/kms_tls_options_spec.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/spec/integration/client_side_encryption/kms_tls_options_spec.rb b/spec/integration/client_side_encryption/kms_tls_options_spec.rb index a36b1d745b..6b3ce3d0aa 100644 --- a/spec/integration/client_side_encryption/kms_tls_options_spec.rb +++ b/spec/integration/client_side_encryption/kms_tls_options_spec.rb @@ -389,7 +389,9 @@ end let(:should_raise_with_tls) do - true + # 6.0 mongocrypt expects a JSON-compatible error message from the KMS, but + # the mock KMS server returns an HTML error page. + ClusterConfig.instance.server_version >= '7.0' end it_behaves_like 'it respect KMS TLS options' @@ -410,7 +412,9 @@ end let(:should_raise_with_tls) do - true + # 6.0 mongocrypt expects a JSON-compatible error message from the KMS, but + # the mock KMS server returns an HTML error page. + ClusterConfig.instance.server_version >= '7.0' end it_behaves_like 'it respect KMS TLS options' From de398e6b3e280100a98a4377c5367e280f8a136f Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Thu, 19 Feb 2026 15:29:45 -0700 Subject: [PATCH 07/10] have to approach this with a narrower filter --- .../kms_tls_options_spec.rb | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/spec/integration/client_side_encryption/kms_tls_options_spec.rb b/spec/integration/client_side_encryption/kms_tls_options_spec.rb index 6b3ce3d0aa..8abb6e8ee5 100644 --- a/spec/integration/client_side_encryption/kms_tls_options_spec.rb +++ b/spec/integration/client_side_encryption/kms_tls_options_spec.rb @@ -18,6 +18,13 @@ ) end + # 6.0 mongocrypt expects a JSON-compatible error message from the KMS, but + # the mock KMS server returns an HTML error page. + let(:affected_by_mock_kms_server_change) do + (kms_provider == 'azure' || kms_provider == 'gcp') && + ClusterConfig.instance.server_version >= '7.0' + end + let(:client_encryption_no_client_cert) do Mongo::ClientEncryption.new( client, @@ -314,7 +321,7 @@ end it 'raises KmsError directly without wrapping CryptError' do - if should_raise_with_tls + if should_raise_with_tls && !affected_by_mock_kms_server_change begin client_encryption_with_tls.create_data_key( kms_provider, @@ -389,9 +396,7 @@ end let(:should_raise_with_tls) do - # 6.0 mongocrypt expects a JSON-compatible error message from the KMS, but - # the mock KMS server returns an HTML error page. - ClusterConfig.instance.server_version >= '7.0' + true end it_behaves_like 'it respect KMS TLS options' @@ -412,9 +417,7 @@ end let(:should_raise_with_tls) do - # 6.0 mongocrypt expects a JSON-compatible error message from the KMS, but - # the mock KMS server returns an HTML error page. - ClusterConfig.instance.server_version >= '7.0' + true end it_behaves_like 'it respect KMS TLS options' From acf07e0128a3462965fef6733713261227374fc5 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Thu, 19 Feb 2026 16:04:16 -0700 Subject: [PATCH 08/10] ugh, got the logic flipped --- spec/integration/client_side_encryption/kms_tls_options_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/integration/client_side_encryption/kms_tls_options_spec.rb b/spec/integration/client_side_encryption/kms_tls_options_spec.rb index 8abb6e8ee5..ff1c1f4878 100644 --- a/spec/integration/client_side_encryption/kms_tls_options_spec.rb +++ b/spec/integration/client_side_encryption/kms_tls_options_spec.rb @@ -22,7 +22,7 @@ # the mock KMS server returns an HTML error page. let(:affected_by_mock_kms_server_change) do (kms_provider == 'azure' || kms_provider == 'gcp') && - ClusterConfig.instance.server_version >= '7.0' + ClusterConfig.instance.server_version < '7.0' end let(:client_encryption_no_client_cert) do From 2f3b154c522582fe9fa2fff2c1aa0edfb04b0f2b Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Fri, 20 Feb 2026 10:01:29 -0700 Subject: [PATCH 09/10] rapid really does mean the latest minor release (even pre-releases) --- .evergreen/config.yml | 2 +- .evergreen/config/axes.yml.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index dc49f558c4..d4e48a29c0 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -780,7 +780,7 @@ axes: - id: "rapid" display_name: "Rapid" variables: - MONGODB_VERSION: "8.2" + MONGODB_VERSION: "rapid" - id: "8.0" display_name: "8.0" variables: diff --git a/.evergreen/config/axes.yml.erb b/.evergreen/config/axes.yml.erb index c12c36677e..5219f22e87 100644 --- a/.evergreen/config/axes.yml.erb +++ b/.evergreen/config/axes.yml.erb @@ -5,7 +5,7 @@ axes: - id: "rapid" display_name: "Rapid" variables: - MONGODB_VERSION: "8.2" + MONGODB_VERSION: "rapid" - id: "8.0" display_name: "8.0" variables: From fb56a03e489595510262cfa7de219bf11c0337df Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Mon, 23 Feb 2026 08:14:08 -0700 Subject: [PATCH 10/10] skip failing spec (caused by RUBY-3781) --- spec/spec_tests/data/sdam_unified/hello-network-error.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/spec_tests/data/sdam_unified/hello-network-error.yml b/spec/spec_tests/data/sdam_unified/hello-network-error.yml index cdb10909ff..3b5df7c4e8 100644 --- a/spec/spec_tests/data/sdam_unified/hello-network-error.yml +++ b/spec/spec_tests/data/sdam_unified/hello-network-error.yml @@ -104,6 +104,7 @@ tests: - _id: 2 - description: Network error on Monitor check + skipReason: "RUBY-3781: Ruby driver's legacy_write_with_retry causes this to fail" operations: - name: createEntities object: testRunner