Solved

Developer Studio Build Home Cache

  • 16 August 2021
  • 5 replies
  • 550 views

Userlevel 3
Badge +9

I’ve started a project and ca new omponent recently using Dev Studio 10.82.6231.10191024. Project internals were generated with a _create_project_root.cmd script.
Now the Build Home folder says an index is 11 days old, but some of original component’s entities have changed but I can’t refer to those dynamically. Clear and Refresh does not update components, but gives NRE :
 

java.lang.NullPointerException
    at ifs.dev.nb.project.ui.explorer.BuildHomeNodeIx$OpenBuildHomeFolderAction.enable(BuildHomeNodeIx.java:635)
    at org.openide.util.actions.NodeAction$DelegateAction.resultChanged(NodeAction.java:615)
    at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.openide.util.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:487)
    at com.sun.proxy.$Proxy4.resultChanged(Unknown Source)
[catch] at org.openide.util.lookup.ProxyLookup$1Notify.run(ProxyLookup.java:180)
    at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:189)
    at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:125)
    at org.openide.explorer.DefaultEMLookup.updateLookups(DefaultEMLookup.java:134)
    at org.openide.explorer.DefaultEMLookup.propertyChange(DefaultEMLookup.java:166)
    at org.openide.util.WeakListenerImpl$PropertyChange.propertyChange(WeakListenerImpl.java:215)
    at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
    at org.openide.explorer.ExplorerManager$2.run(ExplorerManager.java:891)
    at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEvent(NbMutexEventProvider.java:118)
    at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:93)
    at org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:89)
    at org.openide.util.Mutex.readAccess(Mutex.java:260)
    at org.openide.explorer.ExplorerManager.fireInAWT(ExplorerManager.java:888)
    at org.openide.explorer.ExplorerManager$1AtomicSetSelectedNodes.fire(ExplorerManager.java:294)
    at org.openide.explorer.ExplorerManager.setSelectedNodes(ExplorerManager.java:305)
    at org.openide.explorer.ExplorerManager$1SetExploredContextAndSelection.run(ExplorerManager.java:399)
    at org.netbeans.modules.openide.util.DefaultMutexImplementation.readAccess(DefaultMutexImplementation.java:193)
    at org.netbeans.modules.openide.util.DefaultMutexImplementation$1R.run(DefaultMutexImplementation.java:1037)
    at org.netbeans.modules.openide.util.DefaultMutexImplementation.doWrapperAccess(DefaultMutexImplementation.java:1054)
    at org.netbeans.modules.openide.util.DefaultMutexImplementation.readAccess(DefaultMutexImplementation.java:183)
    at org.openide.util.Mutex.readAccess(Mutex.java:260)
    at org.openide.explorer.ExplorerManager.setExploredContextAndSelection(ExplorerManager.java:420)
    at org.openide.explorer.view.BeanTreeView.selectionChanged(BeanTreeView.java:149)
    at org.openide.explorer.view.TreeView.callSelectionChanged(TreeView.java:833)
    at org.openide.explorer.view.TreeView$TreePropertyListener.run(TreeView.java:1475)
    at org.netbeans.modules.openide.util.DefaultMutexImplementation$1Exec.run(DefaultMutexImplementation.java:973)
    at org.openide.nodes.Children$ProjectManagerDeadlockDetector.execute(Children.java:1938)
    at org.netbeans.modules.openide.util.DefaultMutexImplementation.postRequest(DefaultMutexImplementation.java:979)
    at org.netbeans.modules.openide.util.DefaultMutexImplementation.postRequest(DefaultMutexImplementation.java:942)
    at org.netbeans.modules.openide.util.DefaultMutexImplementation.postReadRequest(DefaultMutexImplementation.java:308)
    at org.openide.util.Mutex.postReadRequest(Mutex.java:371)
    at org.openide.explorer.view.TreeView$TreePropertyListener.valueChanged(TreeView.java:1444)
    at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:635)
    at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1093)
    at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:294)
    at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeSelectionModel.java:188)
    at javax.swing.JTree.setSelectionPath(JTree.java:1634)
    at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java:2393)
    at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(BasicTreeUI.java:3609)
    at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressedDND(BasicTreeUI.java:3586)
    at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(BasicTreeUI.java:3545)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
    at java.awt.Component.processMouseEvent(Component.java:6530)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
 

 

