mongo 2.17.1 → 2.17.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a38f748fe8350d12ecfd23a30e794b65addcfbf8f5303504f5f85999e2c2b0d
4
- data.tar.gz: 876f431a9bfc558ecad0006a32b6ed90b6a94d05ac553a52fbc8b5d3b2b80a55
3
+ metadata.gz: dcc9a0fe9a28483f4237193871e81741d79878d2620a1620285ace2ab1cc84e9
4
+ data.tar.gz: 73692e39fb1d28041c38086571874cc285454c14425f666fbd242924fd5cac5f
5
5
  SHA512:
6
- metadata.gz: 256181a9c42fee1b029c899ab56a1a1f5b5283d4071913fc5777ad185f5349a00dc1fa36ac60b9b203a15f1d0857511c551f417f78864a04899e973e8da14b96
7
- data.tar.gz: 1272cc35779781fe390276007c831e653b64087e1f34b0459e12d8dfea7099dd39be4e06cef347e36fa7222064ba2f267a5be4a48120d6017f4424876123195b
6
+ metadata.gz: be915ceb9516a15b7f1317e43a20e578758f2b4c6da718ebcaa20b5ec4deedafe1d4ae0354875a89a0e2ca48c40c40ef76206cd6aa7c61e78d77876d780f9c5a
7
+ data.tar.gz: 1d50c87d9072259331b5b28076c2527bdce00425bc2965641aaf13e5d1238db5ffe17f5bc398c6eb944e5487acf99eb037d25fb359eea6871a1082b0f0ca8a66
checksums.yaml.gz.sig CHANGED
Binary file
@@ -70,7 +70,7 @@ module Mongo
70
70
  # If a query with a limit is performed, the query cache will
71
71
  # re-use results from an earlier query with the same or larger
72
72
  # limit, and then impose the lower limit during iteration.
73
- limit_for_cached_query = respond_to?(:limit) ? limit : nil
73
+ limit_for_cached_query = respond_to?(:limit) ? QueryCache.normalized_limit(limit) : nil
74
74
  end
75
75
 
76
76
  if block_given?
@@ -170,6 +170,7 @@ module Mongo
170
170
  max_time_ms: options[:max_time_ms],
171
171
  max_value: options[:max_value],
172
172
  min_value: options[:min_value],
173
+ no_cursor_timeout: options[:no_cursor_timeout],
173
174
  return_key: options[:return_key],
174
175
  show_disk_loc: options[:show_disk_loc],
175
176
  comment: options[:comment],
@@ -179,7 +179,8 @@ module Mongo
179
179
  #
180
180
  # @api private
181
181
  def get(**opts)
182
- limit = opts[:limit]
182
+ limit = normalized_limit(opts[:limit])
183
+
183
184
  _namespace_key = namespace_key(**opts)
184
185
  _cache_key = cache_key(**opts)
185
186
 
@@ -189,7 +190,7 @@ module Mongo
189
190
  caching_cursor = namespace_hash[_cache_key]
190
191
  return nil unless caching_cursor
191
192
 
192
- caching_cursor_limit = caching_cursor.view.limit
193
+ caching_cursor_limit = normalized_limit(caching_cursor.view.limit)
193
194
 
194
195
  # There are two scenarios in which a caching cursor could fulfill the
195
196
  # query:
@@ -199,6 +200,7 @@ module Mongo
199
200
  #
200
201
  # Otherwise, return nil because the stored cursor will not satisfy
201
202
  # the query.
203
+
202
204
  if limit && (caching_cursor_limit.nil? || caching_cursor_limit >= limit)
203
205
  caching_cursor
204
206
  elsif limit.nil? && caching_cursor_limit.nil?
@@ -208,6 +210,14 @@ module Mongo
208
210
  end
209
211
  end
210
212
 
213
+ def normalized_limit(limit)
214
+ return nil unless limit
215
+ # For the purposes of caching, a limit of 0 means no limit, as mongo treats it as such.
216
+ return nil if limit == 0
217
+ # For the purposes of caching, a negative limit is the same as as a positive limit.
218
+ limit.abs
219
+ end
220
+
211
221
  private
212
222
 
213
223
  def cache_key(**opts)
@@ -227,15 +227,21 @@ module Mongo
227
227
  # @api private
228
228
  def check_document
229
229
  server_api = @app_metadata.server_api || options[:server_api]
230
- if hello_ok? || server_api
231
- doc = HELLO_DOC
230
+ doc = if hello_ok? || server_api
231
+ _doc = HELLO_DOC
232
232
  if server_api
233
- doc = doc.merge(Utils.transform_server_api(server_api))
233
+ _doc = _doc.merge(Utils.transform_server_api(server_api))
234
234
  end
235
- doc
235
+ _doc
236
236
  else
237
237
  LEGACY_HELLO_DOC
238
238
  end
239
+ # compressors must be set to maintain correct compression status
240
+ # in the server description. See RUBY-2427
241
+ if compressors = options[:compressors]
242
+ doc = doc.merge(compression: compressors)
243
+ end
244
+ doc
239
245
  end
240
246
 
241
247
  private
data/lib/mongo/version.rb CHANGED
@@ -20,5 +20,5 @@ module Mongo
20
20
  # The current version of the driver.
21
21
  #
22
22
  # @since 2.0.0
23
- VERSION = '2.17.1'.freeze
23
+ VERSION = '2.17.2'.freeze
24
24
  end
@@ -345,18 +345,69 @@ describe 'QueryCache' do
345
345
 
346
346
  it 'uses the cache' do
347
347
  results_limit_5 = authorized_collection.find.limit(5).to_a
348
+ results_limit_negative_5 = authorized_collection.find.limit(-5).to_a
348
349
  results_limit_3 = authorized_collection.find.limit(3).to_a
350
+ results_limit_negative_3 = authorized_collection.find.limit(-3).to_a
349
351
  results_no_limit = authorized_collection.find.to_a
