From 5e5569ff98feb0a2be1e9462574c99d1dc8a94ff Mon Sep 17 00:00:00 2001
From: gnaegi <gnaegi@eames.fritz.box>
Date: Fri, 10 Apr 2020 09:01:37 +0200
Subject: [PATCH] OO-4631 random compare for same bbb server load for random
 distribution

---
 .../bigbluebutton/manager/BigBlueButtonManagerImpl.java     | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
index b0729b211f5..b0becb11098 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java
@@ -27,6 +27,7 @@ import java.util.Comparator;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -794,7 +795,10 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ
 		public int compare(BigBlueButtonServerInfos o1, BigBlueButtonServerInfos o2) {
 			double l1 = o1.getLoad();
 			double l2 = o2.getLoad();
-			return Double.compare(l1, l2);
+			if (l1 == l2) {
+				// random order for same load for equal distribution of server usage
+				return (new Random().nextBoolean() ? 1 : -1);
+			}			return Double.compare(l1, l2);
 		}
 	}
 	
-- 
GitLab