Hi Joe,
(Disclaimer: I also haven't looked at the code involved yet).
An OutOfMemoryError can be associated with many kinds of conditions.
You can have an infinite loop not causing an OutOfMemory. And also
OutOfMemoryError is by itself often causing a UI freeze, as the JVM
tries to free up some memory before the full app crash. So don't jump
to conclusions just yet.
Increasing the available memory to an app does nothing to analyze
the problem.
Have you tried it though? After all there is some minimal amount of
heap space required for the Modeler to run, even when it is bug free
(which I am not claiming it is).
If that doesn't help, could you provide this info please (sorry if I
missed it and it was mentioned already) :
* Which version of the Modeler are you using?
* Are you using a platform-specific build provided by Cayenne, or are
you running it yourself with java?
Andrus
On Feb 2, 2010, at 4:09 PM, Joe Baldwin wrote:
The behavior by an app in which it freezes for about 3-4 minutes and
then generates an out-of-memory-error is typically associated with
an infinite loop. Increasing the available memory to an app does
nothing to analyze the problem.
It is more likely to be associated the the CM attempting to "remove
the foreign key" as the CM dialog suggested. If the CM algorithm
responsible for accomplishing this task is somehow faulty it could
have easily resulted in an out of memory error.
If on the other hand there is no error in the algorithm and this
task requires and extraordinary amount of memory then it still
points to the assumptions associated with the algorithm and its
memory requirements.
Still, it is not clear what the CM-dialog is attempting to
accomplish or rectify (an associated, we-usually-do-it-this-way
would help in these types of cases), so either the CM has mis-
analysed or the user has made a procedural error. Either way the CM
should not go into some functionality that takes 3-4 minutes and
then runs out of memory.
In addition, simply dismissing the CM's dialog window with the
"remove the foreign key?" question results in no out of memory
error. This would not typically happen if the CM were operating
with insufficient memory.
Therefore, the facts tend to point towards some exceptional
condition that should be caught by the CM. If there is something
missing in the user configuration then this might be an opportunity
to have the CM point this out.
On Feb 2, 2010, at 6:26 AM, Bryan Lewis wrote:
Sure, but you can run the modeler with an increased heap size, like
java.exe -Xmx512m -jar CayenneModeler.jar
On Mon, Feb 1, 2010 at 11:25 PM, Joe Baldwin
<jfbald...@earthlink.net>wrote:
The CayenneModeler crashed not my app.
On Feb 1, 2010, at 11:07 PM, Kevin Menard wrote:
Hi Joe,
It looks like you would have needed to increased the -Xmx JVM
property.
Did
you actually corrupt any data in the process? If not, I'd suggest
re-running with an increased heap value. Otherwise, please file
a JIRA
issue describing the problem.
--
Kevin
On Sun, Jan 31, 2010 at 6:11 PM, Joe Baldwin <jfbald...@earthlink.net
wrote:
Tried to save a project with a new Entity (which had a many to one
relationship). When I selected "Save" the following panel was
displayed:
Remove Foreign Keys mapped as object attributes?
Not sure what this would accomplish, I selected "Yes", which
appears to
be
the wrong answer because Cayenne Modeler crashed big time. (see
auto
report
below)
Joe
CayenneModeler Info
Version: cayenne.version
Build Date: cayenne.build.date
Exception:
=================================
java.lang.OutOfMemoryError: Java heap space
at
java.util.Collections
$UnmodifiableCollection.iterator(Collections.java:1006)
at
org
.apache
.cayenne.map.ObjEntity.getAttributeForDbAttribute(ObjEntity.java:
845)
at
org.apache.cayenne.modeler.undo.DbEntitySyncUndoableEdit
$MeaningfulFKsUndoableEdit.<init>(DbEntitySyncUndoableEdit.java:96)
at
org
.apache
.cayenne
.modeler
.action.DbEntitySyncAction.synchDbEntity(DbEntitySyncAction.java:95)
at
org
.apache
.cayenne
.modeler
.action.DbEntitySyncAction.performAction(DbEntitySyncAction.java:60)
at
org
.apache
.cayenne
.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:163)
at
javax
.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
2028)
at
javax.swing.AbstractButton
$Handler.actionPerformed(AbstractButton.java:2351)
at
javax
.swing
.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at
javax
.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at
javax
.swing
.plaf
.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:
236)
at
java
.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:
272)
at java.awt.Component.processMouseEvent(Component.java:6348)
at javax.swing.JComponent.processMouseEvent(JComponent.java:
3255)
at java.awt.Component.processEvent(Component.java:6113)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:
4618)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:
4282)
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at
java
.awt
.EventDispatchThread
.pumpOneEventForFilters(EventDispatchThread.java:296)
at
java
.awt
.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
211)
at
java
.awt
.EventDispatchThread
.pumpEventsForHierarchy(EventDispatchThread.java:201)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
196)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:
122)