mongo 2.16.2 → 2.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/mongo/collection/view/iterable.rb +2 -1
- data/lib/mongo/query_cache.rb +12 -2
- data/lib/mongo/server/monitor/connection.rb +10 -4
- data/lib/mongo/version.rb +1 -1
- data/spec/integration/query_cache_spec.rb +159 -0
- data/spec/integration/sdam_events_spec.rb +40 -0
- data/spec/mongo/collection/view/readable_spec.rb +56 -0
- data/spec/mongo/query_cache_spec.rb +165 -0
- data/spec/shared/share/Dockerfile.erb +3 -3
- data/spec/shared/shlib/server.sh +1 -1
- data/spec/support/certificates/atlas-ocsp-ca.crt +40 -47
- data/spec/support/certificates/atlas-ocsp.crt +101 -106
- data.tar.gz.sig +1 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6bbafc263bbcad82f83f9dab3bcd1120388149586352625a365b10bb15dc87be
|
4
|
+
data.tar.gz: 10a2c5a650d659bf9bd7cd45f024e77c8c0a29234e9d789efd2dda6d674b8f81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3284c0e972a9f4a8ce900405f6bb72df29cef702af58dd4e369619164a38b7a5128a2a01bd5f0d8b5a20feb001f43b6d0ab7f3590c539050ef38ef291764dd0
|
7
|
+
data.tar.gz: 2fe66c448b75bbfdbbbe4bc98d8286ede141e38a1361794c5c30cc83f87672e7faaf53463bbee084fd905baca2f78dccf2d5f3f3ff531c067c5763a3f683a338
|
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?
|
@@ -171,6 +171,7 @@ module Mongo
|
|
171
171
|
max_time_ms: options[:max_time_ms],
|
172
172
|
max_value: options[:max_value],
|
173
173
|
min_value: options[:min_value],
|
174
|
+
no_cursor_timeout: options[:no_cursor_timeout],
|
174
175
|
return_key: options[:return_key],
|
175
176
|
show_disk_loc: options[:show_disk_loc],
|
176
177
|
comment: options[:comment],
|
data/lib/mongo/query_cache.rb
CHANGED
@@ -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
|
-
|
230
|
+
doc = if hello_ok? || server_api
|
231
|
+
_doc = HELLO_DOC
|
232
232
|
if server_api
|
233
|
-
|
233
|
+
_doc = _doc.merge(Utils.transform_server_api(server_api))
|
234
234
|
end
|
235
|
-
|
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
@@ -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+
|
data/spec/shared/shlib/server.sh
CHANGED
@@ -2,16 +2,16 @@ Certificate:
|
|
2
2
|
Data:
|
3
3
|
Version: 3 (0x2)
|
4
4
|
Serial Number:
|
5
|
-
|
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:
|
10
|
-
Not After :
|
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
|
-
|
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
|
-
|
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
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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
|
-
|
77
|
+
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
|
84
78
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
85
79
|
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
86
|
-
|
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+
|
95
|
-
|
96
|
-
|
97
|
-
|
88
|
+
eacroicgE7XQPUDTITAHk+qZ9QIDAQABo4IBgjCCAX4wEgYDVR0TAQH/BAgwBgEB
|
89
|
+
/wIBADAdBgNVHQ4EFgQUt2ui6qiqhIx56rTaD5iyxZV2ufQwHwYDVR0jBBgwFoAU
|
90
|
+
A95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG
|
91
|
+
CCsGAQUFBwMBBggrBgEFBQcDAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
|
98
92
|
GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2Nh
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
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
|
-
|
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:
|
10
|
-
Not After :
|
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
|
-
|
14
|
+
Public-Key: (2048 bit)
|
15
15
|
Modulus:
|
16
|
-
00:
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
-
|
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
|
-
|
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 :
|
69
|
-
|
70
|
-
Timestamp :
|
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:
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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 :
|
81
|
-
|
82
|
-
Timestamp :
|
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:
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
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 :
|
93
|
-
|
94
|
-
Timestamp :
|
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:
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
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
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
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
|
-
|
115
|
+
MIIGxDCCBaygAwIBAgIQDvuL9HM+mN8dSG3a0gjKDTANBgkqhkiG9w0BAQsFADBP
|
121
116
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSkwJwYDVQQDEyBE
|
122
|
-
|
123
|
-
|
117
|
+
aWdpQ2VydCBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTAeFw0yMjA1MDUwMDAwMDBa
|
118
|
+
Fw0yMzA2MDIyMzU5NTlaMGcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9y
|
124
119
|
azERMA8GA1UEBxMITmV3IFlvcmsxFjAUBgNVBAoTDU1vbmdvREIsIEluYy4xGjAY
|
125
120
|
BgNVBAMMESoubW9uZ29kYi1kZXYubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
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
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
+
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
/
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
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-----
|
data.tar.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
���1��ɹIvV�e�D,J�Q^���Oq*{>\riƅ���>�ٽ�Ջ�]Z*_K k�ĕ�s؋ E8C�p'J�u�'b�@ �lг�a�·�͉��wGi�k�h1ϕ��p��#���=����x:�nUUγw�zo�u� A��#U��5��D�iHd����B���UE��|��t0���I<�/��!��Y�!LDg9J�hBc�����RTv���$xg?���S��A3��Ǚ�
|
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.16.
|
4
|
+
version: 2.16.3
|
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-
|
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
|