mongodb 6.10.0-dev.20241106.sha.dc3fe957 → 6.10.0-dev.20241107.sha.e5582ed7

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.
Files changed (203) hide show
  1. package/lib/admin.js +3 -2
  2. package/lib/admin.js.map +1 -1
  3. package/lib/beta.d.ts +558 -38
  4. package/lib/bulk/common.js +4 -4
  5. package/lib/bulk/common.js.map +1 -1
  6. package/lib/change_stream.js +111 -51
  7. package/lib/change_stream.js.map +1 -1
  8. package/lib/client-side-encryption/auto_encrypter.js +8 -5
  9. package/lib/client-side-encryption/auto_encrypter.js.map +1 -1
  10. package/lib/client-side-encryption/client_encryption.js +48 -18
  11. package/lib/client-side-encryption/client_encryption.js.map +1 -1
  12. package/lib/client-side-encryption/state_machine.js +43 -29
  13. package/lib/client-side-encryption/state_machine.js.map +1 -1
  14. package/lib/cmap/connection.js +78 -6
  15. package/lib/cmap/connection.js.map +1 -1
  16. package/lib/cmap/connection_pool.js +14 -9
  17. package/lib/cmap/connection_pool.js.map +1 -1
  18. package/lib/cmap/wire_protocol/on_data.js +5 -1
  19. package/lib/cmap/wire_protocol/on_data.js.map +1 -1
  20. package/lib/cmap/wire_protocol/responses.js +30 -0
  21. package/lib/cmap/wire_protocol/responses.js.map +1 -1
  22. package/lib/collection.js +62 -3
  23. package/lib/collection.js.map +1 -1
  24. package/lib/connection_string.js +2 -0
  25. package/lib/connection_string.js.map +1 -1
  26. package/lib/cursor/abstract_cursor.js +218 -38
  27. package/lib/cursor/abstract_cursor.js.map +1 -1
  28. package/lib/cursor/aggregation_cursor.js +29 -7
  29. package/lib/cursor/aggregation_cursor.js.map +1 -1
  30. package/lib/cursor/change_stream_cursor.js +2 -2
  31. package/lib/cursor/change_stream_cursor.js.map +1 -1
  32. package/lib/cursor/client_bulk_write_cursor.js +1 -1
  33. package/lib/cursor/client_bulk_write_cursor.js.map +1 -1
  34. package/lib/cursor/find_cursor.js +18 -8
  35. package/lib/cursor/find_cursor.js.map +1 -1
  36. package/lib/cursor/list_collections_cursor.js +1 -1
  37. package/lib/cursor/list_collections_cursor.js.map +1 -1
  38. package/lib/cursor/list_indexes_cursor.js +1 -1
  39. package/lib/cursor/list_indexes_cursor.js.map +1 -1
  40. package/lib/cursor/run_command_cursor.js +6 -4
  41. package/lib/cursor/run_command_cursor.js.map +1 -1
  42. package/lib/db.js +63 -3
  43. package/lib/db.js.map +1 -1
  44. package/lib/error.js +27 -2
  45. package/lib/error.js.map +1 -1
  46. package/lib/explain.js +57 -1
  47. package/lib/explain.js.map +1 -1
  48. package/lib/gridfs/download.js +31 -3
  49. package/lib/gridfs/download.js.map +1 -1
  50. package/lib/gridfs/index.js +49 -14
  51. package/lib/gridfs/index.js.map +1 -1
  52. package/lib/gridfs/upload.js +80 -22
  53. package/lib/gridfs/upload.js.map +1 -1
  54. package/lib/index.js +9 -5
  55. package/lib/index.js.map +1 -1
  56. package/lib/mongo_client.js +70 -1
  57. package/lib/mongo_client.js.map +1 -1
  58. package/lib/operations/aggregate.js +2 -2
  59. package/lib/operations/aggregate.js.map +1 -1
  60. package/lib/operations/bulk_write.js +7 -2
  61. package/lib/operations/bulk_write.js.map +1 -1
  62. package/lib/operations/client_bulk_write/client_bulk_write.js +3 -3
  63. package/lib/operations/client_bulk_write/client_bulk_write.js.map +1 -1
  64. package/lib/operations/client_bulk_write/executor.js +14 -3
  65. package/lib/operations/client_bulk_write/executor.js.map +1 -1
  66. package/lib/operations/command.js +5 -2
  67. package/lib/operations/command.js.map +1 -1
  68. package/lib/operations/count.js +2 -2
  69. package/lib/operations/count.js.map +1 -1
  70. package/lib/operations/create_collection.js +8 -7
  71. package/lib/operations/create_collection.js.map +1 -1
  72. package/lib/operations/delete.js +6 -6
  73. package/lib/operations/delete.js.map +1 -1
  74. package/lib/operations/distinct.js +2 -2
  75. package/lib/operations/distinct.js.map +1 -1
  76. package/lib/operations/drop.js +8 -8
  77. package/lib/operations/drop.js.map +1 -1
  78. package/lib/operations/estimated_document_count.js +2 -2
  79. package/lib/operations/estimated_document_count.js.map +1 -1
  80. package/lib/operations/execute_operation.js +16 -10
  81. package/lib/operations/execute_operation.js.map +1 -1
  82. package/lib/operations/find.js +6 -3
  83. package/lib/operations/find.js.map +1 -1
  84. package/lib/operations/find_and_modify.js +2 -2
  85. package/lib/operations/find_and_modify.js.map +1 -1
  86. package/lib/operations/get_more.js +2 -1
  87. package/lib/operations/get_more.js.map +1 -1
  88. package/lib/operations/indexes.js +6 -6
  89. package/lib/operations/indexes.js.map +1 -1
  90. package/lib/operations/insert.js +6 -6
  91. package/lib/operations/insert.js.map +1 -1
  92. package/lib/operations/kill_cursors.js +5 -2
  93. package/lib/operations/kill_cursors.js.map +1 -1
  94. package/lib/operations/list_collections.js +2 -2
  95. package/lib/operations/list_collections.js.map +1 -1
  96. package/lib/operations/list_databases.js +2 -2
  97. package/lib/operations/list_databases.js.map +1 -1
  98. package/lib/operations/operation.js.map +1 -1
  99. package/lib/operations/profiling_level.js +2 -2
  100. package/lib/operations/profiling_level.js.map +1 -1
  101. package/lib/operations/remove_user.js +2 -2
  102. package/lib/operations/remove_user.js.map +1 -1
  103. package/lib/operations/rename.js +2 -2
  104. package/lib/operations/rename.js.map +1 -1
  105. package/lib/operations/run_command.js +6 -4
  106. package/lib/operations/run_command.js.map +1 -1
  107. package/lib/operations/search_indexes/create.js +5 -2
  108. package/lib/operations/search_indexes/create.js.map +1 -1
  109. package/lib/operations/search_indexes/drop.js +2 -2
  110. package/lib/operations/search_indexes/drop.js.map +1 -1
  111. package/lib/operations/search_indexes/update.js +2 -2
  112. package/lib/operations/search_indexes/update.js.map +1 -1
  113. package/lib/operations/set_profiling_level.js +2 -2
  114. package/lib/operations/set_profiling_level.js.map +1 -1
  115. package/lib/operations/stats.js +2 -2
  116. package/lib/operations/stats.js.map +1 -1
  117. package/lib/operations/update.js +8 -8
  118. package/lib/operations/update.js.map +1 -1
  119. package/lib/operations/validate_collection.js +2 -2
  120. package/lib/operations/validate_collection.js.map +1 -1
  121. package/lib/sdam/server.js +4 -1
  122. package/lib/sdam/server.js.map +1 -1
  123. package/lib/sdam/server_description.js +2 -0
  124. package/lib/sdam/server_description.js.map +1 -1
  125. package/lib/sdam/topology.js +38 -11
  126. package/lib/sdam/topology.js.map +1 -1
  127. package/lib/sessions.js +145 -74
  128. package/lib/sessions.js.map +1 -1
  129. package/lib/timeout.js +217 -16
  130. package/lib/timeout.js.map +1 -1
  131. package/lib/utils.js +31 -17
  132. package/lib/utils.js.map +1 -1
  133. package/lib/write_concern.js.map +1 -1
  134. package/mongodb.d.ts +558 -38
  135. package/package.json +2 -2
  136. package/src/admin.ts +6 -2
  137. package/src/bulk/common.ts +17 -5
  138. package/src/change_stream.ts +127 -52
  139. package/src/client-side-encryption/auto_encrypter.ts +12 -5
  140. package/src/client-side-encryption/client_encryption.ts +103 -20
  141. package/src/client-side-encryption/state_machine.ts +66 -32
  142. package/src/cmap/connection.ts +105 -8
  143. package/src/cmap/connection_pool.ts +14 -14
  144. package/src/cmap/wire_protocol/on_data.ts +11 -1
  145. package/src/cmap/wire_protocol/responses.ts +35 -1
  146. package/src/collection.ts +81 -9
  147. package/src/connection_string.ts +2 -0
  148. package/src/cursor/abstract_cursor.ts +286 -39
  149. package/src/cursor/aggregation_cursor.ts +54 -8
  150. package/src/cursor/change_stream_cursor.ts +6 -2
  151. package/src/cursor/client_bulk_write_cursor.ts +6 -2
  152. package/src/cursor/find_cursor.ts +40 -9
  153. package/src/cursor/list_collections_cursor.ts +1 -1
  154. package/src/cursor/list_indexes_cursor.ts +1 -1
  155. package/src/cursor/run_command_cursor.ts +50 -5
  156. package/src/db.ts +75 -7
  157. package/src/error.ts +26 -1
  158. package/src/explain.ts +85 -0
  159. package/src/gridfs/download.ts +43 -4
  160. package/src/gridfs/index.ts +64 -16
  161. package/src/gridfs/upload.ts +152 -45
  162. package/src/index.ts +26 -4
  163. package/src/mongo_client.ts +75 -3
  164. package/src/operations/aggregate.ts +10 -2
  165. package/src/operations/bulk_write.ts +9 -2
  166. package/src/operations/client_bulk_write/client_bulk_write.ts +11 -3
  167. package/src/operations/client_bulk_write/executor.ts +15 -3
  168. package/src/operations/command.ts +18 -8
  169. package/src/operations/count.ts +10 -3
  170. package/src/operations/create_collection.ts +14 -7
  171. package/src/operations/delete.ts +15 -6
  172. package/src/operations/distinct.ts +7 -2
  173. package/src/operations/drop.ts +18 -8
  174. package/src/operations/estimated_document_count.ts +7 -2
  175. package/src/operations/execute_operation.ts +22 -13
  176. package/src/operations/find.ts +17 -5
  177. package/src/operations/find_and_modify.ts +7 -2
  178. package/src/operations/get_more.ts +4 -1
  179. package/src/operations/indexes.ts +20 -7
  180. package/src/operations/insert.ts +13 -6
  181. package/src/operations/kill_cursors.ts +10 -2
  182. package/src/operations/list_collections.ts +10 -1
  183. package/src/operations/list_databases.ts +9 -2
  184. package/src/operations/operation.ts +16 -2
  185. package/src/operations/profiling_level.ts +7 -2
  186. package/src/operations/remove_user.ts +7 -2
  187. package/src/operations/rename.ts +7 -2
  188. package/src/operations/run_command.ts +23 -4
  189. package/src/operations/search_indexes/create.ts +10 -2
  190. package/src/operations/search_indexes/drop.ts +7 -2
  191. package/src/operations/search_indexes/update.ts +7 -2
  192. package/src/operations/set_profiling_level.ts +4 -2
  193. package/src/operations/stats.ts +7 -2
  194. package/src/operations/update.ts +16 -8
  195. package/src/operations/validate_collection.ts +7 -2
  196. package/src/sdam/server.ts +14 -4
  197. package/src/sdam/server_description.ts +4 -0
  198. package/src/sdam/topology.ts +43 -18
  199. package/src/sessions.ts +193 -89
  200. package/src/timeout.ts +310 -23
  201. package/src/transactions.ts +1 -1
  202. package/src/utils.ts +42 -28
  203. package/src/write_concern.ts +6 -3
