diff --git a/changelog.html b/changelog.html index 9b55d39fb34b2184839c44c99d8be81d78397ae4..d8754a7fe4e50343de9061b34a88d4ef8f3b44be 100644 --- a/changelog.html +++ b/changelog.html @@ -58,6 +58,9 @@ Upcoming changes
  • Added 'no-store' to the 'Cache-Control' header to avoid accidental information leak through local cache backup (issue 24337) +
  • + Deadlock in OldDataMonitor. + (issue 24358) diff --git a/core/src/main/java/hudson/diagnosis/OldDataMonitor.java b/core/src/main/java/hudson/diagnosis/OldDataMonitor.java index b9e18d1b689d04f7d376293b7c0110c16019c81f..cb6e890e60ae5a266b49c0298831d5ccd029d0fc 100644 --- a/core/src/main/java/hudson/diagnosis/OldDataMonitor.java +++ b/core/src/main/java/hudson/diagnosis/OldDataMonitor.java @@ -84,9 +84,13 @@ public class OldDataMonitor extends AdministrativeMonitor { return !data.isEmpty(); } - public synchronized Map getData() { + public Map getData() { + Map _data; + synchronized (this) { + _data = new HashMap(this.data); + } Map r = new HashMap(); - for (Map.Entry entry : data.entrySet()) { + for (Map.Entry entry : _data.entrySet()) { Saveable s = entry.getKey().get(); if (s != null) { r.put(s, entry.getValue());