This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
In current data systems a thread can access unfinished files copied/moved/createFromTemplated by another Thread. This is simulated and fixed in added attachement. In addition to using runAtomicAction to prevent event notifications the fix also prevents any other thread from using DataObject.find and thus accessing unfinished resources. This is dangerous if somebody is performing a long running operation in the handleCopy, handleMove, handleRename, handleCreateFromShadow methods (probably DataFolder does), but still it looks that it might be better to apply it (after resolving the DataFolder problem). Some evaluation please: Does it fix issue 33577? Does it fix other problems? Thanks.
Created attachment 10337 [details] The changes with a test case
Thanks Jarda. I can't reproduce problem from #33577 anymore with the patch but attempt to copy two folders (colorpicker and imageviewer) is not finished and IDE is not functional after this. Adding Andrew to CC so he can respond whether the approach is OK for S1S. Namely bug #33244 can be fixed by this in a better way if we resolve all problems.
Assigning to Yarda.
Created attachment 10346 [details] Again and better - copy/move on folders works
This sounds good. Thanks for working this issue.
Right now it is not possible to call DataFolder.getChildren from inside the DataObject.handle* methods. This affects for example PropertiesDataObject.handleMove. This will have to be fixed.
Created attachment 10383 [details] Once again and perfectly?
Integrated. David any deadlocks during copy/move/etc. operations assign to me. Checking in loaders/manifest.mf; /cvs/openide/loaders/manifest.mf,v <-- manifest.mf new revision: 1.5; previous revision: 1.4 done Processing log script arguments... Mailing the commit message to cvs@openide.netbeans.org (from jtulach@netbeans.org) Checking in loaders/api/apichanges.xml; /cvs/openide/loaders/api/apichanges.xml,v <-- apichanges.xml new revision: 1.2; previous revision: 1.1 done Processing log script arguments... Mailing the commit message to cvs@openide.netbeans.org (from jtulach@netbeans.org) Checking in loaders/src/org/openide/loaders/DataObject.java; /cvs/openide/loaders/src/org/openide/loaders/DataObject.java,v <-- DataObject.java new revision: 1.4; previous revision: 1.3 done Checking in loaders/src/org/openide/loaders/DataObjectPool.java; /cvs/openide/loaders/src/org/openide/loaders/DataObjectPool.java,v <-- DataObjectPool.java new revision: 1.4; previous revision: 1.3 done Checking in loaders/src/org/openide/loaders/DataShadow.java; /cvs/openide/loaders/src/org/openide/loaders/DataShadow.java,v <-- DataShadow.java new revision: 1.3; previous revision: 1.2 done Checking in loaders/src/org/openide/loaders/DataTransferSupport.java; /cvs/openide/loaders/src/org/openide/loaders/DataTransferSupport.java,v <-- DataTransferSupport.java new revision: 1.3; previous revision: 1.2 done Checking in loaders/src/org/openide/loaders/FolderList.java; /cvs/openide/loaders/src/org/openide/loaders/FolderList.java,v <-- FolderList.java new revision: 1.3; previous revision: 1.2 done Checking in loaders/src/org/openide/loaders/InstanceDataObject.java; /cvs/openide/loaders/src/org/openide/loaders/InstanceDataObject.java,v <-- InstanceDataObject.java new revision: 1.4; previous revision: 1.3 done Processing log script arguments... Mailing the commit message to cvs@openide.netbeans.org (from jtulach@netbeans.org) RCS file: /cvs/openide/test/unit/src/org/openide/loaders/SeparationOfThreadsTest.java,v done Checking in test/unit/src/org/openide/loaders/SeparationOfThreadsTest.java; /cvs/openide/test/unit/src/org/openide/loaders/SeparationOfThreadsTest.java,v <-- SeparationOfThreadsTest.java initial revision: 1.1 done