aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2023-06-22 15:02:27 +0200
committerChocobozzz <me@florianbigard.com>2023-06-29 10:19:55 +0200
commitbc3918b2aed033e1c7617c0610e2e363c9e605db (patch)
tree05ca587ae4d033d456c9e3c8cd32ce9fb15c28bd /shared
parent19aeb64b257efc4e1218786bd7debbb8dbe7a8ff (diff)
downloadPeerTube-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.ts14
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
24function 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
23export { 36export {
24 uniqify, 37 uniqify,
25 findCommonElement, 38 findCommonElement,
39 shuffle,
26 arrayify 40 arrayify
27} 41}