If I manually remove cache from %AppData%\DeveloperStudio\10.82\var\cache\build_home_cache\<project_path>\ (just what Clear and Refresh does), it respawns on IDE start without a change. Even if I physically move component directories out from \source to which Build Home refers to, somehow that old cache gets back with the same [index 11 days old]. Cache is cached somewhere I can’t find...

 

Is there a way to get around that and rebuild that index?

 

 

icon

Best answer by Tomas Ruderfelt 19 August 2021, 10:49

View original

This topic has been closed for comments

5 replies

Userlevel 3
Badge +9

I got back to the problem and found that a build_home_index.zip cached in %AppData% gets updated from BuildHome path. If I remove index from BuildHome, I get the actual content, but projection won’t find dynamic entities.

So the question is - how can I force BuildHome reindexing externally?
Refreshing from context menu throws null-pointer exception as above.
 

 

Userlevel 3
Badge +9

I tried to report an issue from Developer Studio, but got a message:
JIRA isue was not created because: gbglcrd10

So I’ll just post report here:
 

Steps to Reproduce

First of all, _create_project_root.cmd is called to create a new project folder. IFS Customization project is created for existing folder with Build Home folder provided. Build Home folder gets indexed and build_home_index.zip is created. Now I can browse components in that folder.

Later on, when I update contents of BuildHome, say, one of components gets customized and additional entities are added and I need to reference those in my projection; BuildHome displays same old index [index is ... days old].

Actual Behavior

I press Refresh Cache or Clear and Refresh Cache on BuildHome nothing happens and I get an error in Notifications tab which is a NullPointerException.

Expected Behavior

I would expect to build_home_index.zip recreated and display the actual contents, just like when I remove  build_home_index.zip from BuildHome.

Troubleshooting/Testing Steps Attempted

If I remove  build_home_index.zip from BuildHome, I see the actual content with all new entities in listed components, but projection wouldn't generate as there's no index found and entities are missing. When I tried to replace  build_home_index.zip from BuildHome with the one from %AppData%\DeveloperStudio\10.82\var\cache\build_home_cache\, the BuildHome displays the old outdated content and [index is 11 days old] changed to [index is 14 days old].

Workaround

So far, no workaround is found and no way to continue developing my component further.


java.lang.NullPointerException
    at ifs.dev.nb.project.api.BuildHomeFileCacheManager.clearCachedFiles(BuildHomeFileCacheManager.java:527)
    at ifs.dev.nb.project.ui.explorer.BuildHomeNodeIx$ClearLocalCache.performAction(BuildHomeNodeIx.java:698)
    at org.openide.util.actions.NodeAction$DelegateAction$1.run(NodeAction.java:586)
    at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
    at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
    at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
    at org.openide.util.actions.NodeAction$DelegateAction.actionPerformed(NodeAction.java:583)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
 

 

Userlevel 7
Badge +19

You need to manually run create_project_root.cmd again after you have added/changed files to your build home. That is not done by Developer Studio.

Internally at IFS we have setup something called AutoBuilder which is a series of scripts that builds and installs our development environment on demand or scheduled. The last step in AutoBuilder runs the create_project_root.cmd script to make the build_home_index.zip up to date with the new BuildHome content.

Userlevel 3
Badge +9

Thank you very much, @Tomas Ruderfelt ! Your suggestion worked. Despite the Studio is showing [index not found] in red, I can now generate projection code and all the necessary dependencies are picked up.
I’ll then create a script to call that index rebuild from create_project_root.cmd.

Userlevel 4
Badge +9

Hi,

I am new with IFS DEV Studio. I am trying to build my project but I can’t because I continue to receive the message “The application server is empty, there is nothing to deploy!”.  Does anyone can help me? I am using IFS 9.

 

Thanks