Fix ConcurrentModificationException during format conversion (#5045)

Regression from #4793

Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
This commit is contained in:
Holger Friedrich
2025-10-01 08:35:24 +02:00
committed by GitHub
parent a6a9a07691
commit cb5354ecd2
@@ -84,6 +84,7 @@ public class GenericMetadataProvider extends AbstractProvider<Metadata> implemen
try {
lock.writeLock().lock();
toBeNotified = new HashMap<>();
Set<String> modelsToRemove = new HashSet<>();
for (Map.Entry<String, Set<Metadata>> entry : metadata.entrySet()) {
String modelName = entry.getKey();
Set<Metadata> mdSet = entry.getValue();
@@ -91,12 +92,14 @@ public class GenericMetadataProvider extends AbstractProvider<Metadata> implemen
.collect(toSet());
mdSet.removeAll(toBeRemoved);
if (mdSet.isEmpty()) {
metadata.remove(modelName);
modelsToRemove.add(modelName);
}
if (!isIsolatedModel(modelName) && !toBeRemoved.isEmpty()) {
toBeNotified.put(modelName, toBeRemoved);
}
}
// Remove empty model entries after iteration to avoid ConcurrentModificationException
modelsToRemove.forEach(metadata::remove);
} finally {
lock.writeLock().unlock();
}