protected EnumMap<Metadata, byte[]> mergeMetadata( Collection<TrackedReference<SortedOplogReader>> readers) throws IOException { // merge the metadata into the compacted file EnumMap<Metadata, byte[]> metadata = new EnumMap<Metadata, byte[]>(Metadata.class); for (Metadata meta : Metadata.values()) { byte[] val = null; for (TrackedReference<SortedOplogReader> tr : readers) { byte[] tmp = tr.get().getMetadata(meta); if (val == null) { val = tmp; } else if (tmp != null) { val = factory.getConfiguration().getMetadataCompactor(meta).compact(val, tmp); } } if (val != null) { metadata.put(meta, val); } } return metadata; }