@@ -4,6 +4,7 @@ exports.ClientEncryption = void 0;
4
4
  exports.autoSelectSocketOptions = autoSelectSocketOptions;
5
5
  const bson_1 = require("../bson");
6
6
  const deps_1 = require("../deps");
7
+ const timeout_1 = require("../timeout");
7
8
  const utils_1 = require("../utils");
8
9
  const cryptoCallbacks = require("./crypto_callbacks");
9
10
  const errors_1 = require("./errors");
@@ -55,6 +56,8 @@ class ClientEncryption {
55
56
  this._proxyOptions = options.proxyOptions ?? {};
56
57
  this._tlsOptions = options.tlsOptions ?? {};
57
58
  this._kmsProviders = options.kmsProviders || {};
59
+ const { timeoutMS } = (0, utils_1.resolveTimeoutOptions)(client, options);
60
+ this._timeoutMS = timeoutMS;
58
61
  if (options.keyVaultNamespace == null) {
59
62
  throw new errors_1.MongoCryptInvalidArgumentError('Missing required option `keyVaultNamespace`');
60
63
  }
@@ -130,14 +133,21 @@ class ClientEncryption {
130
133
  const stateMachine = new state_machine_1.StateMachine({
131
134
  proxyOptions: this._proxyOptions,
132
135
  tlsOptions: this._tlsOptions,
133
- socketOptions: autoSelectSocketOptions(this._client.options)
136
+ socketOptions: autoSelectSocketOptions(this._client.s.options)
134
137
  });
135
- const dataKey = (0, bson_1.deserialize)(await stateMachine.execute(this, context));
138
+ const timeoutContext = options?.timeoutContext ??
139
+ timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, { timeoutMS: this._timeoutMS }));
140
+ const dataKey = (0, bson_1.deserialize)(await stateMachine.execute(this, context, timeoutContext));
136
141
  const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
