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 148812

Summary: 100% cpu when deleting big part in big xml file
Product: xml Reporter: jtn_terma <jtn_terma>
Component: CodeAssignee: Svata Dedic <sdedic>
Status: RESOLVED DUPLICATE    
Severity: blocker Keywords: PERFORMANCE
Priority: P3    
Version: 6.x   
Hardware: PC   
OS: Windows XP   
Issue Type: DEFECT Exception Reporter:
Bug Depends on: 126968    
Bug Blocks:    

Description jtn_terma 2008-10-01 09:54:37 UTC
100% cpu when deleting big part in big xml file.
When opening an 8 MB xml file it took around 10-20 sec. to open it. After deleting 80% of the file netbeans goes into a 
100% cpu loop for more than 10 minutes (I did not wait longer before I killed the process).

Stack traces of the problematic thread:

ThreadName:	AWT-EventQueue-1
ThreadState:	RUNNABLE
WaitedTime:	-1.0E-6
WaitedCount:	5938
BlockedTime:	-1.0E-6
BlockedCount:	3681
LockName:	null
LockOwnerName:	null
InNative:	false
Suspended:	false

Thread stack trace:
org.netbeans.modules.editor.structure.api.DocumentModel.getChildren(DocumentModel.java:638)
org.netbeans.modules.editor.structure.api.DocumentElement.getChildren(DocumentElement.java:296)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.checkDocumentContent(TreeNodeAdapter.java:500)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.getDocumentContent(TreeNodeAdapter.java:102)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.getText(TreeNodeAdapter.java:182)
org.netbeans.modules.xml.text.navigator.NavigatorTreeCellRenderer.getTreeCellRendererComponent(NavigatorTreeCellRendere
r.java:93)
javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(BasicTreeUI.java:2709)
javax.swing.tree.AbstractLayoutCache.getNodeDimensions(AbstractLayoutCache.java:475)
javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(VariableHeightLayoutCache.java:1342)
javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(VariableHeightLayoutCache.java:1333)
javax.swing.tree.VariableHeightLayoutCache.treeNodesChanged(VariableHeightLayoutCache.java:418)
javax.swing.plaf.basic.BasicTreeUI$Handler.treeNodesChanged(BasicTreeUI.java:3764)
javax.swing.tree.DefaultTreeModel.fireTreeNodesChanged(DefaultTreeModel.java:468)
javax.swing.tree.DefaultTreeModel.nodesChanged(DefaultTreeModel.java:330)
javax.swing.tree.DefaultTreeModel.nodeChanged(DefaultTreeModel.java:261)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.childTextElementChanged(TreeNodeAdapter.java:493)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.elementRemoved(TreeNodeAdapter.java:415)
org.netbeans.modules.editor.structure.api.DocumentElement.fireDocumentElementEvent(DocumentElement.java:365)
org.netbeans.modules.editor.structure.api.DocumentElement.fireDocumentElementEvent(DocumentElement.java:352)
org.netbeans.modules.editor.structure.api.DocumentElement.childRemoved(DocumentElement.java:380)
org.netbeans.modules.editor.structure.api.DocumentModel$DocumentModelModificationTransaction.removeDE(DocumentModel.jav
a:1116)
org.netbeans.modules.editor.structure.api.DocumentModel$DocumentModelModificationTransaction.commit(DocumentModel.java:
960)
org.netbeans.modules.editor.structure.api.DocumentModel$DocumentModelModificationTransaction.access$200(DocumentModel.j
ava:845)
org.netbeans.modules.editor.structure.api.DocumentModel$2.run(DocumentModel.java:519)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
java.awt.EventDispatchThread.run(EventDispatchThread.java:121)


ThreadName:	AWT-EventQueue-1
ThreadState:	RUNNABLE
WaitedTime:	-1.0E-6
WaitedCount:	5938
BlockedTime:	-1.0E-6
BlockedCount:	3681
LockName:	null
LockOwnerName:	null
InNative:	false
Suspended:	false

Thread stack trace:
org.netbeans.editor.DocumentContent.getText(DocumentContent.java:182)
org.netbeans.editor.DocumentContent.getString(DocumentContent.java:169)
javax.swing.text.AbstractDocument.getText(AbstractDocument.java:757)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.checkDocumentContent(TreeNodeAdapter.java:512)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.getDocumentContent(TreeNodeAdapter.java:102)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.getText(TreeNodeAdapter.java:182)
org.netbeans.modules.xml.text.navigator.NavigatorTreeCellRenderer.getTreeCellRendererComponent(NavigatorTreeCellRendere
r.java:93)
javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(BasicTreeUI.java:2709)
javax.swing.tree.AbstractLayoutCache.getNodeDimensions(AbstractLayoutCache.java:475)
javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(VariableHeightLayoutCache.java:1342)
javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(VariableHeightLayoutCache.java:1333)
javax.swing.tree.VariableHeightLayoutCache.treeNodesChanged(VariableHeightLayoutCache.java:418)
javax.swing.plaf.basic.BasicTreeUI$Handler.treeNodesChanged(BasicTreeUI.java:3764)
javax.swing.tree.DefaultTreeModel.fireTreeNodesChanged(DefaultTreeModel.java:468)
javax.swing.tree.DefaultTreeModel.nodesChanged(DefaultTreeModel.java:330)
javax.swing.tree.DefaultTreeModel.nodeChanged(DefaultTreeModel.java:261)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.childTextElementChanged(TreeNodeAdapter.java:493)
org.netbeans.modules.xml.text.navigator.TreeNodeAdapter.elementRemoved(TreeNodeAdapter.java:415)
org.netbeans.modules.editor.structure.api.DocumentElement.fireDocumentElementEvent(DocumentElement.java:365)
org.netbeans.modules.editor.structure.api.DocumentElement.fireDocumentElementEvent(DocumentElement.java:352)
org.netbeans.modules.editor.structure.api.DocumentElement.childRemoved(DocumentElement.java:380)
org.netbeans.modules.editor.structure.api.DocumentModel$DocumentModelModificationTransaction.removeDE(DocumentModel.jav
a:1116)
org.netbeans.modules.editor.structure.api.DocumentModel$DocumentModelModificationTransaction.commit(DocumentModel.java:
960)
org.netbeans.modules.editor.structure.api.DocumentModel$DocumentModelModificationTransaction.access$200(DocumentModel.j
ava:845)
org.netbeans.modules.editor.structure.api.DocumentModel$2.run(DocumentModel.java:519)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Comment 1 Samaresh Panda 2008-10-01 15:14:05 UTC
This is a known issue. Time and again I have said that the DocumentModel is not an efficient one. This can only be fixed
when we rewrite the Navigator. See 126968.

I personally want to do this. I'll have some cycles to do it post 6.5.
Comment 2 Svata Dedic 2013-04-08 09:50:55 UTC

*** This bug has been marked as a duplicate of bug 227432 ***