diff --git a/core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java b/core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java index 33ba98c598..f299d598d0 100644 --- a/core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java +++ b/core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java @@ -585,6 +585,8 @@ public abstract class AbstractLazyLoadRunMap extends AbstractMap i numberOnDisk = a; } + entrySet.clearCache(); + return unwrap(old); } @@ -742,6 +744,8 @@ public abstract class AbstractLazyLoadRunMap extends AbstractMap i BuildReference old = copy.byId.remove(getIdOf(run)); this.index = copy; + entrySet.clearCache(); + return unwrap(old)!=null; } diff --git a/core/src/main/java/jenkins/model/lazy/LazyLoadRunMapEntrySet.java b/core/src/main/java/jenkins/model/lazy/LazyLoadRunMapEntrySet.java index b3910b51ae..48aada93e0 100644 --- a/core/src/main/java/jenkins/model/lazy/LazyLoadRunMapEntrySet.java +++ b/core/src/main/java/jenkins/model/lazy/LazyLoadRunMapEntrySet.java @@ -32,6 +32,10 @@ class LazyLoadRunMapEntrySet extends AbstractSet> { return all; } + synchronized void clearCache() { + all = null; + } + @Override public int size() { return all().size(); diff --git a/core/src/test/java/jenkins/model/lazy/AbstractLazyLoadRunMapTest.java b/core/src/test/java/jenkins/model/lazy/AbstractLazyLoadRunMapTest.java index 55bd0bdfde..6cb55b6e7d 100644 --- a/core/src/test/java/jenkins/model/lazy/AbstractLazyLoadRunMapTest.java +++ b/core/src/test/java/jenkins/model/lazy/AbstractLazyLoadRunMapTest.java @@ -414,6 +414,13 @@ public class AbstractLazyLoadRunMapTest extends Assert { assertEquals(0, b.entrySet().size()); } + @Issue("JENKINS-25655") + @Test public void entrySetChanges() { + assertEquals(3, a.entrySet().size()); + a.put(new Build(7, "D")); + assertEquals(4, a.entrySet().size()); + } + @Issue("JENKINS-18065") @Test public void entrySetContains() {