From 61c6e4295210e1d34b639099340b7cf8bf5516b5 Mon Sep 17 00:00:00 2001 From: kohsuke Date: Thu, 9 Sep 2010 22:28:21 +0000 Subject: [PATCH] - this is no longer building Matching, hence renamed - a bug fix in the job offer assignment logic git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@34616 71c3de6d-444a-0410-be80-ed276b4c234a --- .../main/java/hudson/model/LoadBalancer.java | 14 ++-- core/src/main/java/hudson/model/Queue.java | 6 +- ...ngWorksheet.java => MappingWorksheet.java} | 69 ++++++++----------- 3 files changed, 37 insertions(+), 52 deletions(-) rename core/src/main/java/hudson/model/queue/{MatchingWorksheet.java => MappingWorksheet.java} (84%) diff --git a/core/src/main/java/hudson/model/LoadBalancer.java b/core/src/main/java/hudson/model/LoadBalancer.java index 001d4ee4ae..658de6469e 100644 --- a/core/src/main/java/hudson/model/LoadBalancer.java +++ b/core/src/main/java/hudson/model/LoadBalancer.java @@ -27,9 +27,9 @@ import hudson.model.Node.Mode; import hudson.model.Queue.ApplicableJobOfferList; import hudson.model.Queue.JobOffer; import hudson.model.Queue.Task; -import hudson.model.queue.MatchingWorksheet; -import hudson.model.queue.MatchingWorksheet.ExecutorChunk; -import hudson.model.queue.MatchingWorksheet.Mapping; +import hudson.model.queue.MappingWorksheet; +import hudson.model.queue.MappingWorksheet.ExecutorChunk; +import hudson.model.queue.MappingWorksheet.Mapping; import hudson.util.ConsistentHash; import hudson.util.ConsistentHash.Hash; @@ -67,7 +67,7 @@ public abstract class LoadBalancer /*implements ExtensionPoint*/ { */ protected abstract JobOffer choose(Task task, ApplicableJobOfferList applicable); - protected abstract Mapping map(Task task, MatchingWorksheet worksheet); + protected abstract Mapping map(Task task, MappingWorksheet worksheet); /** * Traditional implementation of this. @@ -126,7 +126,7 @@ public abstract class LoadBalancer /*implements ExtensionPoint*/ { } @Override - protected Mapping map(Task task, MatchingWorksheet worksheet) { + protected Mapping map(Task task, MappingWorksheet worksheet) { // TODO: return CONSISTENT_HASH.map(task,worksheet); } @@ -160,7 +160,7 @@ public abstract class LoadBalancer /*implements ExtensionPoint*/ { } @Override - protected Mapping map(Task task, MatchingWorksheet ws) { + protected Mapping map(Task task, MappingWorksheet ws) { // build consistent hash for each work chunk List> hashes = new ArrayList>(ws.works.size()); for (int i=0; i executors; public final List works; -// private final BitSet applicability = new BitSet(); - private static class ReadOnlyList extends AbstractList { protected final List base; @@ -94,8 +92,12 @@ public class MatchingWorksheet { private void execute(WorkChunk wc, WorkUnitContext wuc) { assert capacity() > wc.size(); - for (int i=0; i offers) { + public MappingWorksheet(Task task, List offers) { // executors Map> j = new HashMap>(); for (JobOffer o : offers) { @@ -221,7 +235,7 @@ public class MatchingWorksheet { if (ec.node==null) continue; // evict out of sync node executors.add(ec); } - this.executors = Collections.unmodifiableList(executors); + this.executors = ImmutableList.copyOf(executors); // group execution units into chunks. use of LinkedHashMap ensures that the main work comes at the top Map> m = new LinkedHashMap>(); @@ -240,17 +254,7 @@ public class MatchingWorksheet { for (List group : m.values()) { works.add(new WorkChunk(group,works.size())); } - this.works = Collections.unmodifiableList(works); - } - - private void build(SubTask eu, Map> m) { - Object c = eu.getSameNodeConstraint(); - if (c==null) c = new Object(); - - List l = m.get(c); - if (l==null) - m.put(c,l= new ArrayList()); - l.add(eu); + this.works = ImmutableList.copyOf(works); } public WorkChunk works(int index) { @@ -260,23 +264,4 @@ public class MatchingWorksheet { public ExecutorChunk executors(int index) { return executors.get(index); } -// -// public void setIncompatible(int x, int u) { -// assert 0<=x && x<=executors.size(); -// assert 0<=u && u<= works.size(); -// applicability.set(x* works.size()+u); -// } -// -// public boolean isIncompatible(int x, int u) { -// assert 0<=x && x<=executors.size(); -// assert 0<=u && u<= works.size(); -// return applicability.get(x* works.size()+u); -// } -// -// /** -// * Creates a clone. -// */ -// public MatchingWorksheet copy() { -// throw new UnsupportedOperationException(); -// } } -- GitLab