Skip to content

Commit

Permalink
deprecate legacy timeout options
Browse files Browse the repository at this point in the history
  • Loading branch information
W-A-James committed Oct 15, 2024
1 parent 6686768 commit 54c72aa
Show file tree
Hide file tree
Showing 14 changed files with 29 additions and 13 deletions.
2 changes: 2 additions & 0 deletions src/connection_string.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1099,6 +1099,7 @@ export const OPTIONS = {
type: 'string'
},
socketTimeoutMS: {
deprecated: 'Please use timeoutMS instead',
default: 0,
type: 'uint'
},
Expand Down Expand Up @@ -1169,6 +1170,7 @@ export const OPTIONS = {
}
},
waitQueueTimeoutMS: {
deprecated: 'Please use timeoutMS instead',
default: 0,
type: 'uint'
},
Expand Down
2 changes: 2 additions & 0 deletions src/cursor/abstract_cursor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ export interface AbstractCursorOptions extends BSONSerializeOptions {
/**
* When applicable `maxTimeMS` controls the amount of time the initial command
* that constructs a cursor should take. (ex. find, aggregate, listCollections)
* @deprecated Will be removed in the next major version. Please use timeoutMS instead.
*/
maxTimeMS?: number;
/**
Expand Down Expand Up @@ -721,6 +722,7 @@ export abstract class AbstractCursor<
* Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
*
* @param value - Number of milliseconds to wait before aborting the query.
* @deprecated Will be removed in the next major version. Please use the timeoutMS option instead.
*/
maxTimeMS(value: number): this {
this.throwIfInitialized();
Expand Down
1 change: 1 addition & 0 deletions src/cursor/find_cursor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@ export class FindCursor<TSchema = any> extends AbstractCursor<TSchema> {
* Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
*
* @param value - Number of milliseconds to wait before aborting the query.
*@deprecated Will be removed in the next major version. Please use timeoutMS instead.
*/
override maxTimeMS(value: number): this {
this.throwIfInitialized();
Expand Down
6 changes: 4 additions & 2 deletions src/cursor/run_command_cursor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export class RunCommandCursor extends AbstractCursor {
/**
* Controls the `getMore.maxTimeMS` field. Only valid when cursor is tailable await
* @param maxTimeMS - the number of milliseconds to wait for new data
* @deprecated Will be removed in the next major version. Please use timeoutMS instead.
*/
public setMaxTimeMS(maxTimeMS: number): this {
this.getMoreOptions.maxAwaitTimeMS = maxTimeMS;
Expand All @@ -56,7 +57,7 @@ export class RunCommandCursor extends AbstractCursor {

/**
* Controls the `getMore.batchSize` field
* @param maxTimeMS - the number documents to return in the `nextBatch`
* @param batchSize - the number documents to return in the `nextBatch`
*/
public setBatchSize(batchSize: number): this {
this.getMoreOptions.batchSize = batchSize;
Expand All @@ -82,7 +83,8 @@ export class RunCommandCursor extends AbstractCursor {
);
}

/** Unsupported for RunCommandCursor: maxTimeMS must be configured directly on command document */
/** Unsupported for RunCommandCursor: maxTimeMS must be configured directly on command document
* @deprecated Will be removed in the next major version. */
public override maxTimeMS(_: number): never {
throw new MongoAPIError(
'maxTimeMS must be configured on the command document directly, to configure getMore.maxTimeMS use cursor.setMaxTimeMS()'
Expand Down
3 changes: 2 additions & 1 deletion src/explain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ export type ExplainVerbosityLike = ExplainVerbosity | boolean;
export interface ExplainCommandOptions {
/** The explain verbosity for the command. */
verbosity: ExplainVerbosity;
/** The maxTimeMS setting for the command. */
/** The maxTimeMS setting for the command.
* @deprecated Will be removed in the next major version. Please use timeoutMS instead.*/
maxTimeMS?: number;
}

Expand Down
6 changes: 4 additions & 2 deletions src/mongo_client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,8 @@ export interface MongoClientOptions extends BSONSerializeOptions, SupportedNodeC
tlsInsecure?: boolean;
/** The time in milliseconds to attempt a connection before timing out. */
connectTimeoutMS?: number;
/** The time in milliseconds to attempt a send or receive on a socket before the attempt times out. */
/** The time in milliseconds to attempt a send or receive on a socket before the attempt times out.
* @deprecated Will be removed in the next major version. Please use timeoutMS instead */
socketTimeoutMS?: number;
/** An array or comma-delimited string of compressors to enable network compression for communication between this client and a mongod/mongos instance. */
compressors?: CompressorName[] | string;
Expand All @@ -176,7 +177,8 @@ export interface MongoClientOptions extends BSONSerializeOptions, SupportedNodeC
maxConnecting?: number;
/** The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed. */
maxIdleTimeMS?: number;
/** The maximum time in milliseconds that a thread can wait for a connection to become available. */
/** The maximum time in milliseconds that a thread can wait for a connection to become available.
* @deprecated Will be removed in the next major version. Please use timeoutMS instead */
waitQueueTimeoutMS?: number;
/** Specify a read concern for the collection (only MongoDB 3.2 or higher supported) */
readConcern?: ReadConcernLike;
Expand Down
3 changes: 2 additions & 1 deletion src/operations/aggregate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ export interface AggregateOptions extends Omit<CommandOperationOptions, 'explain
bypassDocumentValidation?: boolean;
/** Return the query as cursor, on 2.6 \> it returns as a real cursor on pre 2.6 it returns as an emulated cursor. */
cursor?: Document;
/** specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point. */
/** specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point.
* @deprecated Will be removed in the next major version. Please use timeoutMS instead.*/
maxTimeMS?: number;
/** The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. */
maxAwaitTimeMS?: number;
Expand Down
2 changes: 2 additions & 0 deletions src/operations/command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ export interface CommandOperationOptions
readConcern?: ReadConcernLike;
/** Collation */
collation?: CollationOptions;
/**
* @deprecated Will be removed in the next major version. Please use timeoutMS instead. */
maxTimeMS?: number;
/**
* Comment to apply to the operation.
Expand Down
3 changes: 2 additions & 1 deletion src/operations/count.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ export interface CountOptions extends CommandOperationOptions {
skip?: number;
/** The maximum amounts to count before aborting. */
limit?: number;
/** Number of milliseconds to wait before aborting the query. */
/** Number of milliseconds to wait before aborting the query.
* @deprecated Will be removed in the next major version. Please use timeoutMS instead. */
maxTimeMS?: number;
/** An index name hint for the query. */
hint?: string | Document;
Expand Down
1 change: 1 addition & 0 deletions src/operations/estimated_document_count.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export interface EstimatedDocumentCountOptions extends CommandOperationOptions {
* The maximum amount of time to allow the operation to run.
*
* This option is sent only if the caller explicitly provides a value. The default is to not send a value.
*@deprecated Will be removed in the next major version. Please use timeoutMS instead.
*/
maxTimeMS?: number;
}
Expand Down
4 changes: 2 additions & 2 deletions src/operations/find.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ export interface FindOptions<TSchema extends Document = Document>
min?: Document;
/** The exclusive upper bound for a specific index */
max?: Document;
/** Number of milliseconds to wait before aborting the query. */
/** Number of milliseconds to wait before aborting the query.
* @deprecated Will be removed in the next major version. Please use timeoutMS instead. */
maxTimeMS?: number;
/** The maximum amount of time for the server to wait on new documents to satisfy a tailable cursor query. Requires `tailable` and `awaitData` to be true */
maxAwaitTimeMS?: number;
Expand Down Expand Up @@ -73,7 +74,6 @@ export interface FindOptions<TSchema extends Document = Document>
* @deprecated This API is deprecated in favor of `collection.find().explain()`.
*/
explain?: ExplainOptions['explain'];
/** @internal*/
timeoutMode?: CursorTimeoutMode;
}

Expand Down
2 changes: 1 addition & 1 deletion src/operations/get_more.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export interface GetMoreOptions extends OperationOptions {
* getMore only supports 'comment' in server versions 4.4 and above.
*/
comment?: unknown;
/** Number of milliseconds to wait before aborting the query. */
/** Number of milliseconds to wait before aborting the query.
maxTimeMS?: number;
/** TODO(NODE-4413): Address bug with maxAwaitTimeMS not being passed in from the cursor correctly */
maxAwaitTimeMS?: number;
Expand Down
1 change: 0 additions & 1 deletion src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,6 @@ export function resolveOptions<T extends CommandOperationOptions>(
result.timeoutMS = options?.timeoutMS ?? parent?.timeoutMS;
if (result.timeoutMS != null && result.writeConcern) {
const matchOptions = new Set(['wtimeout', 'wtimeoutMS']);
console.log(result.writeConcern);
const writeConcernKeys = Object.keys(result.writeConcern);
if (writeConcernKeys.length <= 2 && writeConcernKeys.every(k => matchOptions.has(k))) {
delete result.writeConcern;
Expand Down
6 changes: 4 additions & 2 deletions src/write_concern.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ export interface WriteConcernOptions {
export interface WriteConcernSettings {
/** The write concern */
w?: W;
/** The write concern timeout */
/** The write concern timeout
* @deprecated Will be removed in the next major version. Please use timeoutMS */
wtimeoutMS?: number;
/** The journal write concern */
journal?: boolean;
Expand Down Expand Up @@ -65,7 +66,8 @@ export class WriteConcern {
readonly w?: W;
/** Request acknowledgment that the write operation has been written to the on-disk journal */
readonly journal?: boolean;
/** Specify a time limit to prevent write operations from blocking indefinitely */
/** Specify a time limit to prevent write operations from blocking indefinitely
* @deprecated Will be removed in the next major version. Please use timeoutMS */
readonly wtimeoutMS?: number;
/**
* Specify a time limit to prevent write operations from blocking indefinitely.
Expand Down

0 comments on commit 54c72aa

Please sign in to comment.