137
142
  const { insertedId } = await this._keyVaultClient
138
143
  .db(dbName)
139
144
  .collection(collectionName)
140
- .insertOne(dataKey, { writeConcern: { w: 'majority' } });
145
+ .insertOne(dataKey, {
146
+ writeConcern: { w: 'majority' },
147
+ timeoutMS: timeoutContext?.csotEnabled()
148
+ ? timeoutContext?.getRemainingTimeMSOrThrow()
149
+ : undefined
150
+ });
141
151
  return insertedId;
142
152
  }
143
153
  /**
@@ -178,9 +188,10 @@ class ClientEncryption {
178
188
  const stateMachine = new state_machine_1.StateMachine({
179
189
  proxyOptions: this._proxyOptions,
180
190
  tlsOptions: this._tlsOptions,
181
- socketOptions: autoSelectSocketOptions(this._client.options)
191
+ socketOptions: autoSelectSocketOptions(this._client.s.options)
182
192
  });
183
- const { v: dataKeys } = (0, bson_1.deserialize)(await stateMachine.execute(this, context));
193
+ const timeoutContext = timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, { timeoutMS: this._timeoutMS }));
194
+ const { v: dataKeys } = (0, bson_1.deserialize)(await stateMachine.execute(this, context, timeoutContext));
184
195
  if (dataKeys.length === 0) {
185
196
  return {};
186
197
  }
@@ -203,7 +214,8 @@ class ClientEncryption {
203
214
  .db(dbName)
204
215
  .collection(collectionName)
205
216
  .bulkWrite(replacements, {
206
- writeConcern: { w: 'majority' }
217
+ writeConcern: { w: 'majority' },
218
+ timeoutMS: timeoutContext.csotEnabled() ? timeoutContext?.remainingTimeMS : undefined
207
219
  });
208
220
  return { bulkWriteResult: result };
209
221
  }
@@ -227,7 +239,7 @@ class ClientEncryption {
227
239
  return await this._keyVaultClient
228
240
  .db(dbName)
229
241
  .collection(collectionName)
230
- .deleteOne({ _id }, { writeConcern: { w: 'majority' } });
242
+ .deleteOne({ _id }, { writeConcern: { w: 'majority' }, timeoutMS: this._timeoutMS });
231
243
  }
232
244
  /**
233
245
  * Finds all the keys currently stored in the keyvault.
@@ -246,7 +258,7 @@ class ClientEncryption {
246
258
  return this._keyVaultClient
247
259
  .db(dbName)
248
260
  .collection(collectionName)
249
- .find({}, { readConcern: { level: 'majority' } });
261
+ .find({}, { readConcern: { level: 'majority' }, timeoutMS: this._timeoutMS });
250
262
  }
251
263
  /**
252
264
  * Finds a key in the keyvault with the specified _id.
@@ -268,7 +280,7 @@ class ClientEncryption {
268
280
  return await this._keyVaultClient
269
281
  .db(dbName)
270
282
  .collection(collectionName)
271
- .findOne({ _id }, { readConcern: { level: 'majority' } });
283
+ .findOne({ _id }, { readConcern: { level: 'majority' }, timeoutMS: this._timeoutMS });
272
284
  }
273
285
  /**
274
286
  * Finds a key in the keyvault which has the specified keyAltName.
@@ -291,7 +303,7 @@ class ClientEncryption {
291
303
  return await this._keyVaultClient
292
304
  .db(dbName)
293
305
  .collection(collectionName)
294
- .findOne({ keyAltNames: keyAltName }, { readConcern: { level: 'majority' } });
306
+ .findOne({ keyAltNames: keyAltName }, { readConcern: { level: 'majority' }, timeoutMS: this._timeoutMS });
295
307
  }
296
308
  /**
297
309
  * Adds a keyAltName to a key identified by the provided _id.
@@ -318,7 +330,7 @@ class ClientEncryption {
318
330
  const value = await this._keyVaultClient
319
331
  .db(dbName)
320
332
  .collection(collectionName)
321
- .findOneAndUpdate({ _id }, { $addToSet: { keyAltNames: keyAltName } }, { writeConcern: { w: 'majority' }, returnDocument: 'before' });
333
+ .findOneAndUpdate({ _id }, { $addToSet: { keyAltNames: keyAltName } }, { writeConcern: { w: 'majority' }, returnDocument: 'before', timeoutMS: this._timeoutMS });
322
334
  return value;
323
335
  }
324
336
  /**
@@ -373,7 +385,8 @@ class ClientEncryption {
373
385
  .collection(collectionName)
374
386
  .findOneAndUpdate({ _id }, pipeline, {
375
387
  writeConcern: { w: 'majority' },
376
- returnDocument: 'before'
388
+ returnDocument: 'before',
389
+ timeoutMS: this._timeoutMS
377
390
  });
378
391
  return value;
379
392
  }
@@ -391,12 +404,20 @@ class ClientEncryption {
391
404
  */
