Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 347220 - errors when renaming project
Summary: errors when renaming project
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Resources (show other bugs)
Version: 3.7   Edit
Hardware: PC Windows XP
: P3 major (vote)
Target Milestone: 3.8 M4   Edit
Assignee: Szymon Brandys CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-25 16:39 EDT by Alain Lee CLA
Modified: 2011-11-19 13:36 EST (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alain Lee CLA 2011-05-25 16:39:36 EDT
1. Create a C project. Name it my_test_A.
2. Add the following main.c file to the project:
void main()
{

}
3. Build my_test_A.
4. Create a C project. Name it my_test_B.
5. Add the following main.c file to the project:
void main()
{

}
6. Build my_test_B.
7. Delete my_test_B and select the option "Delete project contents on disk".
8. Rename project my_test_A to my_test_B.
9. The following errors are seen in the error log:

org.eclipse.core.runtime.CoreException: File already exists on disk: C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_B.
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55)
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:50)
	at org.eclipse.core.internal.filesystem.local.LocalFile.move(LocalFile.java:319)
	at org.eclipse.core.internal.resources.ResourceTree.movedProjectSubtree(ResourceTree.java:659)
	at org.eclipse.core.internal.resources.ResourceTree.standardMoveProject(ResourceTree.java:1085)
	at org.eclipse.core.internal.resources.Resource.unprotectedMove(Resource.java:1976)
	at org.eclipse.core.internal.resources.Resource.move(Resource.java:1591)
	at org.eclipse.ltk.core.refactoring.resource.RenameResourceChange.perform(RenameResourceChange.java:123)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation$1.run(PerformChangeOperation.java:258)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2310)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.executeChange(PerformChangeOperation.java:306)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation.executeChange(UIPerformChangeOperation.java:92)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:218)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2310)
	at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)


org.eclipse.core.internal.resources.ResourceException: Problems encountered while moving resources.
	at org.eclipse.core.internal.resources.Resource.move(Resource.java:1603)
	at org.eclipse.ltk.core.refactoring.resource.RenameResourceChange.perform(RenameResourceChange.java:123)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation$1.run(PerformChangeOperation.java:258)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2310)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.executeChange(PerformChangeOperation.java:306)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation.executeChange(UIPerformChangeOperation.java:92)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:218)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2310)
	at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Contains: Error moving metadata area from C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_A to C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_B.
org.eclipse.core.runtime.CoreException: File already exists on disk: C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_B.
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55)
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:50)
	at org.eclipse.core.internal.filesystem.local.LocalFile.move(LocalFile.java:319)
	at org.eclipse.core.internal.resources.ResourceTree.movedProjectSubtree(ResourceTree.java:659)
	at org.eclipse.core.internal.resources.ResourceTree.standardMoveProject(ResourceTree.java:1085)
	at org.eclipse.core.internal.resources.Resource.unprotectedMove(Resource.java:1976)
	at org.eclipse.core.internal.resources.Resource.move(Resource.java:1591)
	at org.eclipse.ltk.core.refactoring.resource.RenameResourceChange.perform(RenameResourceChange.java:123)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation$1.run(PerformChangeOperation.java:258)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2310)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.executeChange(PerformChangeOperation.java:306)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation.executeChange(UIPerformChangeOperation.java:92)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:218)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2310)
	at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Comment 1 James Blackburn CLA 2011-05-26 04:25:47 EDT
This is likely a core.resources issue:

Contains: Error moving metadata area from
C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_A
to
C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_B.
org.eclipse.core.runtime.CoreException: File already exists on disk:
C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_B.

Could you confirm which version of the platform you're running?
Comment 2 Alain Lee CLA 2011-05-26 10:13:21 EDT
We are running with Indigo M7.
Comment 3 Szymon Brandys CLA 2011-08-16 05:39:26 EDT
(In reply to comment #1)
> This is likely a core.resources issue:
> 
> Contains: Error moving metadata area from
> C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_A
> to
> C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_B.
> org.eclipse.core.runtime.CoreException: File already exists on disk:
> C:\Work\CCS_5.1_Eclipse_Indiigo_M7\workspace_run\.metadata\.plugins\org.eclipse.core.resources\.projects\my_test_B.
> 
> Could you confirm which version of the platform you're running?

James were you able to reproduce he problem?
Comment 4 James Blackburn CLA 2011-11-17 16:40:06 EST
(In reply to comment #3)
> James were you able to reproduce he problem?

I think I've seen this exception before, but not sure how to reproduce.  AFAICS .projects/... is automatically cleaned up when the project is deleted.
Comment 5 Szymon Brandys CLA 2011-11-18 13:08:08 EST
I managed to reproduce it using vanilla Eclipse.
1) Create a regular project
2) Add a folder and a file inside
3) Modify the file to create an entry in the history
4) Delete the project
5) Try to rename any other project using the name of the deleted one
The same problem. 

The issue is Project#deleteResource that calls clearHistory at the end. This call may try to store history on disc, see Bucket#load and Bucket#save. At the end all history files will be deleted, but the project folder in .metadata\.plugins\org.eclipse.core.resources\.projects remains. Simple inversion of workspace.getMetaArea().delete(this); and clearHistory(null); helps.