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.
Trunk build 090312. I have some simple code which allows me to define a project template in a properties file (relative/path/in/project=sfs/path/to/template). I am using FreeMarker for templating. With ergonomics disabled, this works fine. With ergonomics enabled, project creation fails with the exception below. First there is the following warning: WARNING [org.openide.loaders]: Should override getLookup() in class org.netbeans.modules.ide.ergonomics.fod.FodDataObjectFactory$Cookies, e.g.: [MultiDataObject.this.]getCookieSet().getLookup() Then I get the exception below. I must hold ProjectManager.mutex() while creating a project on disk. But if ergonomics is enabled, the code that looks up the file encoding calls the default DataObject.getLookup() which invokes getNodeDelegate().getLookup() - and acquires Children.MUTEX, causing the exception. I must not create the project outside of ProjectManager.mutex(), and I cannot instantiate a template inside ProjectManager.mutex()... == I cannot create a project. Probably either having FodDataObjectFactory's DataObjects properly override getLookup(), or creating some code path to query file encoding would solve the problem. But I wonder how many more problems like this there are. java.lang.IllegalStateException: Should not acquire Children.MUTEX while holding ProjectManager.mutex() at org.openide.nodes.Children$ProjectManagerDeadlockDetector.execute(Children.java:1805) at org.openide.util.Mutex.doWrapperAccess(Mutex.java:1320) at org.openide.util.Mutex.readAccess(Mutex.java:351) at org.openide.loaders.DataObject.getNodeDelegateImpl(DataObject.java:281) at org.openide.loaders.DataObject.getLookup(DataObject.java:1010) at org.netbeans.modules.openide.loaders.DataObjectEncodingQueryImplementation.getEncoding(DataObjectEncodingQueryImplementation.java:111) at org.netbeans.api.queries.FileEncodingQuery.getEncoding(FileEncodingQuery.java:91) at org.netbeans.modules.templates.ScriptingCreateFromTemplateHandler.createFromTemplate(ScriptingCreateFromTemplateHandler.java:80) at org.openide.loaders.MultiDataObject.handleCreateFromTemplate(MultiDataObject.java:711) at org.openide.loaders.DataObject$CreateAction.run(DataObject.java:1285) at org.openide.loaders.DataObjectPool$1WrapAtomicAction.run(DataObjectPool.java:258) at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:120) at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:509) at org.openide.loaders.DataObjectPool.runAtomicAction(DataObjectPool.java:270) at org.openide.loaders.DataObject.invokeAtomicAction(DataObject.java:873) at org.openide.loaders.DataObject.createFromTemplate(DataObject.java:805) at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator$FileEntry.create(JavacardProjectGenerator.java:223) at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator.doCreateProject(JavacardProjectGenerator.java:102) at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator.access$000(JavacardProjectGenerator.java:42) at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator$1$1.run(JavacardProjectGenerator.java:75) at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator$1$1.run(JavacardProjectGenerator.java:72) at org.openide.util.Mutex.writeAccess(Mutex.java:433) at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator$1.run(JavacardProjectGenerator.java:72) at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:120) at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:509) at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator.createProject(JavacardProjectGenerator.java:67) at org.netbeans.modules.javacard.wizard.ProjectWizardIterator.instantiate(ProjectWizardIterator.java:118) at org.openide.loaders.TemplateWizard$InstantiatingIteratorBridge.instantiate(TemplateWizard.java:1016) at org.openide.loaders.TemplateWizard.handleInstantiate(TemplateWizard.java:588) at org.openide.loaders.TemplateWizard.instantiateNewObjects(TemplateWizard.java:409) at org.openide.loaders.TemplateWizardIterImpl.instantiate(TemplateWizardIterImpl.java:253) at org.openide.loaders.TemplateWizardIteratorWrapper.instantiate(TemplateWizardIteratorWrapper.java:165) at org.openide.WizardDescriptor.callInstantiateOpen(WizardDescriptor.java:1513) at org.openide.WizardDescriptor.callInstantiate(WizardDescriptor.java:1470) at org.openide.WizardDescriptor.access$1700(WizardDescriptor.java:121) at org.openide.WizardDescriptor$Listener$2$1.run(WizardDescriptor.java:2041) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:573) [catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1005)
*** Issue 160245 has been marked as a duplicate of this issue. ***
ergonomics#e400dd195d74 Btw. ergonomics build is currently intentionally unstable and it may take while for the change to propagate. In case you rely on it, transplant this change set to your own repository.
> Btw. ergonomics build is currently intentionally unstable By "ergonomics build" you mean http://hg.netbeans.org/main/ ? If so, what repository should I be using?
Integrated into 'main-golden', will be available in build *200903170201* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress) Changeset: http://hg.netbeans.org/main/rev/e400dd195d74 User: Jaroslav Tulach <jtulach@netbeans.org> Log: #160237: Overriding getLookup() in the FoD data object