diff --git a/core/src/main/java/hudson/tasks/Fingerprinter.java b/core/src/main/java/hudson/tasks/Fingerprinter.java index 752d10d3f096e3041fe4ef51a994a47b1cb31b3c..fd81e69999094868498319a8c69fff76b602591c 100644 --- a/core/src/main/java/hudson/tasks/Fingerprinter.java +++ b/core/src/main/java/hudson/tasks/Fingerprinter.java @@ -70,6 +70,7 @@ import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.Map.Entry; +import java.util.Random; import java.util.Set; import java.util.TreeMap; import java.util.logging.Level; @@ -295,6 +296,8 @@ public class Fingerprinter extends Recorder implements Serializable, DependecyDe private final AbstractBuild build; + private static final Random rand = new Random(); + /** * From file name to the digest. */ @@ -341,9 +344,9 @@ public class Fingerprinter extends Recorder implements Serializable, DependecyDe public void onLoad() { // share data structure with nearby builds, but to keep lazy loading efficient, - // don't go back the history forever. By %4!=0, 4 neighboring builds will share + // don't go back the history forever. By RAND!=0, 4 neighboring builds will share // the data structure, so we'll get good enough saving. - if (build.getNumber()%4!=0) { + if (rand.nextInt(4)!=0) { Run pb = build.getPreviousBuild(); if (pb!=null) { FingerprintAction a = pb.getAction(FingerprintAction.class);