X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fabstract-pool.ts;h=c699b5282a7c0b862a4cc16b63ee5dd34637a643;hb=b7cfced1c598a7516592d9b85c8198916c34c43c;hp=687ae25f7f43154b484fafc27bb27ea7102b3961;hpb=21f710aa73abbb5d90328cfb199adfc0f7a70406;p=poolifier.git diff --git a/src/pools/abstract-pool.ts b/src/pools/abstract-pool.ts index 687ae25f..c699b528 100644 --- a/src/pools/abstract-pool.ts +++ b/src/pools/abstract-pool.ts @@ -158,18 +158,20 @@ export abstract class AbstractPool< } protected checkDynamicPoolSize (min: number, max: number): void { - if (this.type === PoolTypes.dynamic && min > max) { - throw new RangeError( - 'Cannot instantiate a dynamic pool with a maximum pool size inferior to the minimum pool size' - ) - } else if (this.type === PoolTypes.dynamic && min === 0 && max === 0) { - throw new RangeError( - 'Cannot instantiate a dynamic pool with a minimum pool size and a maximum pool size equal to zero' - ) - } else if (this.type === PoolTypes.dynamic && min === max) { - throw new RangeError( - 'Cannot instantiate a dynamic pool with a minimum pool size equal to the maximum pool size. Use a fixed pool instead' - ) + if (this.type === PoolTypes.dynamic) { + if (min > max) { + throw new RangeError( + 'Cannot instantiate a dynamic pool with a maximum pool size inferior to the minimum pool size' + ) + } else if (min === 0 && max === 0) { + throw new RangeError( + 'Cannot instantiate a dynamic pool with a minimum pool size and a maximum pool size equal to zero' + ) + } else if (min === max) { + throw new RangeError( + 'Cannot instantiate a dynamic pool with a minimum pool size equal to the maximum pool size. Use a fixed pool instead' + ) + } } } @@ -401,14 +403,16 @@ export abstract class AbstractPool< private get starting (): boolean { return ( - !this.full || - (this.full && this.workerNodes.some(workerNode => !workerNode.info.ready)) + this.workerNodes.length < this.minSize || + (this.workerNodes.length >= this.minSize && + this.workerNodes.some(workerNode => !workerNode.info.ready)) ) } private get ready (): boolean { return ( - this.full && this.workerNodes.every(workerNode => workerNode.info.ready) + this.workerNodes.length >= this.minSize && + this.workerNodes.every(workerNode => workerNode.info.ready) ) }