392
405
  async createEncryptedCollection(db, name, options) {
393
406
  const { provider, masterKey, createCollectionOptions: { encryptedFields: { ...encryptedFields }, ...createCollectionOptions } } = options;
407
+ const timeoutContext = this._timeoutMS != null
408
+ ? timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, { timeoutMS: this._timeoutMS }))
409
+ : undefined;
394
410
  if (Array.isArray(encryptedFields.fields)) {
395
411
  const createDataKeyPromises = encryptedFields.fields.map(async (field) => field == null || typeof field !== 'object' || field.keyId != null
396
412
  ? field
397
413
  : {
398
414
  ...field,
399
- keyId: await this.createDataKey(provider, { masterKey })
415
+ keyId: await this.createDataKey(provider, {
416
+ masterKey,
417
+ // clone the timeoutContext
418
+ // in order to avoid sharing the same timeout for server selection and connection checkout across different concurrent operations
419
+ timeoutContext: timeoutContext?.csotEnabled() ? timeoutContext?.clone() : undefined
420
+ })
400
421
  });
401
422
  const createDataKeyResolutions = await Promise.allSettled(createDataKeyPromises);
402
423
  encryptedFields.fields = createDataKeyResolutions.map((resolution, index) => resolution.status === 'fulfilled' ? resolution.value : encryptedFields.fields[index]);
@@ -408,7 +429,10 @@ class ClientEncryption {
408
429
  try {
409
430
  const collection = await db.createCollection(name, {
410
431
  ...createCollectionOptions,
411
- encryptedFields
432
+ encryptedFields,
433
+ timeoutMS: timeoutContext?.csotEnabled()
434
+ ? timeoutContext?.getRemainingTimeMSOrThrow()
435
+ : undefined
412
436
  });
413
437
  return { collection, encryptedFields };
414
438
  }
@@ -484,9 +508,12 @@ class ClientEncryption {
484
508
  const stateMachine = new state_machine_1.StateMachine({
485
509
  proxyOptions: this._proxyOptions,
486
510
  tlsOptions: this._tlsOptions,
487
- socketOptions: autoSelectSocketOptions(this._client.options)
511
+ socketOptions: autoSelectSocketOptions(this._client.s.options)
488
512
  });
489
- const { v } = (0, bson_1.deserialize)(await stateMachine.execute(this, context));
513
+ const timeoutContext = this._timeoutMS != null
514
+ ? timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, { timeoutMS: this._timeoutMS }))
515
+ : undefined;
516
+ const { v } = (0, bson_1.deserialize)(await stateMachine.execute(this, context, timeoutContext));
490
517
  return v;
491
518
  }
