|
Thanks for reporting your issues. The way the database connection settings are done have been made more modular, but it's obviously not reloading the settings correctly each time. That needs to be fixed.
I'm not sure why performance would degrade over time, though I don't use the HSQLDB much and don't know how well it performs. One thing you could try to help diagnose the problem would be to start AgileTrack using the agiletrack.bat file which will run it with a console window. Then, when things appear locked up, do a thread dump by going to the console window and press Ctrl-Break. Just copy and paste the output here. The thread dump should give a clue about what is causing the slowness.
I'm not sure of the exact cause…
It could be:
1) the fact that I created quite alot of projects with sub-projects
2) a GUI problem
3) a resource problem on my machine
4) HSQLDB performance
It happens on any page, when clicking on a combo-box or button.
The app is not *really* frozen, but it takes ages (many minutes)
to complete the task (and overall it's very slow on my machine)
I know that my box is becoming old, but I run other java apps with
no problem (AthlonXP1600+ 768Mo RAM)
I really don't think that it will prove useful, but here's the dump:
"DestroyJavaVM" prio=6 tid=0×00036d40 nid=0xdf0 waiting on condition [0×00000000
..0×0007fae8]
"Thread-5" prio=6 tid=0×0b4b3c68 nid=0×1e4 waiting on condition [0×0bb5f000..0×0
bb5f9e8]
ridge.java:429) at java.lang.Thread.run(Thread.java:595)
"HSQLDB Timer @4310d0" daemon prio=6 tid=0×0b4f8e40 nid=0xe24 in Object.wait() [
0×0bb1f000..0×0bb1fa68]
"TimerQueue" daemon prio=6 tid=0×0b6dc8e8 nid=0xe84 in Object.wait() [0×0bbdf000
..0×0bbdfae8]
"AWT-EventQueue-0" prio=6 tid=0×0b4aeb70 nid=0xe68 runnable [0×0b68d000..0×0b68f
d68]
52) at agiletrack.data.TrackerDataObject.getInstance(TrackerDataObject.java:
42) at agiletrack.data.TrackerDataObject.duplicate(TrackerDataObject.java:21
9) at agiletrack.data.TrackerDataCache.getRecord(TrackerDataCache.java:108) at agiletrack.client.controller.TrackerServerBridge.getInternalRecord(Tr
ackerServerBridge.java:243) at agiletrack.client.controller.TrackerServerBridge.getRecord(TrackerSer
verBridge.java:121) at agiletrack.client.controller.TrackerSession.getRecord(TrackerSession.
java:190) at agiletrack.client.view.widgets.list.RecordTreeList$1.getTreeCellRende
rerComponent(RecordTreeList.java:40) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:154) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at agiletrack.swing.JTreeComboBox$TreeListCellRenderer.getListCellRender
erComponent(JTreeComboBox.java:155) at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java
:1155) at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI
.java:1105) at javax.swing.plaf.basic.BasicListUI$Handler.valueChanged(BasicListUI.j
ava:2226) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSel
ectionModel.java:187) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSel
ectionModel.java:167) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSel
ectionModel.java:214) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSele
ctionModel.java:408) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSele
ctionModel.java:417) at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(Def
aultListSelectionModel.java:510) at javax.swing.DefaultListSelectionModel.clearSelection(DefaultListSelec
tionModel.java:422) at javax.swing.JList.clearSelection(JList.java:1578) at javax.swing.JList.setModel(JList.java:1216) at agiletrack.client.view.widgets.list.RecordTreeList.setRecords(RecordT
reeList.java:91) at agiletrack.client.view.tray.RecordListPanel.updateView(RecordListPane
l.java:123) at agiletrack.client.view.tray.RecordListPanel$3.handleViewEvent(RecordL
istPanel.java:151) at agiletrack.client.view.message.ViewMessenger.dispatchViewEvent(ViewMe
ssenger.java:77) at agiletrack.client.view.message.ViewMessenger.access$000(ViewMessenger
.java:17) at agiletrack.client.view.message.ViewMessenger$1.run(ViewMessenger.java
:65) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at agiletrack.awt.WaitCursorEventQueue.dispatchEvent(WaitCursorEventQueu
e.java:64) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
"AWT-Shutdown" prio=6 tid=0×0b3ccb78 nid=0xdf8 in Object.wait() [0×0b5cf000..0×0
b5cf9e8]
"Java2D Disposer" daemon prio=10 tid=0×0b483a08 nid=0×4c0 in Object.wait() [0×0b
64f000..0×0b64fa68]
"AWT-Windows" daemon prio=6 tid=0×0b486d20 nid=0xe64 runnable [0×0b60f000..0×0b6
0fae8]
"Thread-0" daemon prio=6 tid=0×0b3abf08 nid=0xe50 in Object.wait() [0×0b53f000..
0×0b53fbe8]
sorTimer) at java.lang.Object.wait(Object.java:474) at agiletrack.awt.WaitCursorEventQueue$WaitCursorTimer.run(WaitCursorEve
ntQueue.java:109) – locked <0×03666ce8> (a agiletrack.awt.WaitCursorEventQueue$WaitCursorT
imer)
"Low Memory Detector" daemon prio=6 tid=0×01105128 nid=0xbbc runnable [0×0000000
0..0×00000000]
"CompilerThread0" daemon prio=10 tid=0×01103d98 nid=0xe48 waiting on condition [
0×00000000..0×0b27f6c8]
"Signal Dispatcher" daemon prio=10 tid=0×01103178 nid=0xe44 waiting on condition
[0×00000000..0×00000000]"Finalizer" daemon prio=8 tid=0×010f9f60 nid=0xe40 in Object.wait() [0×0b1ff000.
.0×0b1ffa68]
"Reference Handler" daemon prio=10 tid=0×010f8af8 nid=0xd3c in Object.wait() [0x
0b1bf000..0×0b1bfae8]
"VM Thread" prio=10 tid=0×010f6048 nid=0xe38 runnable
"VM Periodic Task Thread" prio=10 tid=0×011030d0 nid=0xe4c waiting on condition
Ah, and this happened on the 'issues' page while clicking on the first combobox bottom left. Forget the remark about the time it takes: this one happened just after a few actions (I created 3 more projects then displayed the issues tab)
Cheers,
AlexP.
The thread dump was useful. There was definitely a GUI problem going on that would at least contribute to the slowness. I'm going to put out a new build of the agiletrack.jar that fixes a few of the problems that have been mentioned. Go to http://agiletrack.net/download.html to download the update.