Skip to content

Commit db0977a

Browse files
committed
Merge branch 1.7 into 2.0
2 parents d56026b + 1a6e4d7 commit db0977a

File tree

4 files changed

+59
-1
lines changed

4 files changed

+59
-1
lines changed

src/internal/pool.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,10 @@ class Pool {
210210
if (this._installIdleObserver) {
211211
this._installIdleObserver(resource, {
212212
onError: () => {
213-
this._pools[key] = this._pools[key].filter(r => r !== resource)
213+
const pool = this._pools[key]
214+
if (pool) {
215+
this._pools[key] = pool.filter(r => r !== resource)
216+
}
214217
this._destroy(resource)
215218
}
216219
})
@@ -235,6 +238,9 @@ class Pool {
235238
const pool = this._pools[key] || []
236239
while (pool.length) {
237240
const resource = pool.pop()
241+
if (this._removeIdleObserver) {
242+
this._removeIdleObserver(resource)
243+
}
238244
this._destroy(resource)
239245
}
240246
delete this._pools[key]

test/internal/connection-providers.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ describe('DirectConnectionProvider', () => {
5151
})
5252

5353
describe('LoadBalancer', () => {
54+
let originalTimeout
55+
beforeEach(function () {
56+
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL
57+
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000
58+
})
59+
60+
afterEach(function () {
61+
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout
62+
})
63+
5464
const server0 = ServerAddress.fromUrl('server0')
5565
const server1 = ServerAddress.fromUrl('server1')
5666
const server2 = ServerAddress.fromUrl('server2')

test/internal/http/http-request-runner.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ const VALID_URI = 'http://localhost'
2828
const INVALID_URI = 'http://not-localhost'
2929

3030
describe('http request runner', () => {
31+
let originalTimeout
32+
beforeEach(function () {
33+
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL
34+
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000
35+
})
36+
37+
afterEach(function () {
38+
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout
39+
})
40+
3141
it('should begin transaction', done => {
3242
if (testUtils.isServer()) {
3343
done()

test/internal/pool.test.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,38 @@ describe('Pool', () => {
853853
})
854854
})
855855
})
856+
857+
it('should clean-up idle observer on purge', done => {
858+
const address = ServerAddress.fromUrl('bolt://localhost:7687')
859+
let resourceCount = 0
860+
861+
const pool = new Pool({
862+
create: (server, release) =>
863+
Promise.resolve(new Resource(server, resourceCount++, release)),
864+
destroy: resource => {},
865+
validate: resource => true,
866+
installIdleObserver: (resource, observer) => {
867+
resource['observer'] = observer
868+
},
869+
removeIdleObserver: resource => {
870+
delete resource['observer']
871+
}
872+
})
873+
874+
pool.acquire(address).then(resource1 => {
875+
pool.acquire(address).then(resource2 => {
876+
resource1.close()
877+
resource2.close()
878+
879+
pool.purge(address)
880+
881+
expect(resource1['observer']).toBeFalsy()
882+
expect(resource2['observer']).toBeFalsy()
883+
884+
done()
885+
})
886+
})
887+
})
856888
})
857889

858890
function expectNoPendingAcquisitionRequests (pool) {

0 commit comments

Comments
 (0)