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.

Bug 65407 - [50cat] IDE freezes on Grab structure
Summary: [50cat] IDE freezes on Grab structure
Status: VERIFIED FIXED
Alias: None
Product: db
Classification: Unclassified
Component: Code (show other bugs)
Version: 5.x
Hardware: PC Windows XP
: P2 blocker (vote)
Assignee: Andrei Badea
URL:
Keywords: PERFORMANCE, UI
Depends on:
Blocks:
 
Reported: 2005-09-29 18:18 UTC by misterm
Modified: 2005-10-14 20:02 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description misterm 2005-09-29 18:18:40 UTC
[ 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.
Comment 1 misterm 2005-09-29 18:20:00 UTC
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
Comment 2 rolf_schumacher 2005-09-29 22:30:09 UTC
could this be similar to 65432?
the common thing is the network and a foreign server.
Comment 3 Andrei Badea 2005-09-30 10:20:08 UTC
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.
Comment 4 misterm 2005-09-30 15:44:57 UTC
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
Comment 5 misterm 2005-09-30 15:51:16 UTC
>> ------- 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.
Comment 6 Andrei Badea 2005-10-05 10:21:18 UTC
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.
Comment 7 Andrei Badea 2005-10-05 16:54:11 UTC
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
Comment 8 Andrei Badea 2005-10-05 16:54:40 UTC
Marking as fixed.
Comment 9 misterm 2005-10-14 20:02:16 UTC
Works on Q-Build 20051013