charmplusplus/projections

Remove support for long-broken Topology Display tool

matthiasdiener opened this issue · 8 comments

Original issue: https://charm.cs.illinois.edu/redmine/issues/1886


When trying to open Tools->Topology Display, the following message appears on the terminal:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no J3D in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
	at java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.lang.System.loadLibrary(System.java:1122)
	at javax.media.j3d.MasterControl$22.run(MasterControl.java:889)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:886)
	at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:229)
	at javax.media.j3d.Canvas3D.<clinit>(Canvas3D.java:3533)
	at projections.Tools.TopologyDisplay.TopologyDisplayWindow.<init>(TopologyDisplayWindow.java:199)
	at projections.gui.MainMenuManager.actionPerformed(MainMenuManager.java:448)
	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:842)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
	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:2237)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2295)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
	at java.awt.Container.dispatchEventImpl(Container.java:2281)
	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 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)

Tested with JDK8/10 on Linux and Mac.

Original date: 2018-04-26 15:20:13


Patch to remove it: https://charm.cs.illinois.edu/gerrit/#/c/projections/+/4065/

Original date: 2018-04-27 15:54:52


Follow-up to remove .topo file generation still needs to be done, as noted in the gerrit patch.

Original date: 2018-04-27 17:32:35


Are the .topo files used anywhere outside Projections?

Original date: 2018-05-01 14:14:20


I don't think so. The only other thing that came to mind was BigSim, since it can simulate different network topologies, but that doesn't appear to use ".topo" anywhere.

Original date: 2018-05-02 16:15:47


The .topo files were only used for display and analysis in topology aware studies. AFAIK. When it worked, the feature was enabled if projections was built with java3d support and the application was run on a machine that had a 3D topology that could be extracted.

rbuch commented

Original date: 2018-05-02 17:48:01


I think all of this will still work if things are run as Eric said. Using a different version of the j3d library and getting a reasonably close version of libjava3d, I was able to get a window to appear, but it then crashed, likely because the topo file was malformed (seemingly because it wasn't a 3D topology). I think instead of just taking the whole thing out, we can check to see if the j3d library can be loaded or not at startup and toggle the display of the topology tool based on the results of that.

rbuch commented

Original date: 2018-05-09 17:42:54


Ronak Buch wrote:

I think all of this will still work if things are run as Eric said. Using a different version of the j3d library and getting a reasonably close version of libjava3d, I was able to get a window to appear, but it then crashed, likely because the topo file was malformed (seemingly because it wasn't a 3D topology). I think instead of just taking the whole thing out, we can check to see if the j3d library can be loaded or not at startup and toggle the display of the topology tool based on the results of that.

As a matter of record, rather than doing this, it seems that this tool was of limited utility for modern/future use, so it was completely removed rather than merely disabling it if the environment isn't correct.

Original date: 2018-05-14 18:04:44


Followup patch to remove .topo file creation: https://charm.cs.illinois.edu/gerrit/#/c/charm/+/4171/ charmplusplus/charm@a8b455c