Browse Source

Fix DeltaTask infinite loop

DeltaTask$Block.partitionTask was doing an infinite loop if number of
threads was greater than the totalWeight. The weightPerThread was 0
which was causing the infinite loop. Set the weightPerThread to a
minimal value of one.

Bug: 420915
Change-Id: Ia8e3ad956d53d8193937b7fa1bc19aafde9767ff
Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
stable-3.5
Hugo Arès 11 years ago
parent
commit
d439c8dfe5
  1. 2
      org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaTask.java

2
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaTask.java

@ -121,7 +121,7 @@ final class DeltaTask implements Callable<Object> {
ArrayList<WeightedPath> topPaths = computeTopPaths(); ArrayList<WeightedPath> topPaths = computeTopPaths();
Iterator<WeightedPath> topPathItr = topPaths.iterator(); Iterator<WeightedPath> topPathItr = topPaths.iterator();
int nextTop = 0; int nextTop = 0;
long weightPerThread = totalWeight / threads; long weightPerThread = Math.max(totalWeight / threads, 1);
for (int i = beginIndex; i < endIndex;) { for (int i = beginIndex; i < endIndex;) {
DeltaTask task = new DeltaTask(this); DeltaTask task = new DeltaTask(this);
long w = 0; long w = 0;

Loading…
Cancel
Save