summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-03-10 19:41:24 +0000
committerGerrit Code Review <review@openstack.org>2021-03-10 19:41:24 +0000
commit29e9d1fa997450e532fe68a7efd5019b12c1dc5b (patch)
treef22a2a6e01f8b65d78cd3e1355b86087d637facd
parentedcc55b1e9732efe37a5a0ab0ee7dc9a80ecaf0c (diff)
parenta160d10735c62e046b72e31e8eb7756c5f06e09f (diff)
downloadgear-29e9d1fa997450e532fe68a7efd5019b12c1dc5b.tar.gz
Merge "wakeConnections: Randomize connections before scanning them"
-rw-r--r--gear/__init__.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/gear/__init__.py b/gear/__init__.py
index 6201ad6..6287281 100644
--- a/gear/__init__.py
+++ b/gear/__init__.py
@@ -15,6 +15,7 @@
import errno
import logging
import os
+import random
import select
import six
import socket
@@ -3298,7 +3299,13 @@ class Server(BaseClientServer):
def wakeConnections(self, job=None):
p = Packet(constants.RES, constants.NOOP, b'')
- for connection in self.active_connections:
+
+ # Use a randomized copy of active_connections to try
+ # to spread workload across the machines that workers are on.
+ conns = self.active_connections[:]
+ random.shuffle(conns) # Modifies the list
+
+ for connection in conns:
if connection.state == 'SLEEP':
if ((job and job.name in connection.functions) or
(job is None)):