@@ -73,11 +73,18 @@ class Pool {
7373 const key = address . asKey ( )
7474
7575 if ( resource ) {
76- resourceAcquired ( key , this . _activeResourceCounts )
77- if ( this . _log . isDebugEnabled ( ) ) {
78- this . _log . debug ( `${ resource } acquired from the pool ${ key } ` )
76+ if (
77+ this . _maxSize &&
78+ this . activeResourceCount ( address ) >= this . _maxSize
79+ ) {
80+ this . _destroy ( resource )
81+ } else {
82+ resourceAcquired ( key , this . _activeResourceCounts )
83+ if ( this . _log . isDebugEnabled ( ) ) {
84+ this . _log . debug ( `${ resource } acquired from the pool ${ key } ` )
85+ }
86+ return resource
7987 }
80- return resource
8188 }
8289
8390 // We're out of resources and will try to acquire later on when an existing resource is released.
@@ -104,11 +111,11 @@ class Pool {
104111 // request already resolved/rejected by the release operation; nothing to do
105112 } else {
106113 // request is still pending and needs to be failed
114+ const activeCount = this . activeResourceCount ( address )
115+ const idleCount = this . has ( address ) ? this . _pools [ key ] . length : 0
107116 request . reject (
108117 newError (
109- `Connection acquisition timed out in ${
110- this . _acquisitionTimeout
111- } ms.`
118+ `Connection acquisition timed out in ${ this . _acquisitionTimeout } ms. Poos status: Active conn count = ${ activeCount } , Idle conn count = ${ idleCount } .`
112119 )
113120 )
114121 }
@@ -218,7 +225,10 @@ class Pool {
218225 } else {
219226 if ( this . _installIdleObserver ) {
220227 this . _installIdleObserver ( resource , {
221- onError : ( ) => {
228+ onError : error => {
229+ this . _log . debug (
230+ `Idle connection ${ resource } destroyed because of error: ${ error } `
231+ )
222232 const pool = this . _pools [ key ]
223233 if ( pool ) {
224234 this . _pools [ key ] = pool . filter ( r => r !== resource )
0 commit comments