Skip to content
This repository was archived by the owner on Feb 4, 2022. It is now read-only.

Commit 8f48b89

Browse files
committedOct 6, 2017
fix(server-session-pool): don't add expired sessions to the pool
NODE-1088
1 parent 933ab7f commit 8f48b89

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed
 

‎lib/sessions.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class ServerSession {
8888
(((Date.now() - this.lastUse) % 86400000) % 3600000) / 60000
8989
);
9090

91-
return idleTimeMinutes > sessionTimeoutMinutes;
91+
return idleTimeMinutes > sessionTimeoutMinutes - 1;
9292
}
9393
}
9494

@@ -135,7 +135,9 @@ class ServerSessionPool {
135135
}
136136
}
137137

138-
this.sessions.push(session);
138+
if (!session.hasTimedOut(sessionTimeoutMinutes)) {
139+
this.sessions.push(session);
140+
}
139141
}
140142
}
141143

‎test/tests/unit/sessions_tests.js

+14
Original file line numberDiff line numberDiff line change
@@ -155,5 +155,19 @@ describe('Sessions', function() {
155155
done();
156156
}
157157
});
158+
159+
it('should not reintroduce a soon-to-expire session to the pool on release', {
160+
metadata: { requires: { topology: 'single' } },
161+
162+
test: function(done) {
163+
const session = new ServerSession();
164+
session.lastUse = new Date(Date.now() - 9.5 * 60 * 1000).getTime(); // add 9.5min
165+
166+
const pool = new ServerSessionPool(test.client);
167+
pool.release(session);
168+
expect(pool.sessions).to.have.length(0);
169+
done();
170+
}
171+
});
158172
});
159173
});

‎test/tests/unit/single/sessions_tests.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ describe('Sessions (Single)', function() {
230230
sentIsMaster = true;
231231
request.reply(
232232
assign({}, mock.DEFAULT_ISMASTER, {
233-
maxWireVersion: 6
233+
maxWireVersion: 6,
234+
logicalSessionTimeoutMinutes: 10
234235
})
235236
);
236237
});

0 commit comments

Comments
 (0)