You can’t modify a collection while iterating it without using an Iterator. Instead, do:
Entry<String, Set<Metadata>> entry;
for (Iterator<Entry<String, Set<Metadata>>> iterator = metadata.entrySet().iterator(); iterator.hasNext();) {
entry = iterator.next();
...
...
if (mdSet.isEmpty()) {
iterator.remove();;
}
...
...
}