Bug 66497 All projects deletion triggers full workspace reindexing
Build RC1 Tracing transient memory allocation, I observed that when selecting all (binary linked) projects from a self-hosting workspace, lots of memory was allocated due to Java indexing activity. Looking deeper, I observed that the PDE container was being reset as soon as notified from resource deletions (likely to compensate project deletion, and rebinding using the target platform material instead). From our end, these classpath settings are trusted and honoured, thus inducing major model refresh, and index rebuilds. However, the updated projects are all being deleted as well, since I selected them all for deletion. So PDE seems to induce tons of work for no reason. You could check the PRE_DELETE event, so as to figure the list of projects which are pointless to update since going to be discarded anyway.
bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/DeleteResourceAction.java
* Returns the resources to delete based on the selection and their read-only status.
     * 
     * @param resources the selected resources
     * @return the resources to delete
     */
    private IResource[] getResourcesToDelete(IResource[] resources) {
        if (containsOnlyProjects(resources) && !deleteContent) {
            
            return resources;
        }
        ReadOnlyStateChecker checker = new ReadOnlyStateChecker(this.shell,
                IDEWorkbenchMessages.DeleteResourceAction_title1,
                IDEWorkbenchMessages.DeleteResourceAction_readOnlyQuestion);
        checker.setIgnoreLinkedResources(true);
        return checker.checkReadOnlyResources(resources);
    }
    /**
     * The <code>DeleteResourceAction</code> implementation of this
     * <code>SelectionListenerAction</code> method disables the action
     * if the selection contains phantom resources or non-resources
     */
    protected boolean updateSelection(IStructuredSelection selection) {
        return super.updateSelection(selection)
                && canDelete(getSelectedResourcesArray());
    }
    /**
     * Ask the user whether the given resource should be deleted
     * despite being out of sync with the file system.
     * @param resource the out of sync resource
     * @return One of the IDialogConstants constants indicating which