Andrus,

Here is the info that your requested:

> * Which version of the Modeler are you using?

3.0RC1, Application (Universal),  Java Hotspot 64 bit server VM 1.6.0_17 on Mac 
OS 10.6.2

> * Are you using a platform-specific build provided by Cayenne, or are you 
> running it yourself with java?


It appears to be a universal app compiled for OSX.  (Sorry, I have never 
written a native app for OSX so I couldn't find more info than this.)

> An OutOfMemoryError can be associated with many kinds of conditions.

Yes, I am aware of this.  When I first reported this I started by explaining 
that it could have been associated with a misunderstanding on my part about the 
steps I took to precipitate this (i.e. I could have made bad assumptions about 
the order in which I created these relationships,  This could have easily 
caused an exceptional condition.)

Still, I have created about 15-20 relationships with this same design and have 
never seen this dialog or this error before.

You are the expert, of course, however if I am to help out by reporting a 
problem I believe it would be helpful to first establish what I steps I took to 
precipitate the problem and the determine if it simply a user-procedural error. 
 In addition, I could have made a mistake, but what the CM has asked to do does 
not seem logical, so again it I think the initial user-procedure is a good 
place to start.  (I can increase memory all day long but if I am doing 
something out of order then it won't help the analysis.)

I will be happy to help with this, but I don't want to waste your time with a 
bug report if I simply did something out of order.

Joe



On Feb 2, 2010, at 9:28 AM, Andrus Adamchik wrote:

> 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)
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 
>> 
> 

Reply via email to