From bb27f6a44cfddad960d0ae4fc6855a28738ae94d Mon Sep 17 00:00:00 2001 From: Hank Wikle Date: Wed, 19 Jun 2024 09:36:41 -0600 Subject: [PATCH 1/2] Fix division by zero --- lib/pavilion/schedulers/advanced.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/pavilion/schedulers/advanced.py b/lib/pavilion/schedulers/advanced.py index f6ff2a4e5..d6d2bb26b 100644 --- a/lib/pavilion/schedulers/advanced.py +++ b/lib/pavilion/schedulers/advanced.py @@ -338,16 +338,20 @@ def _get_chunks(self, node_list_id, sched_config) -> List[NodeSet]: nodes.remove(node) chunk_size = chunk_size - len(include_nodes) - chunks = [] - for i in range(len(nodes)//chunk_size): - # Apply the selection function and get our chunk nodes. - chunk = self.NODE_SELECTION[node_select](nodes, chunk_size) - # Filter out any chosen from our node list. - nodes = [node for node in nodes if node not in chunk] - - # Add the 'include_nodes' to every chunk. - chunk = include_nodes + chunk - chunks.append(chunk) + if len(nodes) == chunk_size: + chunks = include_nodes + else: + chunks = [] + + for i in range(len(nodes)//chunk_size): + # Apply the selection function and get our chunk nodes. + chunk = self.NODE_SELECTION[node_select](nodes, chunk_size) + # Filter out any chosen from our node list. + nodes = [node for node in nodes if node not in chunk] + + # Add the 'include_nodes' to every chunk. + chunk = include_nodes + chunk + chunks.append(chunk) if nodes and chunk_extra == BACKFILL: backfill = chunks[-1][:chunk_size - len(nodes)] From f579d108ddfcefebe03608d5f5d915b00e4b504d Mon Sep 17 00:00:00 2001 From: Hank Wikle Date: Wed, 19 Jun 2024 10:07:49 -0600 Subject: [PATCH 2/2] Correction to previous commit --- lib/pavilion/schedulers/advanced.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pavilion/schedulers/advanced.py b/lib/pavilion/schedulers/advanced.py index d6d2bb26b..6e01d3da2 100644 --- a/lib/pavilion/schedulers/advanced.py +++ b/lib/pavilion/schedulers/advanced.py @@ -336,11 +336,11 @@ def _get_chunks(self, node_list_id, sched_config) -> List[NodeSet]: for node in include_nodes: if node in nodes: nodes.remove(node) - chunk_size = chunk_size - len(include_nodes) if len(nodes) == chunk_size: chunks = include_nodes else: + chunk_size = chunk_size - len(include_nodes) chunks = [] for i in range(len(nodes)//chunk_size):