492
519
  /**
@@ -547,10 +574,13 @@ class ClientEncryption {
547
574
  const stateMachine = new state_machine_1.StateMachine({
548
575
  proxyOptions: this._proxyOptions,
549
576
  tlsOptions: this._tlsOptions,
550
- socketOptions: autoSelectSocketOptions(this._client.options)
577
+ socketOptions: autoSelectSocketOptions(this._client.s.options)
551
578
  });
552
579
  const context = this._mongoCrypt.makeExplicitEncryptionContext(valueBuffer, contextOptions);
553
- const { v } = (0, bson_1.deserialize)(await stateMachine.execute(this, context));
580
+ const timeoutContext = this._timeoutMS != null
581
+ ? timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, { timeoutMS: this._timeoutMS }))
582
+ : undefined;
583
+ const { v } = (0, bson_1.deserialize)(await stateMachine.execute(this, context, timeoutContext));
554
584
  return v;
555
585
  }
556
586
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client_encryption.js","sourceRoot":"","sources":["../../src/client-side-encryption/client_encryption.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client_encryption.js","sourceRoot":"","sources":["../../src/client-side-encryption/client_encryption.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,10 @@ const fs = require("fs/promises");
5
5
  const net = require("net");
6
6
  const tls = require("tls");
7
7
  const bson_1 = require("../bson");
8
+ const abstract_cursor_1 = require("../cursor/abstract_cursor");
8
9
  const deps_1 = require("../deps");
10
+ const error_1 = require("../error");
11
+ const timeout_1 = require("../timeout");
9
12
  const utils_1 = require("../utils");
10
13
  const client_encryption_1 = require("./client_encryption");
11
14
  const errors_1 = require("./errors");
@@ -76,6 +79,7 @@ let EMPTY_V;
76
79
  * An internal class that executes across a MongoCryptContext until either
77
80
  * a finishing state or an error is reached. Do not instantiate directly.
78
81
  */
