History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: DBN-17
Type: Bug Bug
Status: Open Open
Priority: Normal Normal
Assignee: Dan Cioca
Reporter: Benjamin Bostow
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Database Navigator

Hangs IntelliJ if cancel is clicked in Data Editor

Created: 08 Apr 08 05:13   Updated: 17 Apr 08 00:00
Component/s: Dataset Editor
Affects Version/s: None
Fix Version/s: None

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown
Environment: Windows XP, IntelliJ IDEA 7.0.3 Build #7757, Database Navigator (for Oracle) version 1.0.258


 Description  « Hide
If I navigate to the table I want to view and double click, the Data editor opens. If I hit "Cancel" IntelliJ freezes up and I have to kill it via task manager. This result is repeatable whenever I try theses actions. I have attached the output from IntelliJ for the issue bellow:

Already disposed
java.lang.AssertionError: Already disposed
at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponent(ComponentManagerImpl.java:160)
at com.intellij.dbnavigator.browser.DatabaseBrowserManager.getInstance(DatabaseBrowserManager.java:113)
at com.intellij.dbnavigator.browser.DatabaseBrowserManager$1.run(DatabaseBrowserManager.java:200)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:19)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:131)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:132)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:136)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

java.lang.AssertionError: Already disposed
at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponent(ComponentManagerImpl.java:160)
at com.intellij.dbnavigator.browser.DatabaseBrowserManager.getInstance(DatabaseBrowserManager.java:113)
at com.intellij.dbnavigator.browser.ui.DatabaseBrowserTree$1.run(DatabaseBrowserTree.java:68)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:19)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:131)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:132)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:136)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)



 All   Comments   Work Log   Change History      Sort Order:
Dan Cioca - 08 Apr 08 13:21
Hello Benjamin,
Thanks for the issue report.
I tried to reproduce the problem but was not able to.
Can it be that the table you are trying to edit is locked by another application? Or by a hanging instance of IJ with DBN?
Unfortunately there is no failover for such cases. Tables which are locked for editing will cause intellij to hang. Probably I should introduce a timeout for such cases. Actually i could.

About the exception, i will investigate under what circumstances it can happen.

Please give me short feedback on the locking question.
Thanks for your support,
Dan


Benjamin Bostow - 09 Apr 08 22:14
I ran some tests on the issue and it appears to be user error. The table I was accessing was a million plus records. When I hit cancel on the filter dialog box, when first going to the table, I was expecting that it would cancel the connection attempt. I decided to let it run, and determined that hitting cancel just canceled the filter and not the request of of the records. Trying to access as many records as was there without a filter took quite a bit of time.

What might be beneficial is if when it's getting the records from the database to have a pop up with a process meter with the option to allow running in the background or cancel the action (Much like IntelliJ does when you search the project or update files). This would allow someone to continue working if a large query was happening, or even let them know the process didn't terminate prematurely and everything is functioning as normal. Without it it gives the appearance that something locked up the IDE because nothing is functional, and you just see the last screen with the button clicked highlighted.

Once I figured out I just have to give it 5 minutes or so to complete, it worked great.

One quirk that I had was it would be nice to have the option of having a commit button to commit your changes instead of making the change upon hitting enter. Coming from using tools like Toad and SQL Developer the commit and rollback are the standard functionality. At the same time it's nice making the change on the fly, but would be nice to have that extra level of check for production databases.

I never did get a java error in IntelliJ for this plugin during further use, though I did double my memory options for the VM.

Over all great plugin and very usefull.


Dan Cioca - 17 Apr 08 00:00
I agree there are several things that need improvement regarding the database loading operations. Many of them are done in the background, but there are cases where I need to popup a modal loading progress bar. E.g. when code completion is invoked, the user needs to know that data is loaded from the database and that the code completion dropdown will appear afterwards. Ideally this operation should be cancellable or at least background-able. But I'm still working on a solution.

Agree also that usability of data editor still needs improvement. And the idea of having the changes commited right after editing is not bad at all.

About the memory usage there is nothing really I can do. The tool is loading an immense amount of information from the database if you look at the object browser. I profiled the application several times and reduced it to as slim as possible. There are still some memory leaks which I need to work on, but I fear that the memory usage issue will not improve dramatically in the future.