MetaOmGraph icon indicating copy to clipboard operation
MetaOmGraph copied to clipboard

Error shown after Sample metadata table is filtered/updated

Open urmi-21 opened this issue 5 years ago • 1 comments

Occasionally this error message is shown after the sample metadata table is updated. It is harmless, after closing error dialog things seem normal.

Describe the dataset used The human dataset from here: http://metnetweb.gdcb.iastate.edu/MetNet_MetaOmGraph.htm

To Reproduce Steps to reproduce the behavior:

  1. Go to sample metadata table
  2. Click on Edit->Filter rows
  3. Perform query
  4. See error

Expected behavior After the search, the metadata table should be updated and display the retained rows.

Desktop (please complete the following information):

  • OS: Windows10
  • Java version: 1.8
  • Total available memory: 8GB
  • CPU and number of cores: Intel i5/4 cores

MOG Error Report

java.lang.ArrayIndexOutOfBoundsException: 4 >= 4 java.base/java.util.Vector.elementAt(Vector.java:463) java.desktop/javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:295) java.desktop/javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:671) java.desktop/javax.swing.plaf.ComponentUI.update(ComponentUI.java:161) java.desktop/javax.swing.JComponent.paintComponent(JComponent.java:797) java.desktop/javax.swing.JComponent.paint(JComponent.java:1074) java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5255) java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643) java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1618) java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1556) java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323) java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5203) java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5013) java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:865) java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848) java.base/java.security.AccessController.doPrivileged(AccessController.java:391) java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848) java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823) java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772) java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884) java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) java.base/java.security.AccessController.doPrivileged(AccessController.java:391) java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740) java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117) java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190) java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235) java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233) java.base/java.security.AccessController.doPrivileged(AccessController.java:312) java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233) java.desktop/java.awt.Dialog.show(Dialog.java:1070) java.desktop/java.awt.Component.show(Component.java:1716) java.desktop/java.awt.Component.setVisible(Component.java:1663) java.desktop/java.awt.Window.setVisible(Window.java:1021) java.desktop/java.awt.Dialog.setVisible(Dialog.java:1005) edu.iastate.metnet.metaomgraph.AnimatedSwingWorker.start(AnimatedSwingWorker.java:166) edu.iastate.metnet.metaomgraph.ui.MetadataTableDisplayPanel.updateTable(MetadataTableDisplayPanel.java:1203) edu.iastate.metnet.metaomgraph.ui.MetadataTableDisplayPanel.updateTable(MetadataTableDisplayPanel.java:1126) edu.iastate.metnet.metaomgraph.ui.MetaOmTablePanel.updateMetadataTable(MetaOmTablePanel.java:3781) edu.iastate.metnet.metaomgraph.ui.MetadataTreeDisplayPanel.updateTree(MetadataTreeDisplayPanel.java:666) edu.iastate.metnet.metaomgraph.ui.MetaOmTablePanel.updateMetadataTree(MetaOmTablePanel.java:3788) edu.iastate.metnet.metaomgraph.ui.MetadataFilter$2.actionPerformed(MetadataFilter.java:170) java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) java.desktop/java.awt.Component.processMouseEvent(Component.java:6636) java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) java.desktop/java.awt.Component.processEvent(Component.java:6401) java.desktop/java.awt.Container.processEvent(Container.java:2263) java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012) java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) java.base/java.security.AccessController.doPrivileged(AccessController.java:391) java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) java.base/java.security.AccessController.doPrivileged(AccessController.java:391) java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

urmi-21 avatar Jul 31 '20 21:07 urmi-21

The problem is with Updating JTable, currently, for every refresh, all the column headers are deleted and readded, Swing repaints/updates the table for every column added. And sometimes when a new column is added, the swing is still updating the table with the old column which results in a race condition between threads of swing. https://stackoverflow.com/questions/5932696/refreshing-jtable-in-swing-gives-exception

sumanthreddy542 avatar Aug 20 '20 22:08 sumanthreddy542