352
+ results_limit_0 = authorized_collection.find.limit(0).to_a
353
+
354
+
355
+ expect(results_limit_5.length).to eq(5)
356
+ expect(results_limit_5.map { |r| r["test"] }).to eq([0, 1, 2, 3, 4])
357
+
358
+ expect(results_limit_negative_5.length).to eq(5)
359
+ expect(results_limit_negative_5.map { |r| r["test"] }).to eq([0, 1, 2, 3, 4])
360
+
361
+ expect(results_limit_3.length).to eq(3)
362
+ expect(results_limit_3.map { |r| r["test"] }).to eq([0, 1, 2])
363
+
364
+ expect(results_limit_negative_3.length).to eq(3)
365
+ expect(results_limit_negative_3.map { |r| r["test"] }).to eq([0, 1, 2])
366
+
367
+ expect(results_no_limit.length).to eq(10)
368
+ expect(results_no_limit.map { |r| r["test"] }).to eq([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
369
+
370
+ expect(results_limit_0.length).to eq(10)
371
+ expect(results_limit_0.map { |r| r["test"] }).to eq([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
372
+
373
+ expect(events.length).to eq(1)
374
+ end
375
+ end
376
+
377
+ context 'when the first query has a 0 limit' do
378
+ before do
379
+ authorized_collection.find.limit(0).to_a
380
+ end
381
+
382
+ it 'uses the cache' do
383
+ results_limit_5 = authorized_collection.find.limit(5).to_a
384
+ results_limit_negative_5 = authorized_collection.find.limit(-5).to_a
385
+ results_limit_3 = authorized_collection.find.limit(3).to_a
386
+ results_limit_negative_3 = authorized_collection.find.limit(-3).to_a
387
+ results_no_limit = authorized_collection.find.to_a
388
+ results_limit_0 = authorized_collection.find.limit(0).to_a
350
389
 
351
390
  expect(results_limit_5.length).to eq(5)
352
391
  expect(results_limit_5.map { |r| r["test"] }).to eq([0, 1, 2, 3, 4])
353
392
 
393
+ expect(results_limit_negative_5.length).to eq(5)
394
+ expect(results_limit_negative_5.map { |r| r["test"] }).to eq([0, 1, 2, 3, 4])
395
+
396
+
354
397
  expect(results_limit_3.length).to eq(3)
355
398
  expect(results_limit_3.map { |r| r["test"] }).to eq([0, 1, 2])
356
399
 
400
+ expect(results_limit_negative_3.length).to eq(3)
401
+ expect(results_limit_negative_3.map { |r| r["test"] }).to eq([0, 1, 2])
402
+
403
+
357
404
  expect(results_no_limit.length).to eq(10)
358
405
  expect(results_no_limit.map { |r| r["test"] }).to eq([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
359
406
 
407
+
408
+ expect(results_limit_0.length).to eq(10)
409
+ expect(results_limit_0.map { |r| r["test"] }).to eq([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
410
+
360
411
  expect(events.length).to eq(1)
361
412
  end
362
413
  end
@@ -391,6 +442,21 @@ describe 'QueryCache' do
391
442
  end
392
443
  end
393
444
 
445
+ context 'and two queries are performed with a larger negative limit' do
446
+ it 'uses the query cache for the third query' do
447
+ results1 = authorized_collection.find.limit(-3).to_a
448
+ results2 = authorized_collection.find.limit(-3).to_a
449
+
450
+ expect(results1.length).to eq(3)
451
+ expect(results1.map { |r| r["test"] }).to eq([0, 1, 2])
452
+
453
+ expect(results2.length).to eq(3)
454
+ expect(results2.map { |r| r["test"] }).to eq([0, 1, 2])
455
+
456
+ expect(events.length).to eq(2)
457
+ end
458
+ end
459
+
394
460
  context 'and the second query has a smaller limit' do
395
461
  let(:results) { authorized_collection.find.limit(1).to_a }
396
462
 
@@ -401,6 +467,99 @@ describe 'QueryCache' do
401
467
  end
402
468
  end
403
469
 
470
+ context 'and the second query has a smaller negative limit' do
471
+ let(:results) { authorized_collection.find.limit(-1).to_a }
472
+
473
+ it 'uses the cached query' do
474
+ expect(results.count).to eq(1)
475
+ expect(results.first["test"]).to eq(0)
476
+ expect(events.length).to eq(1)
477
+ end
478
+ end
479
+
480
+ context 'and the second query has no limit' do
481
+ it 'queries again' do
482
+ expect(authorized_collection.find.to_a.count).to eq(10)
483
+ expect(events.length).to eq(2)
484
+ end
485
+ end
486
+ end
487
+
488
+ context 'when the first query has a negative limit' do
489
+ before do
490
+ authorized_collection.find.limit(-2).to_a
491
+ end
492
+
493
+ context 'and the second query has a larger limit' do
494
+ let(:results) { authorized_collection.find.limit(3).to_a }
495
+
496
+ it 'queries again' do
497
+ expect(results.length).to eq(3)
498
+ expect(results.map { |result| result["test"] }).to eq([0, 1, 2])
499
+ expect(events.length).to eq(2)
500
+ end
501
+ end
502
+
503
+ context 'and the second query has a larger negative limit' do
504
+ let(:results) { authorized_collection.find.limit(-3).to_a }
505
+
506
+ it 'queries again' do
507
+ expect(results.length).to eq(3)
508
+ expect(results.map { |result| result["test"] }).to eq([0, 1, 2])
509
+ expect(events.length).to eq(2)
510
+ end
511
+ end
512
+
513
+ context 'and two queries are performed with a larger limit' do
514
+ it 'uses the query cache for the third query' do
515
+ results1 = authorized_collection.find.limit(3).to_a
516
+ results2 = authorized_collection.find.limit(3).to_a
517
+
518
+ expect(results1.length).to eq(3)
519
+ expect(results1.map { |r| r["test"] }).to eq([0, 1, 2])
520
+
521
+ expect(results2.length).to eq(3)
522
+ expect(results2.map { |r| r["test"] }).to eq([0, 1, 2])
523
+
524
+ expect(events.length).to eq(2)
525
+ end
526
+ end
527
+
528
+ context 'and two queries are performed with a larger negative limit' do
529
+ it 'uses the query cache for the third query' do
530
+ results1 = authorized_collection.find.limit(-3).to_a
531
+ results2 = authorized_collection.find.limit(-3).to_a
532
+
533
+ expect(results1.length).to eq(3)
534
+ expect(results1.map { |r| r["test"] }).to eq([0, 1, 2])
535
+
536
+ expect(results2.length).to eq(3)
537
+ expect(results2.map { |r| r["test"] }).to eq([0, 1, 2])
538
+
539
+ expect(events.length).to eq(2)
540
+ end
541
+ end
542
+
543
+ context 'and the second query has a smaller limit' do
544
+ let(:results) { authorized_collection.find.limit(1).to_a }
545
+
546
+ it 'uses the cached query' do
547
+ expect(results.count).to eq(1)
548
+ expect(results.first["test"]).to eq(0)
549
+ expect(events.length).to eq(1)
550
+ end
551
+ end
552
+
553
+ context 'and the second query has a smaller negative limit' do
554
+ let(:results) { authorized_collection.find.limit(-1).to_a }
555
+
556
+ it 'uses the cached query' do
557
+ expect(results.count).to eq(1)
558
+ expect(results.first["test"]).to eq(0)
559
+ expect(events.length).to eq(1)
560
+ end
561
+ end
562
+
404
563
  context 'and the second query has no limit' do
405
564
  it 'queries again' do
406
565
  expect(authorized_collection.find.to_a.count).to eq(10)
@@ -135,4 +135,44 @@ describe 'SDAM events' do
135
135
  end
136
136
  end
137
137
  end
138
+
139
+ describe 'server description changed' do
140
+ require_topology :single
141
+
142
+ let(:sdam_proc) do
143
+ Proc.new do |client|
144
+ client.subscribe(Mongo::Monitoring::SERVER_DESCRIPTION_CHANGED, subscriber)
145
+ end
146
+ end
147
+
148
+ let(:client) do
149
+ new_local_client(SpecConfig.instance.addresses,
150
+ # Heartbeat interval is bound by 500 ms
151
+ SpecConfig.instance.test_options.merge(client_options).merge(
152
+ heartbeat_frequency: 0.5,
153
+ sdam_proc: sdam_proc,
154
+ ),
155
+ )
156
+ end
157
+
158
+ let(:client_options) do
159
+ {}
160
+ end
161
+
162
+ it 'is not published when there are no changes in server state' do
163
+ client
164
+ sleep 6
165
+ client.close
166
+
167
+ events = subscriber.select_succeeded_events(Mongo::Monitoring::Event::ServerDescriptionChanged)
168
+
169
+ # In 6 seconds we should have about 10 or 12 heartbeats.
170
+ # We expect 1 or 2 description changes:
171
+ # The first one from unknown to known,
172
+ # The second one because server changes the fields it returns based on
173
+ # driver server check payload (e.g. ismaster/isWritablePrimary).
174
+ events.length.should >= 1
175
+ events.length.should <= 2
176
+ end
177
+ end
138
178
  end
@@ -1186,6 +1186,62 @@ describe Mongo::Collection::View::Readable do
1186
1186
  it 'returns a new View' do
1187
1187
  expect(new_view).not_to be(view)
1188
1188
  end
1189
+
1190
+ context 'when sending to server' do
1191
+ let(:subscriber) { Mrss::EventSubscriber.new }
1192
+
1193
+ before do
1194
+ authorized_collection.client.subscribe(Mongo::Monitoring::COMMAND, subscriber)
1195
+ end
1196
+
1197
+ let(:event) do
1198
+ subscriber.single_command_started_event('find')
1199
+ end
1200
+
1201
+ it 'is sent to server' do
1202
+ new_view.to_a
1203
+ event.command.slice('noCursorTimeout').should == {'noCursorTimeout' => true}
1204
+ end
1205
+ end
1206
+
1207
+ context 'integration test' do
1208
+ require_topology :single
1209
+
1210
+ # The number of open cursors with the option set to prevent timeout.
1211
+ def current_no_timeout_count
1212
+ root_authorized_client
1213
+ .command(serverStatus: 1)
1214
+ .documents
1215
+ .first
1216
+ .fetch('metrics')
1217
+ .fetch('cursor')
1218
+ .fetch('open')
1219
+ .fetch('noTimeout')
1220
+ end
1221
+
1222
+ it 'is applied on the server' do
1223
+ # Initialize collection with two documents.
1224
+ new_view.collection.insert_many([{}, {}])
1225
+
1226
+ expect(new_view.count).to be == 2
1227
+
1228
+ # Initial "noTimeout" count should be zero.
1229
+ states = [current_no_timeout_count]
1230
+
1231
+ # The "noTimeout" count should be one while iterating.
1232
+ new_view.batch_size(1).each { states << current_no_timeout_count }
1233
+
1234
+ # Final "noTimeout" count should be back to zero.
1235
+ states << current_no_timeout_count
1236
+
1237
+ # This succeeds on:
1238
+ # commit aab776ebdfb15ddb9765039f7300e15796de0c5c
1239
+ #
1240
+ # This starts failing with [0, 0, 0, 0] from:
1241
+ # commit 2d9f0217ec904a1952a1ada2136502eefbca562e
1242
+ expect(states).to be == [0, 1, 1, 0]
1243
+ end
1244
+ end
1189
1245
  end
1190
1246
 
1191
1247
  describe '#projection' do
@@ -191,6 +191,14 @@ describe Mongo::QueryCache do
191
191
  end
192
192
  end
193
193
 
194
+ context 'when the query has a limit but negative' do
195
+ let(:limit) { -5 }
196
+
197
+ it 'returns the caching cursor' do
198
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
199
+ end
200
+ end
201
+
194
202
  context 'when the query has no limit' do
195
203
  let(:limit) { nil }
196
204
 
@@ -198,6 +206,65 @@ describe Mongo::QueryCache do
198
206
  expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
199
207
  end
200
208
  end
209
+
210
+ context 'when the query has a 0 limit' do
211
+ let(:limit) { 0 }
212
+
213
+ it 'returns the caching cursor' do
214
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
215
+ end
216
+ end
217
+ end
218
+
219
+ context 'when that entry has a 0 limit' do
220
+ let(:caching_cursor_options) do
221
+ {
222
+ namespace: 'db.coll',
223
+ selector: { field: 'value' },
224
+ limit: 0,
225
+ }
226
+ end
227
+
228
+ let(:query_options) do
229
+ caching_cursor_options.merge(limit: limit)
230
+ end
231
+
232
+ before do
233
+ allow(view).to receive(:limit) { 0 }
234
+ end
235
+
236
+ context 'when the query has a limit' do
237
+ let(:limit) { 5 }
238
+
239
+ it 'returns the caching cursor' do
240
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
241
+ end
242
+ end
243
+
244
+ context 'when the query has a limit but negative' do
245
+ let(:limit) { -5 }
246
+
247
+ it 'returns the caching cursor' do
248
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
249
+ end
250
+ end
251
+
252
+
253
+ context 'when the query has no limit' do
254
+ let(:limit) { nil }
255
+
256
+ it 'returns the caching cursor' do
257
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
258
+ end
259
+ end
260
+
261
+ context 'when the query has a 0 limit' do
262
+ let(:limit) { 0 }
263
+
264
+ it 'returns the caching cursor' do
265
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
266
+ end
267
+ end
201
268
  end
202
269
 
203
270
  context 'when that entry has a limit' do
@@ -225,6 +292,14 @@ describe Mongo::QueryCache do
225
292
  end
226
293
  end
227
294
 
295
+ context 'and the new query has a smaller limit but negative' do
296
+ let(:limit) { -4 }
297
+
298
+ it 'returns the caching cursor' do
299
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
300
+ end
301
+ end
302
+
228
303
  context 'and the new query has a larger limit' do
229
304
  let(:limit) { 6 }
230
305
 
@@ -233,6 +308,14 @@ describe Mongo::QueryCache do
233
308
  end
234
309
  end
235
310
 
311
+ context 'and the new query has a larger limit but negative' do
312
+ let(:limit) { -6 }
313
+
314
+ it 'returns nil' do
315
+ expect(Mongo::QueryCache.get(**query_options)).to be_nil
316
+ end
317
+ end
318
+
236
319
  context 'and the new query has the same limit' do
237
320
  let(:limit) { 5 }
238
321
 
@@ -241,6 +324,80 @@ describe Mongo::QueryCache do
241
324
  end
242
325
  end
243
326
 
327
+ context 'and the new query has the same limit but negative' do
328
+ let(:limit) { -5 }
329
+
330
+ it 'returns the caching cursor' do
331
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
332
+ end
333
+ end
334
+
335
+ context 'and the new query has no limit' do
336
+ let(:limit) { nil }
337
+
338
+ it 'returns nil' do
339
+ expect(Mongo::QueryCache.get(**query_options)).to be_nil
340
+ end
341
+ end
342
+
343
+ context 'and the new query has a 0 limit' do
344
+ let(:limit) { 0 }
345
+
346
+ it 'returns nil' do
347
+ expect(Mongo::QueryCache.get(**query_options)).to be_nil
348
+ end
349
+ end
350
+ end
351
+
352
+ context 'when that entry has a negative limit' do
353
+ let(:caching_cursor_options) do
354
+ {
355
+ namespace: 'db.coll',
356
+ selector: { field: 'value' },
357
+ limit: -5,
358
+ }
359
+ end
360
+
361
+ let(:query_options) do
362
+ caching_cursor_options.merge(limit: limit)
363
+ end
364
+
365
+ before do
366
+ allow(view).to receive(:limit) { -5 }
367
+ end
368
+
369
+ context 'and the new query has a smaller limit' do
370
+ let(:limit) { 4 }
371
+
372
+ it 'returns the caching cursor' do
373
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
374
+ end
375
+ end
376
+
377
+ context 'and the new query has a larger limit' do
378
+ let(:limit) { 6 }
379
+
380
+ it 'returns nil' do
381
+ expect(Mongo::QueryCache.get(**query_options)).to be_nil
382
+ end
383
+ end
384
+
385
+ context 'and the new query has the same negative limit' do
386
+ let(:limit) { -5 }
387
+
388
+ it 'returns the caching cursor' do
389
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
390
+ end
391
+ end
392
+
393
+ context 'and the new query has the same positive limit' do
394
+ let(:limit) { 5 }
395
+
396
+ it 'returns the caching cursor' do
397
+ expect(Mongo::QueryCache.get(**query_options)).to eq(caching_cursor)
398
+ end
399
+ end
400
+
244
401
  context 'and the new query has no limit' do
245
402
  let(:limit) { nil }
246
403
 
@@ -248,6 +405,14 @@ describe Mongo::QueryCache do
248
405
  expect(Mongo::QueryCache.get(**query_options)).to be_nil
249
406
  end
250
407
  end
408
+
409
+ context 'and the new query has a 0 limit' do
410
+ let(:limit) { 0 }
411
+
412
+ it 'returns nil' do
413
+ expect(Mongo::QueryCache.get(**query_options)).to be_nil
414
+ end
415
+ end
251
416
  end
252
417
  end
253
418
  end
@@ -233,13 +233,13 @@ CFG
233
233
  # Current virtualenv fails with
234
234
  # https://github.com/pypa/virtualenv/issues/1630
235
235
  <% if distro =~ /ubuntu2004/ %>
236
- RUN python3 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
236
+ RUN python3 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]==1.5.5'
237
237
  <% else %>
238
- RUN python2 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
238
+ RUN python2 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]==1.5.5'
239
239
  <% end %>
240
240
 
241
241
  RUN pip --version && \
242
- pip install mtools-legacy[mlaunch]
242
+ pip install 'mtools-legacy[mlaunch]==1.5.5'
243
243
 
244
244
  <% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
245
245
  # ubuntu1604 installs MarkupSafe 0.0.0 here instead of 2.0.0+
@@ -71,7 +71,7 @@ install_mlaunch_virtualenv() {
71
71
  venvpath="$MONGO_ORCHESTRATION_HOME"/venv
72
72
  python2 -m virtualenv -p python2 $venvpath
73
73
  . $venvpath/bin/activate
74
- pip install 'mtools-legacy[mlaunch]'
74
+ pip install 'mtools-legacy[mlaunch]==1.5.5'
75
75
  fi
76
76
  }
77
77
 
@@ -2,16 +2,16 @@ Certificate:
2
2
  Data:
3
3
  Version: 3 (0x2)
4
4
  Serial Number:
5
- 0a:35:08:d5:5c:29:2b:01:7d:f8:ad:65:c0:0f:f7:e4
5
+ 06:d8:d9:04:d5:58:43:46:f6:8a:2f:a7:54:22:7e:c4
6
6
  Signature Algorithm: sha256WithRSAEncryption
7
7
  Issuer: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
8
8
  Validity
9
- Not Before: Sep 24 00:00:00 2020 GMT
10
- Not After : Sep 23 23:59:59 2030 GMT
9
+ Not Before: Apr 14 00:00:00 2021 GMT
10
+ Not After : Apr 13 23:59:59 2031 GMT
11
11
  Subject: C = US, O = DigiCert Inc, CN = DigiCert TLS RSA SHA256 2020 CA1
12
12
  Subject Public Key Info:
13
13
  Public Key Algorithm: rsaEncryption
14
- RSA Public-Key: (2048 bit)
14
+ Public-Key: (2048 bit)
15
15
  Modulus:
16
16
  00:c1:4b:b3:65:47:70:bc:dd:4f:58:db:ec:9c:ed:
17
17
  c3:66:e5:1f:31:13:54:ad:4a:66:46:1f:2c:0a:ec:
@@ -33,57 +33,51 @@ Certificate:
33
33
  99:f5
34
34
  Exponent: 65537 (0x10001)
35
35
  X509v3 extensions:
36
+ X509v3 Basic Constraints: critical
37
+ CA:TRUE, pathlen:0
36
38
  X509v3 Subject Key Identifier:
37
39
  B7:6B:A2:EA:A8:AA:84:8C:79:EA:B4:DA:0F:98:B2:C5:95:76:B9:F4
38
40
  X509v3 Authority Key Identifier:
39
- keyid:03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55
40
-
41
+ 03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55
41
42
  X509v3 Key Usage: critical
42
43
  Digital Signature, Certificate Sign, CRL Sign
43
44
  X509v3 Extended Key Usage:
44
45
  TLS Web Server Authentication, TLS Web Client Authentication
45
- X509v3 Basic Constraints: critical
46
- CA:TRUE, pathlen:0
47
46
  Authority Information Access:
48
47
  OCSP - URI:http://ocsp.digicert.com
49
48
  CA Issuers - URI:http://cacerts.digicert.com/DigiCertGlobalRootCA.crt
50
-
51
49
  X509v3 CRL Distribution Points:
52
-
53
50
  Full Name:
54
51
  URI:http://crl3.digicert.com/DigiCertGlobalRootCA.crl
55
-
56
- Full Name:
57
- URI:http://crl4.digicert.com/DigiCertGlobalRootCA.crl
58
-
59
52
  X509v3 Certificate Policies:
53
+ Policy: 2.16.840.1.114412.2.1
60
54
  Policy: 2.23.140.1.1
61
55
  Policy: 2.23.140.1.2.1
62
56
  Policy: 2.23.140.1.2.2
63
57
  Policy: 2.23.140.1.2.3
64
-
65
58
  Signature Algorithm: sha256WithRSAEncryption
66
- 77:ab:b7:7a:27:3d:ae:bb:f6:7f:e0:5a:56:c9:84:aa:ca:5b:
67
- 71:17:dd:22:47:fc:4e:9f:ee:d0:c1:a4:04:e1:a3:eb:c5:49:
68
- c1:fd:d1:c9:df:8c:af:94:45:2c:46:2a:a3:63:39:20:f9:9e:
69
- 4a:24:94:41:c8:a9:d9:e2:9c:54:05:06:cb:5c:1c:be:00:1b:
70
- 0f:a8:5a:ff:19:bb:65:c7:16:af:21:56:dd:61:05:c9:e9:8f:
71
- 98:76:df:6b:1b:d0:72:0c:50:b9:30:29:7a:bf:60:59:10:66:
72
- 13:3a:2d:ac:15:11:6c:2d:23:0c:02:3e:05:3b:fe:e5:a1:9c:
73
- e2:8a:db:87:d7:4a:e8:5e:e7:48:06:eb:ab:12:9a:f2:af:84:
74
- c3:5b:83:4a:99:81:83:ab:00:a1:ca:0a:3c:4c:a2:25:89:2a:
75
- 22:a7:a4:f3:33:4c:5b:8c:2e:1a:02:97:0f:9d:8f:6d:2d:95:
76
- 08:fb:4f:da:f1:91:38:25:e1:9c:6e:61:18:87:6a:ce:b1:bb:
77
- 00:30:6a:9b:b7:af:da:f1:c5:97:fe:8a:78:24:aa:ea:93:80:
78
- ba:33:65:7a:bc:a1:77:e9:7f:69:14:0b:00:3f:77:92:b1:4d:
79
- 5b:73:87:0a:13:d0:9c:c8:f2:4b:39:4f:52:84:49:a6:4c:90:
80
- 4e:1f:f7:b4
59
+ Signature Value:
60
+ 80:32:ce:5e:0b:dd:6e:5a:0d:0a:af:e1:d6:84:cb:c0:8e:fa:
61
+ 85:70:ed:da:5d:b3:0c:f7:2b:75:40:fe:85:0a:fa:f3:31:78:
62
+ b7:70:4b:1a:89:58:ba:80:bd:f3:6b:1d:e9:7e:cf:0b:ba:58:
63
+ 9c:59:d4:90:d3:fd:6c:fd:d0:98:6d:b7:71:82:5b:cf:6d:0b:
64
+ 5a:09:d0:7b:de:c4:43:d8:2a:a4:de:9e:41:26:5f:bb:8f:99:
65
+ cb:dd:ae:e1:a8:6f:9f:87:fe:74:b7:1f:1b:20:ab:b1:4f:c6:
66
+ f5:67:5d:5d:9b:3c:e9:ff:69:f7:61:6c:d6:d9:f3:fd:36:c6:
67
+ ab:03:88:76:d2:4b:2e:75:86:e3:fc:d8:55:7d:26:c2:11:77:
68
+ df:3e:02:b6:7c:f3:ab:7b:7a:86:36:6f:b8:f7:d8:93:71:cf:
69
+ 86:df:73:30:fa:7b:ab:ed:2a:59:c8:42:84:3b:11:17:1a:52:
70
+ f3:c9:0e:14:7d:a2:5b:72:67:ba:71:ed:57:47:66:c5:b8:02:
71
+ 4a:65:34:5e:8b:d0:2a:3c:20:9c:51:99:4c:e7:52:9e:f7:6b:
72
+ 11:2b:0d:92:7e:1d:e8:8a:eb:36:16:43:87:ea:2a:63:bf:75:
73
+ 3f:eb:de:c4:03:bb:0a:3c:f7:30:ef:eb:af:4c:fc:8b:36:10:
74
+ 73:3e:f3:a4
81
75
 
82
76
  -----BEGIN CERTIFICATE-----
83
- MIIE6jCCA9KgAwIBAgIQCjUI1VwpKwF9+K1lwA/35DANBgkqhkiG9w0BAQsFADBh
77
+ MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
84
78
  MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
85
79
  d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
86
- QTAeFw0yMDA5MjQwMDAwMDBaFw0zMDA5MjMyMzU5NTlaME8xCzAJBgNVBAYTAlVT
80
+ QTAeFw0yMTA0MTQwMDAwMDBaFw0zMTA0MTMyMzU5NTlaME8xCzAJBgNVBAYTAlVT
87
81
  MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxKTAnBgNVBAMTIERpZ2lDZXJ0IFRMUyBS
88
82
  U0EgU0hBMjU2IDIwMjAgQ0ExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
89
83
  AQEAwUuzZUdwvN1PWNvsnO3DZuUfMRNUrUpmRh8sCuxkB+Uu3Ny5CiDt3+PE0J6a
@@ -91,20 +85,19 @@ qXodgojlEVbbHp9YwlHnLDQNLtKS4VbL8Xlfs7uHyiUDe5pSQWYQYE9XE0nw6Ddn
91
85
  g9/n00tnTCJRpt8OmRDtV1F0JuJ9x8piLhMbfyOIJVNvwTRYAIuE//i+p1hJInuW
92
86
  raKImxW8oHzf6VGo1bDtN+I2tIJLYrVJmuzHZ9bjPvXj1hJeRPG/cUJ9WIQDgLGB
93
87
  Afr5yjK7tI4nhyfFK3TUqNaX3sNk+crOU6JWvHgXjkkDKa77SU+kFbnO8lwZV21r
94
- eacroicgE7XQPUDTITAHk+qZ9QIDAQABo4IBrjCCAaowHQYDVR0OBBYEFLdrouqo
95
- qoSMeeq02g+YssWVdrn0MB8GA1UdIwQYMBaAFAPeUDVW0Uy7ZvCj4hsbw5eyPdFV
96
- MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
97
- EgYDVR0TAQH/BAgwBgEB/wIBADB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
88
+ eacroicgE7XQPUDTITAHk+qZ9QIDAQABo4IBgjCCAX4wEgYDVR0TAQH/BAgwBgEB
89
+ /wIBADAdBgNVHQ4EFgQUt2ui6qiqhIx56rTaD5iyxZV2ufQwHwYDVR0jBBgwFoAU
90
+ A95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG
91
+ CCsGAQUFBwMBBggrBgEFBQcDAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
98
92
  GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2Nh
99
- Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNydDB7BgNV
100
- HR8EdDByMDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRH
101
- bG9iYWxSb290Q0EuY3JsMDegNaAzhjFodHRwOi8vY3JsNC5kaWdpY2VydC5jb20v
102
- RGlnaUNlcnRHbG9iYWxSb290Q0EuY3JsMDAGA1UdIAQpMCcwBwYFZ4EMAQEwCAYG
103
- Z4EMAQIBMAgGBmeBDAECAjAIBgZngQwBAgMwDQYJKoZIhvcNAQELBQADggEBAHer
104
- t3onPa679n/gWlbJhKrKW3EX3SJH/E6f7tDBpATho+vFScH90cnfjK+URSxGKqNj
105
- OSD5nkoklEHIqdninFQFBstcHL4AGw+oWv8Zu2XHFq8hVt1hBcnpj5h232sb0HIM
106
- ULkwKXq/YFkQZhM6LawVEWwtIwwCPgU7/uWhnOKK24fXSuhe50gG66sSmvKvhMNb
107
- g0qZgYOrAKHKCjxMoiWJKiKnpPMzTFuMLhoClw+dj20tlQj7T9rxkTgl4ZxuYRiH
108
- as6xuwAwapu3r9rxxZf+ingkquqTgLozZXq8oXfpf2kUCwA/d5KxTVtzhwoT0JzI
109
- 8ks5T1KESaZMkE4f97Q=
93
+ Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNydDBCBgNV
94
+ HR8EOzA5MDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRH
95
+ bG9iYWxSb290Q0EuY3JsMD0GA1UdIAQ2MDQwCwYJYIZIAYb9bAIBMAcGBWeBDAEB
96
+ MAgGBmeBDAECATAIBgZngQwBAgIwCAYGZ4EMAQIDMA0GCSqGSIb3DQEBCwUAA4IB
97
+ AQCAMs5eC91uWg0Kr+HWhMvAjvqFcO3aXbMM9yt1QP6FCvrzMXi3cEsaiVi6gL3z
98
+ ax3pfs8LulicWdSQ0/1s/dCYbbdxglvPbQtaCdB73sRD2Cqk3p5BJl+7j5nL3a7h
99
+ qG+fh/50tx8bIKuxT8b1Z11dmzzp/2n3YWzW2fP9NsarA4h20ksudYbj/NhVfSbC
100
+ EXffPgK2fPOre3qGNm+499iTcc+G33Mw+nur7SpZyEKEOxEXGlLzyQ4UfaJbcme6
101
+ ce1XR2bFuAJKZTRei9AqPCCcUZlM51Ke92sRKw2Sfh3oius2FkOH6ipjv3U/697E
102
+ A7sKPPcw7+uvTPyLNhBzPvOk
110
103
  -----END CERTIFICATE-----
@@ -2,42 +2,41 @@ Certificate:
2
2
  Data:
3
3
  Version: 3 (0x2)
4
4
  Serial Number:
5
- 08:dc:93:55:36:6d:c5:92:20:d0:a3:4c:a1:19:ab:2d
5
+ 0e:fb:8b:f4:73:3e:98:df:1d:48:6d:da:d2:08:ca:0d
6
6
  Signature Algorithm: sha256WithRSAEncryption
7
7
  Issuer: C = US, O = DigiCert Inc, CN = DigiCert TLS RSA SHA256 2020 CA1
8
8
  Validity
9
- Not Before: Apr 27 00:00:00 2021 GMT
10
- Not After : May 25 23:59:59 2022 GMT
9
+ Not Before: May 5 00:00:00 2022 GMT
10
+ Not After : Jun 2 23:59:59 2023 GMT
11
11
  Subject: C = US, ST = New York, L = New York, O = "MongoDB, Inc.", CN = *.mongodb-dev.net
12
12
  Subject Public Key Info:
13
13
  Public Key Algorithm: rsaEncryption
14
- RSA Public-Key: (2048 bit)
14
+ Public-Key: (2048 bit)
15
15
  Modulus:
16
- 00:bb:c1:de:f6:08:39:fb:f1:9a:f7:d4:68:6a:d7:
17
- 81:57:0c:09:b9:8f:39:e5:c8:b1:53:52:d8:64:0c:
18
- e1:92:9c:ca:3f:92:46:86:5c:e2:8f:20:cf:f9:99:
19
- d0:95:46:51:7e:55:f7:3d:62:1b:a4:e7:79:31:0c:
20
- 39:9d:23:bc:00:6f:2f:3d:5f:d4:88:1b:d0:9c:42:
21
- 26:45:1b:11:b2:d7:45:f5:aa:2f:07:43:da:bc:ab:
22
- 43:cb:0b:12:59:41:24:c3:bb:86:7f:2d:1a:c9:26:
23
- d7:6b:25:57:48:9c:88:1a:20:fb:65:01:71:27:0c:
24
- 24:a7:23:40:dc:b6:69:4d:55:ef:14:ba:bd:05:b6:
25
- cf:5e:b0:c2:f6:56:bc:88:e9:81:04:94:80:9b:cf:
26
- ee:f3:15:05:79:61:41:21:4a:a1:23:29:66:90:e9:
27
- d7:03:1e:4f:30:bd:81:46:e4:9b:ab:1f:f8:02:5c:
28
- 58:98:48:c5:50:16:16:80:0d:25:be:53:27:aa:8b:
29
- ca:6c:d5:d9:89:50:2b:38:a6:55:fe:c3:0a:6a:db:
30
- 9c:1e:23:a2:84:93:4f:d1:a1:3d:00:48:ab:c1:2a:
31
- 3c:0a:59:a8:5b:d4:88:32:54:a9:de:88:de:1a:82:
32
- ef:61:fa:90:fa:42:3d:1d:a8:98:d6:3b:a5:d4:eb:
33
- c6:cf
16
+ 00:b3:40:eb:4a:26:af:07:a3:ea:58:c7:3b:50:5c:
17
+ 94:47:5a:0a:9d:86:b7:bb:03:9c:5a:4a:23:5e:7c:
18
+ b1:cd:fc:4f:56:d5:05:4e:ce:f8:f2:b1:55:09:13:
19
+ ff:cc:e6:a4:fb:41:2e:0c:8f:1a:a3:ea:4b:a3:51:
20
+ c6:f7:91:e6:47:49:ae:3b:94:df:68:80:68:2a:62:
21
+ a2:d1:42:5b:89:c1:70:2b:1c:a7:84:df:98:86:1a:
22
+ 69:eb:88:c4:51:4d:c9:7f:10:90:a0:0a:c5:7c:07:
23
+ 12:9e:c2:94:e1:88:2e:2d:21:94:a4:8a:27:1f:20:
24
+ 1b:6f:14:27:21:0c:4b:6f:72:5b:18:e7:75:7a:90:
25
+ 4c:a8:18:e7:4d:0f:ed:e4:03:f4:10:b7:65:23:9f:
26
+ b2:5f:0d:eb:85:3c:b0:34:d3:9a:2c:80:85:2e:53:
27
+ 35:19:44:03:13:b3:df:fb:0d:db:80:6f:12:60:1a:
28
+ b8:d6:25:0d:6d:23:fd:a6:d8:aa:dc:82:73:cc:d2:
29
+ 26:9b:71:50:9a:09:cf:ef:60:ba:d1:22:cb:fb:2f:
30
+ 69:a2:a6:c6:a9:30:77:1c:d7:bc:c2:6e:6d:e6:69:
31
+ 65:f3:91:3d:ee:04:f9:a0:41:5f:50:dc:75:15:4d:
32
+ 15:43:76:35:e9:97:65:7a:d8:3f:00:4d:44:29:7c:
33
+ 5d:25
34
34
  Exponent: 65537 (0x10001)
35
35
  X509v3 extensions:
36
36
  X509v3 Authority Key Identifier:
37
- keyid:B7:6B:A2:EA:A8:AA:84:8C:79:EA:B4:DA:0F:98:B2:C5:95:76:B9:F4
38
-
37
+ B7:6B:A2:EA:A8:AA:84:8C:79:EA:B4:DA:0F:98:B2:C5:95:76:B9:F4
39
38
  X509v3 Subject Key Identifier:
40
- 3D:23:31:1E:EA:1C:8D:8A:09:AA:2D:2A:84:BF:06:31:DE:87:04:01
39
+ 22:7C:2F:C7:F4:D6:75:0E:A1:02:32:21:1A:A6:29:25:46:48:B8:6A
41
40
  X509v3 Subject Alternative Name:
42
41
  DNS:*.mongodb-dev.net, DNS:mongodb-dev.net
43
42
  X509v3 Key Usage: critical
@@ -45,113 +44,109 @@ Certificate:
45
44
  X509v3 Extended Key Usage:
46
45
  TLS Web Server Authentication, TLS Web Client Authentication
47
46
  X509v3 CRL Distribution Points:
48
-
49
47
  Full Name:
50
- URI:http://crl3.digicert.com/DigiCertTLSRSASHA2562020CA1.crl
51
-
48
+ URI:http://crl3.digicert.com/DigiCertTLSRSASHA2562020CA1-4.crl
52
49
  Full Name:
53
- URI:http://crl4.digicert.com/DigiCertTLSRSASHA2562020CA1.crl
54
-
50
+ URI:http://crl4.digicert.com/DigiCertTLSRSASHA2562020CA1-4.crl
55
51
  X509v3 Certificate Policies:
56
52
  Policy: 2.23.140.1.2.2
57
53
  CPS: http://www.digicert.com/CPS
58
-
59
54
  Authority Information Access:
60
55
  OCSP - URI:http://ocsp.digicert.com
61
- CA Issuers - URI:http://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1.crt
62
-
63
- X509v3 Basic Constraints: critical
56
+ CA Issuers - URI:http://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1-1.crt
57
+ X509v3 Basic Constraints:
64
58
  CA:FALSE
65
59
  CT Precertificate SCTs:
66
60
  Signed Certificate Timestamp:
67
61
  Version : v1 (0x0)
68
- Log ID : 29:79:BE:F0:9E:39:39:21:F0:56:73:9F:63:A5:77:E5:
69
- BE:57:7D:9C:60:0A:F8:F9:4D:5D:26:5C:25:5D:C7:84
70
- Timestamp : Apr 27 23:28:05.994 2021 GMT
62
+ Log ID : E8:3E:D0:DA:3E:F5:06:35:32:E7:57:28:BC:89:6B:C9:
63
+ 03:D3:CB:D1:11:6B:EC:EB:69:E1:77:7D:6D:06:BD:6E
64
+ Timestamp : May 5 16:12:54.726 2022 GMT
71
65
  Extensions: none
72
66
  Signature : ecdsa-with-SHA256
73
- 30:45:02:20:42:20:09:2C:F8:4F:9C:4D:70:0C:1D:A6:
74
- 39:A1:EC:20:4B:54:4B:50:5E:B5:B9:71:1F:6B:60:BC:
75
- 65:5B:E7:0F:02:21:00:BA:DE:65:82:26:65:7C:D7:01:
76
- 7C:36:51:71:CF:F7:2C:09:7B:C7:9A:1F:E4:6D:8E:11:
77
- 7E:DB:60:52:BC:82:8B
67
+ 30:45:02:21:00:C4:D8:1A:00:3C:BD:E5:E1:13:B2:5D:
68
+ DA:7F:69:A9:4C:83:AB:CC:C2:00:9F:FB:98:09:44:5F:
69
+ 93:0C:92:CD:F7:02:20:2D:E2:D6:A4:3B:61:06:25:1E:
70
+ 22:2F:5E:2A:D4:76:0D:FE:12:E9:91:65:26:69:25:6C:
71
+ 53:E4:C3:2F:4B:89:AF
78
72
  Signed Certificate Timestamp:
79
73
  Version : v1 (0x0)
80
- Log ID : 22:45:45:07:59:55:24:56:96:3F:A1:2F:F1:F7:6D:86:
81
- E0:23:26:63:AD:C0:4B:7F:5D:C6:83:5C:6E:E2:0F:02
82
- Timestamp : Apr 27 23:28:05.942 2021 GMT
74
+ Log ID : 35:CF:19:1B:BF:B1:6C:57:BF:0F:AD:4C:6D:42:CB:BB:
75
+ B6:27:20:26:51:EA:3F:E1:2A:EF:A8:03:C3:3B:D6:4C
76
+ Timestamp : May 5 16:12:54.786 2022 GMT
83
77
  Extensions: none
84
78
  Signature : ecdsa-with-SHA256
85
- 30:44:02:20:0C:6B:5C:7F:31:B5:24:10:73:23:AF:27:
86
- 20:11:58:9E:40:A6:6A:BB:D8:48:0F:D1:4A:F1:F8:A9:
87
- B0:30:1E:34:02:20:13:04:B5:82:28:59:D7:0B:86:7F:
88
- C6:22:6E:9C:67:FF:F1:A3:9F:BF:54:AB:0D:B8:1A:8E:
89
- 16:D2:F1:8E:37:FF
79
+ 30:45:02:20:46:F0:9E:AE:32:A7:A7:CA:22:C6:64:EE:
80
+ 7F:9F:C6:EA:3C:BE:3B:2F:E2:09:C0:ED:A9:E1:EE:16:
81
+ F9:F1:6C:1E:02:21:00:BD:1A:42:73:A5:CE:E6:8A:CE:
82
+ BC:4C:3E:42:D4:0B:FC:89:3B:D5:1E:29:E8:38:F7:44:
83
+ 5B:22:9A:FA:1D:B3:57
90
84
  Signed Certificate Timestamp:
91
85
  Version : v1 (0x0)
92
- Log ID : 51:A3:B0:F5:FD:01:79:9C:56:6D:B8:37:78:8F:0C:A4:
93
- 7A:CC:1B:27:CB:F7:9E:88:42:9A:0D:FE:D4:8B:05:E5
94
- Timestamp : Apr 27 23:28:06.392 2021 GMT
86
+ Log ID : B7:3E:FB:24:DF:9C:4D:BA:75:F2:39:C5:BA:58:F4:6C:
87
+ 5D:FC:42:CF:7A:9F:35:C4:9E:1D:09:81:25:ED:B4:99
88
+ Timestamp : May 5 16:12:54.779 2022 GMT
95
89
  Extensions: none
96
90
  Signature : ecdsa-with-SHA256
97
- 30:46:02:21:00:D0:FE:FE:CA:E2:72:85:3A:A6:13:D0:
98
- ED:55:8B:67:AF:86:F4:D7:BE:66:67:BB:99:BF:7C:10:
99
- 2D:28:0E:49:C3:02:21:00:BF:FF:BA:B8:4D:D1:B7:6A:
100
- 6B:E9:B3:E5:A6:93:CA:14:37:70:C1:4F:89:89:66:58:
101
- 3F:AA:22:B0:1E:F9:14:DF
91
+ 30:45:02:20:2F:72:9B:CC:88:04:F1:3B:8B:BC:01:85:
92
+ B2:16:B4:AF:4A:CB:45:E8:0B:29:D1:77:6C:2C:56:0C:
93
+ 8D:1C:61:7C:02:21:00:A4:67:AC:08:40:83:82:9E:22:
94
+ 75:3A:92:91:1E:12:23:01:B9:04:3B:A3:60:5F:E8:D1:
95
+ 59:4E:88:DB:C5:DE:DD
102
96
  Signature Algorithm: sha256WithRSAEncryption
103
- 78:e3:4f:d2:0f:56:13:0d:a3:5d:1a:68:d7:64:f5:60:d2:37:
104
- 7e:94:d7:4d:d3:5f:11:27:e8:0b:2c:74:6f:23:08:24:94:ba:
105
- fc:b8:8a:33:3f:99:18:83:cd:4f:14:3a:82:f9:ba:f3:ff:2c:
106
- b1:f5:c9:be:af:fd:16:79:bd:cf:39:ba:5c:47:88:b1:b1:23:
107
- 6b:6d:1c:67:5d:98:52:58:1d:72:ee:7e:c5:4b:e4:03:ca:ba:
108
- 47:bf:89:c5:48:c2:b1:0b:9c:3e:ed:3e:04:19:62:66:4c:c6:
109
- 44:6f:db:33:20:14:b1:df:c1:8f:3a:21:c1:59:0e:f8:70:3c:
110
- fe:e0:ad:77:7b:5d:8c:de:a3:cd:d0:5c:84:36:10:00:42:28:
111
- ee:7c:32:28:4d:41:94:3c:e4:36:7e:e5:d2:b3:d9:6f:f3:f5:
112
- 63:24:3f:9f:c6:64:cc:32:23:7e:fd:00:f4:c3:89:ac:5f:28:
113
- f2:a3:af:a9:21:47:b1:f4:48:7c:79:6d:e7:6e:b8:35:15:ea:
114
- 6d:f2:13:35:8f:56:ea:e6:47:fb:a9:b4:f6:64:ee:b9:e8:07:
115
- 73:de:ef:20:c0:36:a9:10:bf:4a:df:29:90:fb:fc:05:85:f0:
116
- 62:94:7e:74:3a:42:cb:01:3d:ef:65:82:48:b8:87:8e:0e:17:
117
- cb:6c:a0:dc
97
+ Signature Value:
98
+ 33:bb:fa:5f:59:e5:d0:5c:a1:22:4e:73:c8:35:e4:d7:8c:28:
99
+ 67:b2:85:b0:1b:0c:e4:ec:aa:a7:49:09:e7:52:63:e5:8a:51:
100
+ a9:de:b8:35:74:66:0f:66:fa:b4:91:1f:b0:3a:5e:0a:21:0d:
101
+ a2:73:5b:1f:2c:fa:cd:59:72:85:8c:db:95:33:66:64:a2:e7:
102
+ 6f:0d:9e:cf:a7:e3:de:82:7a:24:55:56:f8:b8:c0:95:0d:ba:
103
+ 07:01:fe:ce:35:48:2f:23:2d:29:7b:6b:00:e6:f7:2c:31:6f:
104
+ 9c:67:35:90:f0:65:9f:41:f9:bf:ad:2c:e9:8e:f0:c4:cf:8c:
105
+ 5d:02:c4:8e:22:7f:62:bb:62:21:cf:9d:59:7b:96:4e:c4:7d:
106
+ ca:a2:6f:37:66:34:88:ac:a3:c1:6e:95:ec:e3:3a:07:27:6d:
107
+ 31:b7:38:70:ce:93:42:86:20:3b:f8:d8:f9:ef:a9:9e:43:4f:
108
+ ed:9b:4b:c7:90:5b:d1:9b:16:66:8f:42:11:8a:97:bb:c7:e1:
109
+ b5:67:f5:a1:f4:7b:8b:f0:88:a8:5f:39:83:4c:2e:3d:e9:8f:
110
+ 34:b8:fb:e8:1e:e2:0f:90:02:7c:ad:c7:9e:00:c2:fa:0a:41:
111
+ 43:61:e2:2b:6d:f8:b7:fa:70:71:04:f3:2c:7f:c0:16:7a:6b:
112
+ a1:34:45:c0
118
113
 
119
114
  -----BEGIN CERTIFICATE-----
120
- MIIGwTCCBamgAwIBAgIQCNyTVTZtxZIg0KNMoRmrLTANBgkqhkiG9w0BAQsFADBP
115
+ MIIGxDCCBaygAwIBAgIQDvuL9HM+mN8dSG3a0gjKDTANBgkqhkiG9w0BAQsFADBP
121
116
  MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSkwJwYDVQQDEyBE
122
- aWdpQ2VydCBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTAeFw0yMTA0MjcwMDAwMDBa
123
- Fw0yMjA1MjUyMzU5NTlaMGcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9y
117
+ aWdpQ2VydCBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTAeFw0yMjA1MDUwMDAwMDBa
118
+ Fw0yMzA2MDIyMzU5NTlaMGcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9y
124
119
  azERMA8GA1UEBxMITmV3IFlvcmsxFjAUBgNVBAoTDU1vbmdvREIsIEluYy4xGjAY
125
120
  BgNVBAMMESoubW9uZ29kYi1kZXYubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
126
- MIIBCgKCAQEAu8He9gg5+/Ga99RoateBVwwJuY855cixU1LYZAzhkpzKP5JGhlzi
127
- jyDP+ZnQlUZRflX3PWIbpOd5MQw5nSO8AG8vPV/UiBvQnEImRRsRstdF9aovB0Pa
128
- vKtDywsSWUEkw7uGfy0aySbXayVXSJyIGiD7ZQFxJwwkpyNA3LZpTVXvFLq9BbbP
129
- XrDC9la8iOmBBJSAm8/u8xUFeWFBIUqhIylmkOnXAx5PML2BRuSbqx/4AlxYmEjF
130
- UBYWgA0lvlMnqovKbNXZiVArOKZV/sMKatucHiOihJNP0aE9AEirwSo8ClmoW9SI
131
- MlSp3ojeGoLvYfqQ+kI9HaiY1jul1OvGzwIDAQABo4IDfzCCA3swHwYDVR0jBBgw
132
- FoAUt2ui6qiqhIx56rTaD5iyxZV2ufQwHQYDVR0OBBYEFD0jMR7qHI2KCaotKoS/
133
- BjHehwQBMC0GA1UdEQQmMCSCESoubW9uZ29kYi1kZXYubmV0gg9tb25nb2RiLWRl
121
+ MIIBCgKCAQEAs0DrSiavB6PqWMc7UFyUR1oKnYa3uwOcWkojXnyxzfxPVtUFTs74
122
+ 8rFVCRP/zOak+0EuDI8ao+pLo1HG95HmR0muO5TfaIBoKmKi0UJbicFwKxynhN+Y
123
+ hhpp64jEUU3JfxCQoArFfAcSnsKU4YguLSGUpIonHyAbbxQnIQxLb3JbGOd1epBM
124
+ qBjnTQ/t5AP0ELdlI5+yXw3rhTywNNOaLICFLlM1GUQDE7Pf+w3bgG8SYBq41iUN
125
+ bSP9ptiq3IJzzNImm3FQmgnP72C60SLL+y9poqbGqTB3HNe8wm5t5mll85E97gT5
126
+ oEFfUNx1FU0VQ3Y16Zdletg/AE1EKXxdJQIDAQABo4IDgjCCA34wHwYDVR0jBBgw
127
+ FoAUt2ui6qiqhIx56rTaD5iyxZV2ufQwHQYDVR0OBBYEFCJ8L8f01nUOoQIyIRqm
128
+ KSVGSLhqMC0GA1UdEQQmMCSCESoubW9uZ29kYi1kZXYubmV0gg9tb25nb2RiLWRl
134
129
  di5uZXQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
135
- BQcDAjCBiwYDVR0fBIGDMIGAMD6gPKA6hjhodHRwOi8vY3JsMy5kaWdpY2VydC5j
136
- b20vRGlnaUNlcnRUTFNSU0FTSEEyNTYyMDIwQ0ExLmNybDA+oDygOoY4aHR0cDov
137
- L2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VExTUlNBU0hBMjU2MjAyMENBMS5j
138
- cmwwPgYDVR0gBDcwNTAzBgZngQwBAgIwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3
139
- dy5kaWdpY2VydC5jb20vQ1BTMH0GCCsGAQUFBwEBBHEwbzAkBggrBgEFBQcwAYYY
140
- aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEcGCCsGAQUFBzAChjtodHRwOi8vY2Fj
141
- ZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUTFNSU0FTSEEyNTYyMDIwQ0ExLmNy
142
- dDAMBgNVHRMBAf8EAjAAMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgAdgApeb7w
143
- njk5IfBWc59jpXflvld9nGAK+PlNXSZcJV3HhAAAAXkVqUdqAAAEAwBHMEUCIEIg
144
- CSz4T5xNcAwdpjmh7CBLVEtQXrW5cR9rYLxlW+cPAiEAut5lgiZlfNcBfDZRcc/3
145
- LAl7x5of5G2OEX7bYFK8gosAdQAiRUUHWVUkVpY/oS/x922G4CMmY63AS39dxoNc
146
- buIPAgAAAXkVqUc2AAAEAwBGMEQCIAxrXH8xtSQQcyOvJyARWJ5Apmq72EgP0Urx
147
- +KmwMB40AiATBLWCKFnXC4Z/xiJunGf/8aOfv1SrDbgajhbS8Y43/wB3AFGjsPX9
148
- AXmcVm24N3iPDKR6zBsny/eeiEKaDf7UiwXlAAABeRWpSPgAAAQDAEgwRgIhAND+
149
- /sricoU6phPQ7VWLZ6+G9Ne+Zme7mb98EC0oDknDAiEAv/+6uE3Rt2pr6bPlppPK
150
- FDdwwU+JiWZYP6oisB75FN8wDQYJKoZIhvcNAQELBQADggEBAHjjT9IPVhMNo10a
151
- aNdk9WDSN36U103TXxEn6AssdG8jCCSUuvy4ijM/mRiDzU8UOoL5uvP/LLH1yb6v
152
- /RZ5vc85ulxHiLGxI2ttHGddmFJYHXLufsVL5APKuke/icVIwrELnD7tPgQZYmZM
153
- xkRv2zMgFLHfwY86IcFZDvhwPP7grXd7XYzeo83QXIQ2EABCKO58MihNQZQ85DZ+
154
- 5dKz2W/z9WMkP5/GZMwyI379APTDiaxfKPKjr6khR7H0SHx5beduuDUV6m3yEzWP
155
- VurmR/uptPZk7rnoB3Pe7yDANqkQv0rfKZD7/AWF8GKUfnQ6QssBPe9lgki4h44O
156
- F8tsoNw=
130
+ BQcDAjCBjwYDVR0fBIGHMIGEMECgPqA8hjpodHRwOi8vY3JsMy5kaWdpY2VydC5j
131
+ b20vRGlnaUNlcnRUTFNSU0FTSEEyNTYyMDIwQ0ExLTQuY3JsMECgPqA8hjpodHRw
132
+ Oi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRUTFNSU0FTSEEyNTYyMDIwQ0Ex
133
+ LTQuY3JsMD4GA1UdIAQ3MDUwMwYGZ4EMAQICMCkwJwYIKwYBBQUHAgEWG2h0dHA6
134
+ Ly93d3cuZGlnaWNlcnQuY29tL0NQUzB/BggrBgEFBQcBAQRzMHEwJAYIKwYBBQUH
135
+ MAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcwAoY9aHR0cDov
136
+ L2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VExTUlNBU0hBMjU2MjAyMENB
137
+ MS0xLmNydDAJBgNVHRMEAjAAMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgAdgDo
138
+ PtDaPvUGNTLnVyi8iWvJA9PL0RFr7Otp4Xd9bQa9bgAAAYCU/uZGAAAEAwBHMEUC
139
+ IQDE2BoAPL3l4ROyXdp/aalMg6vMwgCf+5gJRF+TDJLN9wIgLeLWpDthBiUeIi9e
140
+ KtR2Df4S6ZFlJmklbFPkwy9Lia8AdgA1zxkbv7FsV78PrUxtQsu7ticgJlHqP+Eq
141
+ 76gDwzvWTAAAAYCU/uaCAAAEAwBHMEUCIEbwnq4yp6fKIsZk7n+fxuo8vjsv4gnA
142
+ 7anh7hb58WweAiEAvRpCc6XO5orOvEw+QtQL/Ik71R4p6Dj3RFsimvods1cAdgC3
143
+ Pvsk35xNunXyOcW6WPRsXfxCz3qfNcSeHQmBJe20mQAAAYCU/uZ7AAAEAwBHMEUC
144
+ IC9ym8yIBPE7i7wBhbIWtK9Ky0XoCynRd2wsVgyNHGF8AiEApGesCECDgp4idTqS
145
+ kR4SIwG5BDujYF/o0VlOiNvF3t0wDQYJKoZIhvcNAQELBQADggEBADO7+l9Z5dBc
146
+ oSJOc8g15NeMKGeyhbAbDOTsqqdJCedSY+WKUaneuDV0Zg9m+rSRH7A6XgohDaJz
147
+ Wx8s+s1ZcoWM25UzZmSi528Nns+n496CeiRVVvi4wJUNugcB/s41SC8jLSl7awDm
148
+ 9ywxb5xnNZDwZZ9B+b+tLOmO8MTPjF0CxI4if2K7YiHPnVl7lk7EfcqibzdmNIis
149
+ o8FulezjOgcnbTG3OHDOk0KGIDv42PnvqZ5DT+2bS8eQW9GbFmaPQhGKl7vH4bVn
150
+ 9aH0e4vwiKhfOYNMLj3pjzS4++ge4g+QAnytx54AwvoKQUNh4itt+Lf6cHEE8yx/
151
+ wBZ6a6E0RcA=
157
152
  -----END CERTIFICATE-----
@@ -619,7 +619,7 @@ module Utils
619
619
  BSON::Timestamp,
620
620
  BSON::Undefined,
621
621
  ]
622
- if RUBY_VERSION.start_with?("2.5")
622
+ if RUBY_VERSION < '2.6'
623
623
  YAML.safe_load(File.read(path), permitted_classes, [], true)
624
624
  else
625
625
  # Here we have Ruby 2.6+ that supports the new syntax of `safe_load``.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.17.1
4
+ version: 2.17.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Brock
@@ -32,7 +32,7 @@ cert_chain:
32
32
  +WyKQ+QTIdtDiyf2LQmxWnxt/W1CmScjdLS7/yXGkkB/D9Uy+sJD747O/B9P238Q
33
33
  XnerrtyOu04RsWDvaZkCwSDVzoqfICh4CP1mlde73Ts=
34
34
  -----END CERTIFICATE-----
35
- date: 2022-03-30 00:00:00.000000000 Z
35
+ date: 2022-07-19 00:00:00.000000000 Z
36
36
  dependencies:
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bson
metadata.gz.sig CHANGED
Binary file