82
+ // TODO(DRIVERS-2671): clarify CSOT behavior for FLE APIs
79
83
  class StateMachine {
80
84
  constructor(options, bsonOptions = (0, bson_1.pluckBSONSerializeOptions)(options)) {
81
85
  this.options = options;
@@ -84,7 +88,7 @@ class StateMachine {
84
88
  /**
85
89
  * Executes the state machine according to the specification
86
90
  */
87
- async execute(executor, context) {
91
+ async execute(executor, context, timeoutContext) {
88
92
  const keyVaultNamespace = executor._keyVaultNamespace;
89
93
  const keyVaultClient = executor._keyVaultClient;
90
94
  const metaDataClient = executor._metaDataClient;
@@ -99,7 +103,7 @@ class StateMachine {
99
103
  if (!metaDataClient) {
100
104
  throw new errors_1.MongoCryptError('unreachable state machine state: entered MONGOCRYPT_CTX_NEED_MONGO_COLLINFO but metadata client is undefined');
101
105
  }
102
- const collInfo = await this.fetchCollectionInfo(metaDataClient, context.ns, filter);
106
+ const collInfo = await this.fetchCollectionInfo(metaDataClient, context.ns, filter, timeoutContext);
103
107
  if (collInfo) {
104
108
  context.addMongoOperationResponse(collInfo);
105
109
  }
@@ -113,15 +117,15 @@ class StateMachine {
113
117
  }
114
118
  // When we are using the shared library, we don't have a mongocryptd manager.
115
119
  const markedCommand = mongocryptdManager
116
- ? await mongocryptdManager.withRespawn(this.markCommand.bind(this, mongocryptdClient, context.ns, command))
117
- : await this.markCommand(mongocryptdClient, context.ns, command);
120
+ ? await mongocryptdManager.withRespawn(this.markCommand.bind(this, mongocryptdClient, context.ns, command, timeoutContext))
121
+ : await this.markCommand(mongocryptdClient, context.ns, command, timeoutContext);
118
122
  context.addMongoOperationResponse(markedCommand);
119
123
  context.finishMongoOperation();
120
124
  break;
121
125
  }
122
126
  case MONGOCRYPT_CTX_NEED_MONGO_KEYS: {
123
127
  const filter = context.nextMongoOperation();
124
- const keys = await this.fetchKeys(keyVaultClient, keyVaultNamespace, filter);
128
+ const keys = await this.fetchKeys(keyVaultClient, keyVaultNamespace, filter, timeoutContext);
125
129
  if (keys.length === 0) {
126
130
  // See docs on EMPTY_V
127
131
  result = EMPTY_V ??= (0, bson_1.serialize)({ v: [] });
@@ -138,8 +142,7 @@ class StateMachine {
138
142
  break;
139
143
  }
140
144
  case MONGOCRYPT_CTX_NEED_KMS: {
141
- const requests = Array.from(this.requests(context));
142
- await Promise.all(requests);
145
+ await Promise.all(this.requests(context, timeoutContext));
143
146
  context.finishKMSRequests();
144
147
  break;
145
148
  }
@@ -172,7 +175,7 @@ class StateMachine {
172
175
  * @param kmsContext - A C++ KMS context returned from the bindings
173
176
  * @returns A promise that resolves when the KMS reply has be fully parsed
174
177
  */
175
- async kmsRequest(request) {
178
+ async kmsRequest(request, timeoutContext) {
176
179
  const parsedUrl = request.endpoint.split(':');
177
180
  const port = parsedUrl[1] != null ? Number.parseInt(parsedUrl[1], 10) : HTTPS_PORT;
178
181
  const socketOptions = (0, client_encryption_1.autoSelectSocketOptions)(this.options.socketOptions || {});
@@ -194,9 +197,6 @@ class StateMachine {
194
197
  }
195
198
  }
196
199
  }
197
- function ontimeout() {
198
- return new errors_1.MongoCryptError('KMS request timed out');
199
- }
200
200
  function onerror(cause) {
201
201
  return new errors_1.MongoCryptError('KMS request failed', { cause });
202
202
  }
@@ -222,7 +222,6 @@ class StateMachine {
222
222
  }
223
223
  const { promise: willConnect, reject: rejectOnNetSocketError, resolve: resolveOnNetSocketConnect } = (0, utils_1.promiseWithResolvers)();
224
224
  netSocket
225
- .once('timeout', () => rejectOnNetSocketError(ontimeout()))
226
225
  .once('error', err => rejectOnNetSocketError(onerror(err)))
227
226
  .once('close', () => rejectOnNetSocketError(onclose()))
228
227
  .once('connect', () => resolveOnNetSocketConnect());
@@ -260,7 +259,6 @@ class StateMachine {
260
259
  });
261
260
  const { promise: willResolveKmsRequest, reject: rejectOnTlsSocketError, resolve } = (0, utils_1.promiseWithResolvers)();
262
261
  socket
263
- .once('timeout', () => rejectOnTlsSocketError(ontimeout()))
264
262
  .once('error', err => rejectOnTlsSocketError(onerror(err)))
265
263
  .once('close', () => rejectOnTlsSocketError(onclose()))
266
264
  .on('data', data => {
@@ -273,16 +271,23 @@ class StateMachine {
273
271
  resolve();
274
272
  }
275
273
  });
276
- await willResolveKmsRequest;
274
+ await (timeoutContext?.csotEnabled()
275
+ ? Promise.all([willResolveKmsRequest, timeout_1.Timeout.expires(timeoutContext?.remainingTimeMS)])
276
+ : willResolveKmsRequest);
277
+ }
278
+ catch (error) {
279
+ if (error instanceof timeout_1.TimeoutError)
280
+ throw new error_1.MongoOperationTimeoutError('KMS request timed out');
281
+ throw error;
277
282
  }
278
283
  finally {
279
284
  // There's no need for any more activity on this socket at this point.
280
285
  destroySockets();
281
286
  }
282
287
  }
283
- *requests(context) {
288
+ *requests(context, timeoutContext) {
284
289
  for (let request = context.nextKMSRequest(); request != null; request = context.nextKMSRequest()) {
285
- yield this.kmsRequest(request);
290
+ yield this.kmsRequest(request, timeoutContext);
286
291
  }
287
292
  }
288
293
  /**
@@ -330,15 +335,17 @@ class StateMachine {
330
335
  * @param filter - A filter for the listCollections command
331
336
  * @param callback - Invoked with the info of the requested collection, or with an error
332
337
  */
333
- async fetchCollectionInfo(client, ns, filter) {
338
+ async fetchCollectionInfo(client, ns, filter, timeoutContext) {
334
339
  const { db } = utils_1.MongoDBCollectionNamespace.fromString(ns);
335
- const collections = await client
336
- .db(db)
337
- .listCollections(filter, {
340
+ const cursor = client.db(db).listCollections(filter, {
338
341
  promoteLongs: false,
339
- promoteValues: false
340
- })
341
- .toArray();
342
+ promoteValues: false,
343
+ timeoutContext: timeoutContext && new abstract_cursor_1.CursorTimeoutContext(timeoutContext, Symbol())
344
+ });
345
+ // There is always exactly zero or one matching documents, so this should always exhaust the cursor
346
+ // in a single batch. We call `toArray()` just to be safe and ensure that the cursor is always
347
+ // exhausted and closed.
348
+ const collections = await cursor.toArray();
342
349
  const info = collections.length > 0 ? (0, bson_1.serialize)(collections[0]) : null;
343
350
  return info;
344
351
  }
@@ -350,11 +357,16 @@ class StateMachine {
350
357
  * @param command - The command to execute.
351
358
  * @param callback - Invoked with the serialized and marked bson command, or with an error
352
359
  */
353
- async markCommand(client, ns, command) {
354
- const options = { promoteLongs: false, promoteValues: false };
360
+ async markCommand(client, ns, command, timeoutContext) {
355
361
  const { db } = utils_1.MongoDBCollectionNamespace.fromString(ns);
356
- const rawCommand = (0, bson_1.deserialize)(command, options);
357
- const response = await client.db(db).command(rawCommand, options);
362
+ const bsonOptions = { promoteLongs: false, promoteValues: false };
363
+ const rawCommand = (0, bson_1.deserialize)(command, bsonOptions);
364
+ const response = await client.db(db).command(rawCommand, {
365
+ ...bsonOptions,
366
+ ...(timeoutContext?.csotEnabled()
367
+ ? { timeoutMS: timeoutContext?.remainingTimeMS }
368
+ : undefined)
369
+ });
358
370
  return (0, bson_1.serialize)(response, this.bsonOptions);
359
371
  }
360
372
  /**
@@ -365,12 +377,14 @@ class StateMachine {
365
377
  * @param filter - The filter for the find query against the keyVault Collection
366
378
  * @param callback - Invoked with the found keys, or with an error
367
379
  */
368
- fetchKeys(client, keyVaultNamespace, filter) {
380
+ fetchKeys(client, keyVaultNamespace, filter, timeoutContext) {
369
381
  const { db: dbName, collection: collectionName } = utils_1.MongoDBCollectionNamespace.fromString(keyVaultNamespace);
370
382
  return client
371
383
  .db(dbName)
372
384
  .collection(collectionName, { readConcern: { level: 'majority' } })
373
- .find((0, bson_1.deserialize)(filter))
385
+ .find((0, bson_1.deserialize)(filter), {
386
+ timeoutContext: timeoutContext && new abstract_cursor_1.CursorTimeoutContext(timeoutContext, Symbol())
387
+ })
374
388
  .toArray();
375
389
  }
376
390
  }
@@ -1 +1 @@
1
- {"version":3,"file":"state_machine.js","sourceRoot":"","sources":["../../src/client-side-encryption/state_machine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state_machine.js","sourceRoot":"","sources":["../../src/client-side-encryption/state_machine.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ const mongo_types_1 = require("../mongo_types");
12
12
  const read_preference_1 = require("../read_preference");
13
13
  const common_1 = require("../sdam/common");
14
14
  const sessions_1 = require("../sessions");
15
+ const timeout_1 = require("../timeout");
15
16
  const utils_1 = require("../utils");
16
17
  const command_monitoring_events_1 = require("./command_monitoring_events");
17
18
  const commands_1 = require("./commands");
@@ -214,6 +215,11 @@ class Connection extends mongo_types_1.TypedEventEmitter {
214
215
  secondaryOk: readPreference.secondaryOk(),
215
216
  ...options
216
217
  };
218
+ if (!options.omitMaxTimeMS) {
219
+ const maxTimeMS = options.timeoutContext?.maxTimeMS;
220
+ if (maxTimeMS && maxTimeMS > 0 && Number.isFinite(maxTimeMS))
221
+ cmd.maxTimeMS = maxTimeMS;
222
+ }
217
223
  const message = this.supportsOpMsg
218
224
  ? new commands_1.OpMsgRequest(db, cmd, commandOptions)
219
225
  : new commands_1.OpQueryRequest(db, cmd, commandOptions);
@@ -221,7 +227,10 @@ class Connection extends mongo_types_1.TypedEventEmitter {
221
227
  }
222
228
  async *sendWire(message, options, responseType) {
223
229
  this.throwIfAborted();
224
- if (typeof options.socketTimeoutMS === 'number') {
230
+ if (options.timeoutContext?.csotEnabled()) {
231
+ this.socket.setTimeout(0);
232
+ }
233
+ else if (typeof options.socketTimeoutMS === 'number') {
225
234
  this.socket.setTimeout(options.socketTimeoutMS);
226
235
  }
227
236
  else if (this.socketTimeoutMS !== 0) {
@@ -230,14 +239,20 @@ class Connection extends mongo_types_1.TypedEventEmitter {
230
239
  try {
231
240
  await this.writeCommand(message, {
232
241
  agreedCompressor: this.description.compressor ?? 'none',
233
- zlibCompressionLevel: this.description.zlibCompressionLevel
242
+ zlibCompressionLevel: this.description.zlibCompressionLevel,
243
+ timeoutContext: options.timeoutContext
234
244
  });
235
245
  if (options.noResponse || message.moreToCome) {
236
246
  yield responses_1.MongoDBResponse.empty;
237
247
  return;
238
248
  }
239
249
  this.throwIfAborted();
240
- for await (const response of this.readMany()) {
250
+ if (options.timeoutContext?.csotEnabled() &&
251
+ options.timeoutContext.minRoundTripTime != null &&
252
+ options.timeoutContext.remainingTimeMS < options.timeoutContext.minRoundTripTime) {
253
+ throw new error_1.MongoOperationTimeoutError('Server roundtrip time is greater than the time remaining');
254
+ }
255
+ for await (const response of this.readMany({ timeoutContext: options.timeoutContext })) {
241
256
  this.socket.setTimeout(0);
242
257
  const bson = response.parse();
243
258
  const document = (responseType ?? responses_1.MongoDBResponse).make(bson);
@@ -287,6 +302,11 @@ class Connection extends mongo_types_1.TypedEventEmitter {
287
302
  this.emit(Connection.CLUSTER_TIME_RECEIVED, document.$clusterTime);
288
303
  }
289
304
  if (document.ok === 0) {
305
+ if (options.timeoutContext?.csotEnabled() && document.isMaxTimeExpiredError) {
306
+ throw new error_1.MongoOperationTimeoutError('Server reported a timeout error', {
307
+ cause: new error_1.MongoServerError((object ??= document.toObject(bsonOptions)))
308
+ });
309
+ }
290
310
  throw new error_1.MongoServerError((object ??= document.toObject(bsonOptions)));
291
311
  }
292
312
  if (this.shouldEmitAndLogCommand) {
@@ -315,6 +335,24 @@ class Connection extends mongo_types_1.TypedEventEmitter {
315
335
  async command(ns, command, options = {}, responseType) {
316
336
  this.throwIfAborted();
317
337
  for await (const document of this.sendCommand(ns, command, options, responseType)) {
338
+ if (options.timeoutContext?.csotEnabled()) {
339
+ if (responses_1.MongoDBResponse.is(document)) {
340
+ if (document.isMaxTimeExpiredError) {
341
+ throw new error_1.MongoOperationTimeoutError('Server reported a timeout error', {
342
+ cause: new error_1.MongoServerError(document.toObject())
343
+ });
344
+ }
345
+ }
346
+ else {
347
+ if ((Array.isArray(document?.writeErrors) &&
348
+ document.writeErrors.some(error => error?.code === error_1.MONGODB_ERROR_CODES.MaxTimeMSExpired)) ||
349
+ document?.writeConcernError?.code === error_1.MONGODB_ERROR_CODES.MaxTimeMSExpired) {
350
+ throw new error_1.MongoOperationTimeoutError('Server reported a timeout error', {
351
+ cause: new error_1.MongoServerError(document)
352
+ });
353
+ }
354
+ }
355
+ }
318
356
  return document;
319
357
  }
320
358
  throw new error_1.MongoUnexpectedServerResponseError('Unable to get response from server');
@@ -348,9 +386,33 @@ class Connection extends mongo_types_1.TypedEventEmitter {
348
386
  zlibCompressionLevel: options.zlibCompressionLevel ?? 0
349
387
  });
350
388
  const buffer = Buffer.concat(await finalCommand.toBin());
389
+ if (options.timeoutContext?.csotEnabled()) {
390
+ if (options.timeoutContext.minRoundTripTime != null &&
391
+ options.timeoutContext.remainingTimeMS < options.timeoutContext.minRoundTripTime) {
392
+ throw new error_1.MongoOperationTimeoutError('Server roundtrip time is greater than the time remaining');
393
+ }
394
+ }
351
395
  if (this.socket.write(buffer))
352
396
  return;
353
- return await (0, utils_1.once)(this.socket, 'drain');
397
+ const drainEvent = (0, utils_1.once)(this.socket, 'drain');
398
+ const timeout = options?.timeoutContext?.timeoutForSocketWrite;
399
+ if (timeout) {
400
+ try {
401
+ return await Promise.race([drainEvent, timeout]);
402
+ }
403
+ catch (error) {
404
+ let err = error;
405
+ if (timeout_1.TimeoutError.is(error)) {
406
+ err = new error_1.MongoOperationTimeoutError('Timed out at socket write');
407
+ this.cleanup(err);
408
+ }
409
+ throw error;
410
+ }
411
+ finally {
412
+ timeout.clear();
413
+ }
414
+ }
415
+ return await drainEvent;
354
416
  }
355
417
  /**
356
418
  * @internal
@@ -361,9 +423,9 @@ class Connection extends mongo_types_1.TypedEventEmitter {
361
423
  *
362
424
  * Note that `for-await` loops call `return` automatically when the loop is exited.
363
425
  */
364
- async *readMany() {
426
+ async *readMany(options) {
365
427
  try {
366
- this.dataEvents = (0, on_data_1.onData)(this.messageStream);
428
+ this.dataEvents = (0, on_data_1.onData)(this.messageStream, options);
367
429
  this.messageStream.resume();
368
430
  for await (const message of this.dataEvents) {
369
431
  const response = await (0, compression_1.decompressResponse)(message);
@@ -373,6 +435,16 @@ class Connection extends mongo_types_1.TypedEventEmitter {
373
435
  }
374
436
  }
375
437
  }
438
+ catch (readError) {
439
+ const err = readError;
440
+ if (timeout_1.TimeoutError.is(readError)) {
441
+ const error = new error_1.MongoOperationTimeoutError(`Timed out during socket read (${readError.duration}ms)`);
442
+ this.dataEvents = null;
443
+ this.onError(error);
444
+ throw error;
445
+ }
446
+ throw err;
447
+ }
376
448
  finally {
377
449
  this.dataEvents = null;
378
450
  this.messageStream.pause();