Skip to content

Commit 3a9752f

Browse files
committed
fix(NODE-4444): use Node.js clear timers
This change follows on from mongodb#3275 which enforced using Node.js timer methods. However, it didn't enforce using the Node.js _clear_ methods, which could fall prey to similar issues. This change adds linter rules for those clear methods, and fixes the resulting linter errors.
1 parent 4aa9d9d commit 3a9752f

File tree

10 files changed

+22
-8
lines changed

10 files changed

+22
-8
lines changed

.eslintrc.json

+12
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,18 @@
4141
],
4242
"no-restricted-globals": [
4343
"error",
44+
{
45+
"name": "clearTimeout",
46+
"message": "Use `import { clearTimeout } from 'timers';` instead"
47+
},
48+
{
49+
"name": "clearImmediate",
50+
"message": "Use `import { clearImmediate } from 'timers';` instead"
51+
},
52+
{
53+
"name": "clearInterval",
54+
"message": "Use `import { clearInterval } from 'timers';` instead"
55+
},
4456
{
4557
"name": "setTimeout",
4658
"message": "Use `import { setTimeout } from 'timers';` instead"

src/cmap/connection.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { setTimeout } from 'timers';
1+
import { clearTimeout, setTimeout } from 'timers';
22

33
import type { BSONSerializeOptions, Document, ObjectId } from '../bson';
44
import {

src/cmap/connection_pool.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Denque = require('denque');
2-
import { setTimeout } from 'timers';
2+
import { clearTimeout, setTimeout } from 'timers';
33

44
import type { ObjectId } from '../bson';
55
import {

src/sdam/common.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { clearTimeout } from 'timers';
2+
13
import type { Binary, Long, Timestamp } from '../bson';
24
import type { ClientSession } from '../sessions';
35
import type { Topology } from './topology';

src/sdam/monitor.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { setTimeout } from 'timers';
1+
import { clearTimeout, setTimeout } from 'timers';
22

33
import { Document, Long } from '../bson';
44
import { connect } from '../cmap/connect';

src/sdam/srv_polling.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as dns from 'dns';
2-
import { setTimeout } from 'timers';
2+
import { clearTimeout, setTimeout } from 'timers';
33

44
import { MongoRuntimeError } from '../error';
55
import { Logger, LoggerOptions } from '../logger';

src/sdam/topology.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Denque = require('denque');
2-
import { setTimeout } from 'timers';
2+
import { clearTimeout, setTimeout } from 'timers';
33
import { promisify } from 'util';
44

55
import type { BSONSerializeOptions, Document } from '../bson';

src/utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as crypto from 'crypto';
22
import type { SrvRecord } from 'dns';
33
import * as os from 'os';
4-
import { setTimeout } from 'timers';
4+
import { clearTimeout, setTimeout } from 'timers';
55
import { URL } from 'url';
66

77
import { Document, ObjectId, resolveBSONOptions } from './bson';

test/integration/objectid.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var test = require('./shared').assert;
33
const { expect } = require('chai');
44
var setupDatabase = require('./shared').setupDatabase;
55
const { ObjectId } = require('../../src');
6-
const { setInterval } = require('timers');
6+
const { clearInterval, setInterval } = require('timers');
77
const { sleep } = require('../tools/utils');
88

99
describe('ObjectId', function () {

test/unit/sdam/topology.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const { setTimeout } = require('timers');
3+
const { clearTimeout, setTimeout } = require('timers');
44
const mock = require('../../tools/mongodb-mock/index');
55
const { expect } = require('chai');
66
const sinon = require('sinon');

0 commit comments

Comments
 (0)