diff options
author | Chocobozzz <me@florianbigard.com> | 2023-06-22 15:02:27 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2023-06-29 10:19:55 +0200 |
commit | bc3918b2aed033e1c7617c0610e2e363c9e605db (patch) | |
tree | 05ca587ae4d033d456c9e3c8cd32ce9fb15c28bd /shared | |
parent | 19aeb64b257efc4e1218786bd7debbb8dbe7a8ff (diff) | |
download | PeerTube-bc3918b2aed033e1c7617c0610e2e363c9e605db.tar.gz PeerTube-bc3918b2aed033e1c7617c0610e2e363c9e605db.tar.zst PeerTube-bc3918b2aed033e1c7617c0610e2e363c9e605db.zip |
Shuffle servers when checking available jobs
To not favour a specific instance
Diffstat (limited to 'shared')
-rw-r--r-- | shared/core-utils/common/array.ts | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/shared/core-utils/common/array.ts b/shared/core-utils/common/array.ts index e1b422165..878ed1ffe 100644 --- a/shared/core-utils/common/array.ts +++ b/shared/core-utils/common/array.ts | |||
@@ -20,8 +20,22 @@ function uniqify <T> (elements: T[]) { | |||
20 | return Array.from(new Set(elements)) | 20 | return Array.from(new Set(elements)) |
21 | } | 21 | } |
22 | 22 | ||
23 | // Thanks: https://stackoverflow.com/a/12646864 | ||
24 | function shuffle <T> (elements: T[]) { | ||
25 | const shuffled = [ ...elements ] | ||
26 | |||
27 | for (let i = shuffled.length - 1; i > 0; i--) { | ||
28 | const j = Math.floor(Math.random() * (i + 1)); | ||
29 | |||
30 | [ shuffled[i], shuffled[j] ] = [ shuffled[j], shuffled[i] ] | ||
31 | } | ||
32 | |||
33 | return shuffled | ||
34 | } | ||
35 | |||
23 | export { | 36 | export { |
24 | uniqify, | 37 | uniqify, |
25 | findCommonElement, | 38 | findCommonElement, |
39 | shuffle, | ||
26 | arrayify | 40 | arrayify |
27 | } | 41 | } |