Bug 214223 [Markers] 'Marker id not found' exceptions from GroupMarkerField#compare(..) in log
I20071218-0800 Log fills up with these during an incremental auto-build. IIRC, the Problems has not been made visible since the last restart. Warning Thu Jan 03 14:22:58 CET 2008 Marker id 4826685 not found. org.eclipse.core.internal.resources.ResourceException: Marker id 4826685 not found. at org.eclipse.core.internal.resources.Marker.checkInfo(Marker.java:56) at org.eclipse.core.internal.resources.Marker.getType(Marker.java:194) at org.eclipse.ui.views.markers.internal.MarkerGroup$GroupMarkerField.compare(MarkerGroup.java:306) at org.eclipse.ui.internal.provisional.views.markers.MarkerComparator.compare(MarkerComparator.java:88) at java.util.Arrays.mergeSort(Arrays.java:1293) at java.util.Arrays.mergeSort(Arrays.java:1282) at java.util.Arrays.mergeSort(Arrays.java:1282) at java.util.Arrays.mergeSort(Arrays.java:1282) at java.util.Arrays.mergeSort(Arrays.java:1282) at java.util.Arrays.mergeSort(Arrays.java:1282) at java.util.Arrays.mergeSort(Arrays.java:1282) at java.util.Arrays.mergeSort(Arrays.java:1282) at java.util.Arrays.sort(Arrays.java:1210) at org.eclipse.ui.internal.provisional.views.markers.CachedMarkerBuilder.sortAndMakeCategories(CachedMarkerBuilder.java:951) at org.eclipse.ui.internal.provisional.views.markers.CachedMarkerBuilder.buildAllMarkers(CachedMarkerBuilder.java:251) at org.eclipse.ui.internal.provisional.views.markers.CachedMarkerBuilder$1.run(CachedMarkerBuilder.java:368) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/MarkerSupportRegistry.java
*/
	private void removeValues(Object value, HashMap cache) {
		Collection keysToRemove = new ArrayList();
		Iterator keys = cache.keySet().iterator();
		while (keys.hasNext()) {
			String key = (String) keys.next();
			Object next = cache.get(key);
			if (next instanceof Collection) {
				Collection collection = (Collection) next;
				if (collection.contains(value)) {
					collection.remove(value);
					if (collection.isEmpty()) {
						keysToRemove.add(key);
					}
					break;
				}
			} else {
				if (cache.get(key).equals(value)) {
					keysToRemove.add(key);
				}
			}
		}
		Iterator keysToRemoveIterator = keysToRemove.iterator();
		while (keysToRemoveIterator.hasNext()) {
			cache.remove(keysToRemoveIterator.next());
		}
	}
	/**
	 * Get the category associated with marker. Return <code>null</code> if
	 * there are none.