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.
[ JDK VERSION : 1.4.2_xx ] After using the Grab structure command with in a connection opened using the latest Oracle 9i driver for a table with less than 20 columns, the IDE hangs for several minutes (more than 10, can't tell exactly), after what it displays a warning saying it couldn't obtain the structure from the table. After that, using _any_ feature in Databases hangs indefinitely.
Here is the thread dump: C:\Program Files\netbeans-5.0beta\bin>Full thread dump Java HotSpot(TM) Client V M (1.4.2-b28 mixed mode): "Default RequestProcessor" daemon prio=2 tid=0x038ac038 nid=0xa6c waiting for mo nitor entry [352f000..352fd94] at org.netbeans.modules.db.explorer.DatabaseNodeChildren$2.run(DatabaseN odeChildren.java:86) - waiting to lock <0x12146e70> (a java.lang.Object) at org.openide.util.Task.run(Task.java:207) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:469) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :870) "Default RequestProcessor" C:\Program Files\netbeans-5.0beta\bin>daemon prio=2 tid=0x038a46d8 nid=0xee4 run nable [326f000..326fd94] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at oracle.net.ns.Packet.receive(Unknown Source) at oracle.net.ns.DataPacket.receive(Unknown Source) at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source) at oracle.net.ns.NetInputStream.read(Unknown Source) at oracle.net.ns.NetInputStream.read(Unknown Source) at oracle.net.ns.NetInputStream.read(Unknown Source) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:970) at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:940) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:431) at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:111) at oracle.jdbc.driver.T4CStatement.execute_for_rows(T4CStatement.java:47 3) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme nt.java:1027) at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java :1450) - locked <0x12cadd20> (a oracle.jdbc.driver.T4CStatement) - locked <0x1227d5c8> (a oracle.jdbc.driver.T4CConnection) at oracle.jdbc.OracleDatabaseMetaData.getIndexInfo(OracleDatabaseMetaDat a.java:3270) - locked <0x122a1668> (a oracle.jdbc.driver.OracleDatabaseMetaData) at org.netbeans.lib.ddl.adaptors.DefaultAdaptor.getIndexInfo(DefaultAdap tor.java:3700) at org.netbeans.lib.ddl.impl.DriverSpecification.getIndexInfo(DriverSpec ification.java:135) at org.netbeans.modules.db.explorer.infos.TableNodeInfo.initChildren(Tab leNodeInfo.java:64) at org.netbeans.modules.db.explorer.infos.TableNodeInfo.initChildren(Tab leNodeInfo.java:37) at org.netbeans.modules.db.explorer.infos.DatabaseNodeInfo.getChildren(D atabaseNodeInfo.java:634) at org.netbeans.modules.db.explorer.DatabaseNodeChildren$2.run(DatabaseN odeChildren.java:86) - locked <0x12146e70> (a java.lang.Object) at org.openide.util.Task.run(Task.java:207) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:469) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :870) "Text-Layout" prio=2 tid=0x04437058 nid=0xaa8 in Object.wait() [54ff000..54ffd94 ] at java.lang.Object.wait(Native Method) - waiting on <0x112dbb70> (a org.netbeans.editor.view.spi.ViewLayoutQueu e) at java.lang.Object.wait(Object.java:429) at org.netbeans.editor.view.spi.ViewLayoutQueue.waitForTask(ViewLayoutQu eue.java:128) - locked <0x112dbb70> (a org.netbeans.editor.view.spi.ViewLayoutQueue) at org.netbeans.editor.view.spi.ViewLayoutQueue$LayoutThread.run(ViewLay outQueue.java:182) "MDR event dispatcher" daemon prio=2 tid=0x042fd318 nid=0x89c in Object.wait() [ 396f000..396fd94] at java.lang.Object.wait(Native Method) - waiting on <0x1104de70> (a java.util.LinkedList) at java.lang.Object.wait(Object.java:429) at org.netbeans.mdr.util.EventNotifier$EventsDelivery.run(EventNotifier. java:257) - locked <0x1104de70> (a java.util.LinkedList) at java.lang.Thread.run(Thread.java:534) "DestroyJavaVM" prio=5 tid=0x000366c8 nid=0x84c waiting on condition [0..7fae0] "Collaboration Notification" daemon prio=5 tid=0x039af200 nid=0x98 in Object.wai t() [52af000..52afd94] at java.lang.Object.wait(Native Method) - waiting on <0x10ef9e70> (a java.lang.Object) at java.lang.Object.wait(Object.java:429) at org.netbeans.modules.collab.ui.NotificationThread.run(NotificationThr ead.java:96) - locked <0x10ef9e70> (a java.lang.Object) "AWT-EventQueue-1" prio=5 tid=0x0379c9d0 nid=0x934 waiting for monitor entry [52 6f000..526fd94] at oracle.jdbc.driver.PhysicalConnection.isClosed(PhysicalConnection.jav a:1222) - waiting to lock <0x1227d5c8> (a oracle.jdbc.driver.T4CConnection) at org.netbeans.modules.db.explorer.DatabaseConnection.getJDBCConnection (DatabaseConnection.java:744) at org.netbeans.api.db.explorer.DatabaseConnection.getJDBCConnection(Dat abaseConnection.java:185) at org.netbeans.modules.db.sql.loader.SQLEditorSupport.executeSQL(SQLEdi torSupport.java:209) - locked <0x12cf9a80> (a org.openide.util.RequestProcessor) at org.netbeans.modules.db.sql.editor.ui.actions.RunSQLAction.performAct ion(RunSQLAction.java:82) at org.openide.util.actions.NodeAction$3.run(NodeAction.java:531) at org.netbeans.modules.openide.util.ActionsBridge.doPerformAction(Actio nsBridge.java:47) at org.openide.util.actions.NodeAction$DelegateAction.actionPerformed(No deAction.java:527) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:17 86) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra ctButton.java:1839) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel .java:420) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258 ) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL istener.java:245) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:2 31) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:2 31) at java.awt.Component.processMouseEvent(Component.java:5100) at org.openide.awt.ToolbarButton.processMouseEvent(ToolbarButton.java:33 ) at java.awt.Component.processEvent(Component.java:4897) at java.awt.Container.processEvent(Container.java:1569) at java.awt.Component.dispatchEventImpl(Component.java:3615) at java.awt.Container.dispatchEventImpl(Container.java:1627) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483 ) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128) at java.awt.Container.dispatchEventImpl(Container.java:1613) at java.awt.Window.dispatchEventImpl(Window.java:1606) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.EventQueue.dispatchEvent(EventQueue.java:456) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh read.java:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) "TimerQueue" daemon prio=5 tid=0x02e6c3e8 nid=0xed4 in Object.wait() [344f000..3 44fd94] at java.lang.Object.wait(Native Method) at javax.swing.TimerQueue.run(TimerQueue.java:231) - locked <0x10ec7e80> (a javax.swing.TimerQueue) at java.lang.Thread.run(Thread.java:534) "Java2D Disposer" daemon prio=10 tid=0x00a04838 nid=0xa8 in Object.wait() [33cf0 00..33cfd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x10a30d58> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at sun.java2d.Disposer.run(Disposer.java:100) at java.lang.Thread.run(Thread.java:534) "AWT-Windows" daemon prio=7 tid=0x00a08d30 nid=0xc90 runnable [32ff000..32ffd94] at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(WToolkit.java:262) at java.lang.Thread.run(Thread.java:534) "AWT-Shutdown" prio=5 tid=0x00a08a60 nid=0xe88 in Object.wait() [32bf000..32bfd9 4] at java.lang.Object.wait(Native Method) - waiting on <0x10a12460> (a java.lang.Object) at java.lang.Object.wait(Object.java:429) at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259) - locked <0x10a12460> (a java.lang.Object) at java.lang.Thread.run(Thread.java:534) "Active Reference Queue Daemon" daemon prio=2 tid=0x00a251a0 nid=0x270 in Object .wait() [302f000..302fd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x10a12530> (a java.lang.ref.ReferenceQueue$Lock) at org.openide.util.Utilities$ActiveQueue.run(Utilities.java:2968) at java.lang.Thread.run(Thread.java:534) "Thread-0" daemon prio=5 tid=0x00a491c8 nid=0xf94 in Object.wait() [2fef000..2fe fd94] at java.lang.Object.wait(Native Method) - waiting on <0x109ecfa8> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:429) at java.util.TimerThread.mainLoop(Timer.java:403) - locked <0x109ecfa8> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:382) "CLI Requests Server" daemon prio=5 tid=0x00a113e0 nid=0x238 runnable [2f6f000.. 2f6fd94] at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353) - locked <0x109ed0b0> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at org.netbeans.CLIHandler$Server.run(CLIHandler.java:828) "Signal Dispatcher" daemon prio=10 tid=0x0003eba8 nid=0xbd4 waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x009c0710 nid=0xa08 in Object.wait() [2bef000..2b efd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x109ed258> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x009bf2e0 nid=0xd2c in Object.wait() [2b af000..2bafd94] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:429) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115) - locked <0x109ecf50> (a java.lang.ref.Reference$Lock) "VM Thread" prio=5 tid=0x009fb6d0 nid=0xc8c runnable "VM Periodic Task Thread" prio=10 tid=0x009fd3a0 nid=0xd18 waiting on condition "Suspend Checker Thread" prio=10 tid=0x0003e008 nid=0xbc8 runnable
could this be similar to 65432? the common thing is the network and a foreign server.
The deadlock is caused by the Oracle driver. Driver locks everything it can and then blocks waiting for the server response, making itself unusable for any other activity (even asking if the connection is closed, which is the cause of the deadlock). There's not much I can do about it. Re. the long duration of the Grab Structure action, I think it's caused by DatabaseMetaData.getIndexInfo() call. Could you post a thread dump obtained during the Grab Structure? Thanks.
Thead dump while grabbing: C:\Program Files\netbeans-5.0beta\bin>Full thread dump Java HotSpot(TM) Client V M (1.4.2-b28 mixed mode): "MDR event dispatcher" daemon prio=2 tid=0x034f4428 nid=0xeec in Object.wait() [ 41ff000..41ffd94] at java.lang.Object.wait(Native Method) - waiting on <0x1165dbb0> (a java.util.LinkedList) at java.lang.Object.wait(Object.java:429) at org.netbeans.mdr.util.EventNotifier$EventsDelivery.run(EventNotifier. java:257) C:\Program Files\netbeans-5.0beta\bin> - locked <0x1165dbb0> (a java.util.Linke dList) at java.lang.Thread.run(Thread.java:534) "DestroyJavaVM" prio=5 tid=0x000366c8 nid=0xe5c waiting on condition [0..7fae0] "Collaboration Notification" daemon prio=5 tid=0x036a4630 nid=0xf18 in Object.wa it() [428f000..428fd94] at java.lang.Object.wait(Native Method) - waiting on <0x111efe10> (a java.lang.Object) at java.lang.Object.wait(Object.java:429) at org.netbeans.modules.collab.ui.NotificationThread.run(NotificationThr ead.java:96) - locked <0x111efe10> (a java.lang.Object) "AWT-EventQueue-1" prio=7 tid=0x0360b4a8 nid=0x4d0 runnable [424f000..424fd94] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at oracle.net.ns.Packet.receive(Unknown Source) at oracle.net.ns.DataPacket.receive(Unknown Source) at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source) at oracle.net.ns.NetInputStream.read(Unknown Source) at oracle.net.ns.NetInputStream.read(Unknown Source) at oracle.net.ns.NetInputStream.read(Unknown Source) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:970) at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:940) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:431) at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:111) at oracle.jdbc.driver.T4CStatement.execute_for_rows(T4CStatement.java:47 3) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme nt.java:1027) at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java :1450) - locked <0x100ad260> (a oracle.jdbc.driver.T4CStatement) - locked <0x124aeab0> (a oracle.jdbc.driver.T4CConnection) at oracle.jdbc.OracleDatabaseMetaData.getIndexInfo(OracleDatabaseMetaDat a.java:3270) - locked <0x124b0638> (a oracle.jdbc.driver.OracleDatabaseMetaData) at org.netbeans.lib.ddl.adaptors.DefaultAdaptor.getIndexInfo(DefaultAdap tor.java:3700) at org.netbeans.lib.ddl.impl.DriverSpecification.getIndexInfo(DriverSpec ification.java:135) at org.netbeans.modules.db.explorer.infos.TableNodeInfo.initChildren(Tab leNodeInfo.java:64) at org.netbeans.modules.db.explorer.infos.TableNodeInfo.initChildren(Tab leNodeInfo.java:37) at org.netbeans.modules.db.explorer.infos.DatabaseNodeInfo.getChildren(D atabaseNodeInfo.java:634) at org.netbeans.modules.db.explorer.actions.GrabTableAction.performActio n(GrabTableAction.java:64) at org.openide.util.actions.NodeAction$3.run(NodeAction.java:531) at org.netbeans.modules.openide.util.ActionsBridge.doPerformAction(Actio nsBridge.java:47) at org.openide.util.actions.NodeAction$DelegateAction.actionPerformed(No deAction.java:527) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:17 86) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra ctButton.java:1839) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel .java:420) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258 ) at javax.swing.AbstractButton.doClick(AbstractButton.java:289) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1 113) at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseRelease d(BasicMenuItemUI.java:943) at java.awt.Component.processMouseEvent(Component.java:5100) at java.awt.Component.processEvent(Component.java:4897) at java.awt.Container.processEvent(Container.java:1569) at java.awt.Component.dispatchEventImpl(Component.java:3615) at java.awt.Container.dispatchEventImpl(Container.java:1627) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483 ) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128) at java.awt.Container.dispatchEventImpl(Container.java:1613) at java.awt.Window.dispatchEventImpl(Window.java:1606) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.EventQueue.dispatchEvent(EventQueue.java:456) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh read.java:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) "TimerQueue" daemon prio=5 tid=0x02e6cce8 nid=0xdd8 in Object.wait() [344f000..3 44fd94] at java.lang.Object.wait(Native Method) - waiting on <0x111b0a48> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(TimerQueue.java:231) - locked <0x111b0a48> (a javax.swing.TimerQueue) at java.lang.Thread.run(Thread.java:534) "Java2D Disposer" daemon prio=10 tid=0x00a5fe58 nid=0xa94 in Object.wait() [33cf 000..33cfd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x10b71bf8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at sun.java2d.Disposer.run(Disposer.java:100) at java.lang.Thread.run(Thread.java:534) "AWT-Windows" daemon prio=7 tid=0x00a63648 nid=0xa18 runnable [32ff000..32ffd94] at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(WToolkit.java:262) at java.lang.Thread.run(Thread.java:534) "AWT-Shutdown" prio=5 tid=0x02d08c50 nid=0xbc in Object.wait() [32bf000..32bfd94 ] at java.lang.Object.wait(Native Method) - waiting on <0x10a2f5d8> (a java.lang.Object) at java.lang.Object.wait(Object.java:429) at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259) - locked <0x10a2f5d8> (a java.lang.Object) at java.lang.Thread.run(Thread.java:534) "Default RequestProcessor" daemon prio=2 tid=0x02d28008 nid=0x164 waiting for mo nitor entry [326f000..326fd94] at oracle.jdbc.driver.OracleStatement.describe(OracleStatement.java:3176 ) - waiting to lock <0x124aeab0> (a oracle.jdbc.driver.T4CConnection) at oracle.jdbc.driver.OracleResultSetMetaData.<init>(OracleResultSetMeta Data.java:62) at oracle.jdbc.driver.OracleResultSetImpl.getMetaData(OracleResultSetImp l.java:132) - locked <0x100a6268> (a oracle.jdbc.driver.OracleResultSetImpl) at org.netbeans.lib.ddl.impl.DriverSpecification.getRow(DriverSpecificat ion.java:193) at org.netbeans.modules.db.explorer.infos.TableNodeInfo.initChildren(Tab leNodeInfo.java:70) at org.netbeans.modules.db.explorer.infos.TableNodeInfo.initChildren(Tab leNodeInfo.java:37) at org.netbeans.modules.db.explorer.infos.DatabaseNodeInfo.getChildren(D atabaseNodeInfo.java:634) at org.netbeans.modules.db.explorer.DatabaseNodeChildren$2.run(DatabaseN odeChildren.java:86) - locked <0x1242c120> (a java.lang.Object) at org.openide.util.Task.run(Task.java:207) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:469) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :870) "Active Reference Queue Daemon" daemon prio=2 tid=0x00a23ea0 nid=0xd70 in Object .wait() [302f000..302fd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x10a2f6a8> (a java.lang.ref.ReferenceQueue$Lock) at org.openide.util.Utilities$ActiveQueue.run(Utilities.java:2968) at java.lang.Thread.run(Thread.java:534) "Thread-0" daemon prio=5 tid=0x00a4cf68 nid=0xfbc in Object.wait() [2fef000..2fe fd94] at java.lang.Object.wait(Native Method) - waiting on <0x10a01cd0> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:429) at java.util.TimerThread.mainLoop(Timer.java:403) - locked <0x10a01cd0> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:382) "CLI Requests Server" daemon prio=5 tid=0x00a113e0 nid=0xecc runnable [2f6f000.. 2f6fd94] at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353) - locked <0x10a01e50> (a java.net.PlainSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:448) at java.net.ServerSocket.accept(ServerSocket.java:419) at org.netbeans.CLIHandler$Server.run(CLIHandler.java:828) "Signal Dispatcher" daemon prio=10 tid=0x0003eba8 nid=0xa9c waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x009c0710 nid=0x404 in Object.wait() [2bef000..2b efd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x10a01ff8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x009bf2e0 nid=0xa90 in Object.wait() [2b af000..2bafd94] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:429) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115) - locked <0x10a01c78> (a java.lang.ref.Reference$Lock) "VM Thread" prio=5 tid=0x009fb6d0 nid=0x3d8 runnable "VM Periodic Task Thread" prio=10 tid=0x009fd3a0 nid=0xcc waiting on condition "Suspend Checker Thread" prio=10 tid=0x0003e008 nid=0xfcc runnable
>> ------- Additional comments from abadea Fri Sep 30 09:20:08 +0000 2005 ----- > The deadlock is caused by the Oracle driver. Driver locks everything it can > and then blocks waiting for the server response, making itself unusable for > any other activity (even asking if the connection is closed, which is the > cause of the deadlock). There's not much I can do about it. I think there is. Grab structure should be done in a background thread, probably using RequestProcessor, and should be get "synchronous" again only when it is time to update the UI. The problem is that this feature works well in NB 3.6 using the _same_ driver, since it seems there is no delay in the way it uses to retrieve info about indices. Anyway, if the driver is to blame about _database features_ becoming unavailable, at least the _IDE_ should work, which is not the case.
I was referring to the first thread dump. There is some Database Explorer action is running in the default RP and locking the driver and connection objects, and an Execute SQL action in AWT, blocked as well. Sure, Connection.isClosed() should not be called in AWT either, but even when that is fixed, the Execute SQL action will be blocked by the DB Exp action. Grab structure should of course not run in the AWT thread, I will fix it.
Fixed by running the Grab Structure action in a RequestProcessor with a progress dialog. Checking in nbproject/project.xml; /cvs/db/nbproject/project.xml,v <-- project.xml new revision: 1.12; previous revision: 1.11 done Checking in src/org/netbeans/modules/db/explorer/actions/GrabTableAction.java; /cvs/db/src/org/netbeans/modules/db/explorer/actions/GrabTableAction.java,v <-- GrabTableAction.java new revision: 1.26; previous revision: 1.25 done RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/dlg/GrabTableProgressPanel.form,v done Checking in src/org/netbeans/modules/db/explorer/dlg/GrabTableProgressPanel.form; /cvs/db/src/org/netbeans/modules/db/explorer/dlg/GrabTableProgressPanel.form,v <-- GrabTableProgressPanel.form initial revision: 1.1 done RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/dlg/GrabTableProgressPanel.java,v done Checking in src/org/netbeans/modules/db/explorer/dlg/GrabTableProgressPanel.java; /cvs/db/src/org/netbeans/modules/db/explorer/dlg/GrabTableProgressPanel.java,v <-- GrabTableProgressPanel.java initial revision: 1.1 done Checking in src/org/netbeans/modules/db/resources/Bundle.properties; /cvs/db/src/org/netbeans/modules/db/resources/Bundle.properties,v <-- Bundle.properties new revision: 1.97; previous revision: 1.96 done Checking in ../ide/golden/deps.txt; /cvs/ide/golden/deps.txt,v <-- deps.txt new revision: 1.216; previous revision: 1.215 done
Marking as fixed.
Works on Q-Build 20051013