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