X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Futils.ts;h=33ec019db92c46688615be01bd8a59573c0b2457;hb=56ea99c2ba591a9797a21e317d666b0f8bce8a66;hp=b5fb9afeda348ddd15e9c441a3c23d67c07ffeb0;hpb=68cbdc846878bc058323b757a68b4c83eedc6388;p=poolifier.git diff --git a/src/utils.ts b/src/utils.ts index b5fb9afe..33ec019d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,4 +1,5 @@ import * as os from 'node:os' +import * as crypto from 'node:crypto' import type { MeasurementStatisticsRequirements, WorkerChoiceStrategyOptions @@ -75,16 +76,16 @@ export const sleep = async (ms: number): Promise => { * Computes the retry delay in milliseconds using an exponential back off algorithm. * * @param retryNumber - The number of retries that have already been attempted - * @param maxDelayRatio - The maximum ratio of the delay that can be randomized + * @param delayFactor - The base delay factor in milliseconds * @returns Delay in milliseconds * @internal */ export const exponentialDelay = ( retryNumber = 0, - maxDelayRatio = 0.2 + delayFactor = 100 ): number => { - const delay = Math.pow(2, retryNumber) * 100 - const randomSum = delay * maxDelayRatio * secureRandom() // 0-(maxDelayRatio*100)% of the delay + const delay = Math.pow(2, retryNumber) * delayFactor + const randomSum = delay * 0.2 * secureRandom() // 0-20% of the delay return delay + randomSum } @@ -252,6 +253,6 @@ export const once = ( * * @returns A number in the [0,1[ range */ -const secureRandom = (): number => { +export const secureRandom = (): number => { return crypto.getRandomValues(new Uint32Array(1))[0] / 0x100000000 }